- 浏览: 202633 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
dracularking:
ActionSupport就是个template
struts2 中 Actionsupport 的作用 -
编程的石头:
问题已经解决,谢谢!不过为何这样就可以了呢?直接用Struts ...
关于struts+extjs上传 弹出下载对话框问题 -
ninnd:
CREATE OR REPLACE TYPE ptest_ty ...
在Oracle中把Array类型作为参数传入存储过程 -
mornjn57:
LZ记录很全
<s:property>1 -
yulongxiang:
...
Hibernate 关联映射总结
4.包配置
包的属性 name |extends | namespace |abstract
struts2的配置文件是从上到下处理的,所以父包应该在子包前面。
抽象包不能有Action的定义。
如果没有为包指定命名空间,包使用默认的命名空间””
当某个包指定命名空间后包下所有的Action处理的URL应该是命名空间+ACTION名。
<package namespage=”/book” extends=”struts-default” name=”get”>
<action name=”getBook” class=”com.strutstest.GetBookAction”>
<result name=”success”>showbook.jsp</result>
</action>
</package>
访问该包里的getBook的Action的路径是(web应用的名称是strutstest)
http://localhost:8080/strutstest/book/getBook.action
如果请求为/book/getBook.action系统查找/book的命名空间对应的getBook的action
如果找不到,系统将会在默认命名空间里面找。如果找不到就出现系统错误。
如果请求为/login.action系统会在根命名空间”/”中查找名为login的action
如果找不到,系统将会在默认命名空间里面找。如果找不到就出现系统错误。
默认命名空间是”” 根命名空间是”/”
命名空间只有一个级别。
5.拦截器配置
拦截器结构
<interceptors>
<interceptor name=”拦截器名” class=”拦截器类名”/>
<interceptor-stack name=”拦截栈名”>
<interceptor-ref name=”外面定义的拦截名”/>
</interceptor-stack>
</interceptors>
Action中使用拦截器配置
<action name=”MyAction” class=”yilin.MyAction”>
<result name=”success”>myresult.jsp</result>
<interceptor-ref name=”上面定义的拦截器名或者拦截栈名”/>
</action>
6.ActionSupport类解剖
public class ActionSupport implements Action,Validateable,ValidationAware,TextProvider,
LocaleProvider,Serializable
Action接口
public interface Action
{
public static final String ERROR=”error”;
public static final String INPUT=”input”;
public static final String LOGIN=”login”;
public static final String NONE=”none”;
public static final String SUCCESS=”success”;
public String execute ()throws Exception;
}
Validateable接口
public abstract interface Validateable
{
public abstract void validate();
}
ValidationAware 接口
public abstract interface com.opensymphony.xwork2.ValidationAware
{
//收集校验错误的方法
public abstract void setActionErrors(java.util.Collection arg0);
//返回校验错误的方法
public abstract java.util.Collection getActionErrors();
//普通ACTION信息的集合
public abstract void setActionMessages(java.util.Collection arg0);
public abstract java.util.Collection getActionMessages();
//字段错误信息的集合
public abstract void setFieldErrors(java.util.Map arg0);
public abstract java.util.Map getFieldErrors();
//添加错误信息
public abstract void addActionError(java.lang.String arg0);
public abstract void addActionMessage(java.lang.String arg0);
public abstract void addFieldError(java.lang.String arg0, java.lang.String arg1);
public abstract boolean hasActionErrors();
public abstract boolean hasActionMessages();
public abstract boolean hasErrors();
public abstract boolean hasFieldErrors();
}
LocaleProvider接口
public abstract interface com.opensymphony.xwork2.LocaleProvider
{
//控制Locale的相关信息
public abstract java.util.Locale getLocale();
}
TextProvider接口
public abstract interface com.opensymphony.xwork2.TextProvider
{
//返回国际化信息的方法
public abstract java.lang.String getText(java.lang.String arg0);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.lang.String arg2);
public abstract java.lang.String getText(java.lang.String arg0, java.util.List arg1);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String[] arg1);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.util.List arg2);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.lang.String[] arg2);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.util.List arg2, com.opensymphony.xwork2.util.ValueStack arg3);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.lang.String[] arg2, com.opensymphony.xwork2.util.ValueStack arg3);
//返回国际化资源包的方法
public abstract java.util.ResourceBundle getTexts(java.lang.String arg0);
public abstract java.util.ResourceBundle getTexts();
}
7.ActoinContext类
static ActionContext getContext();获取系统的ActionContext实例
Object get(Object key)类似调用HttpServletRequest的getAttribute(String name)方法
Map getApplication();模拟ServletContext实例。
void setApplication(Map application)
Map getParameters();获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap方法。
Map getSession();模拟HttpSession实例。
void setSession(Map session);
好处是与容器解藕。
8.ServletActionContext 类,用来返回容器的对象
static PageContext getPageContext();
static HttpServletRequest getRequest();
static HttpServletResponse getResponse();
static ServletConext getServletContext();
缺点,与容器耦合,优点,可以操作容器对象。更加方便。
必须指出,虽然可以在Acation类中获取HttpServletResponse;但是不能通过它来生成服务器的相应。
9.ServletResponseAware接口
通过实现此接口的setServletResponse(HttpServletResponse response)的方法,可以获取HttpServletResponse对象。
由于Action不能用Response对象来生成服务器相应,但是可以通过该对象来设置COOKIE。
10.Action配置详解
10.1 ACTION 属性 name|class|method
在设置name属性时,不要为在name中加入”.”或”-”,可能会引发一些异常.
在设置name属性时如果需要在name属性中使用”/”,则必须配置常量:
struts.enable.SlashesInActionNames=true
class属性不是必需的.如果我们不为<action>元素指定class属性,系统则默认使用系统的ActionSupport类,该类的execute方法默认返回SUCCESS;
10.2 动态方法调用一
1.配置STRUTS2常量
struts.enable.Dynamic.MethodInvocation=true
2.通过在页面设置form的action属性:
<form action=”ActionName!methodName.action”>
如<form action=”Login!login.action”>
javascript 代码
function register()
{
this.form.action = “Login!register.action”;
this.form.submit();
}
10.3为action元素配置method属性将一个action类映射到多个逻辑action元素
<action name=”login” class=”struts.LoginAction”>
<result name=”success”….../ >
<result name=”error”….../ >
</action>
<action name=”register” class=”struts.LoginAction” method=”register”>
……
</action>
10.4 在action中使用通配符(动态方法调用二)
在action元素中的属性,result子元素都可以设置通配符
<action name=”*Action” class=”lee.LoginAction” method={1}>
……
</action>
有时需要在classs属性和method属性同时使用表达式
<action name=”*_*” method={2} class=”actions.{1}”>
利用通配符返回对应的jsp页面
<action name=”*”>
<result>/{1}.jsp</result>
多个匹配结果的处理方式:
如果有URL为abcAction.action的请求,如果struts.xml文件中有名为abcAction的action元素则由此action处理,如果没有,则才去匹配有通配符”*Action”或者”*”的action.排在前面的action元素先匹配.我们应该把名为”*”的action排在最后面.
10.5 默认的Action
<default-action-ref name=”一个有效的action的名”/>
11.配置结果
局部结果:将<result …/>作为<action…/>的子元素
全局结果:将<result…/>作为<global-results…/>的子元素
result属性 name|type
result子元素 param
子元素属性 name(location|parse)
eg
<result name=”success” type=”dispatcher”>//type默认就是dispatcher
<param name=”location”>/thank.jsp</param>
//通常无需要设置param所以直接输出/thank.jsp就可以
</result>
从struts-default.xml中可以看到dispatcher是默认的
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
struts2内建的结果类型:
chain: action链式处理的结果类型
chart:用于整合JFreeChart的结果类型
dispatcher:jsp整合的结果类型
freemarker:Freemarker整合的结果类型
httpheader:控制特殊的HTTP行为的结果类型
jasper:用于JasperReports整合的结果类型
jsf:用于JSF整合的结果类型
redirect:用于直接跳转到其他URL的结果类型
redirect-action:用于直接跳转到其他ACTION的结果类型
stream:用于向浏览器返回一个InputStream(用于文件下载)
tiles:用于与Tiles整合的结果类型
velocity:用于与Velocity整合的结果类型
xslt:用于与XML/XSLT整合
plaintext:用于现实某个页面的原始代码的结果类型.这种结果类型一般用来从页面发送邮件.
plaintext类型详解
STRUTS2允许为plaintext设置相应的编码
eg <result type=”plaintext”>
<param name=”location”>go.jsp</param>
<param name=”charSet”>GBK</param>
</result>
redirect-action类型详解
配置redirect-action的参数
actionName 重定向的action的名
namespace 重定向的action的命名空间
redirect 与 redirect-action两种结果类型都是重新生成一个新的请求,区别是前者通常用于生成一个对具体资源的请求,而后者通常用于生成一个对其他ACTION的请求.两个结果类型都会丢失请求参数,请求属性以及前一个ACTION的处理结果.
动态视图结果
配置<result…/>时可以通过OGNL表达式来${属性名.属性名.属性名}
<result type=”redirect”>eidt.action?skillName=${currentSkill.name}</result>
<result name=”success”>/${target}.jsp</result>
其中currentSkill和target必须是action的属性名.也就是说action必须提供currentSkill和target的getter和setter
全局结果
<struts>
<package name=”lee” extends=”struts-default”>
<global-results>
<result name=”success”>${target}.jsp</result>
</global-results>
</package>
<action …>….</action>
</struts>
12模型驱动与属性驱动
模型驱动利用javaBean来封装请求参数和处理结果
属性驱动是直接在action中封装请求参数和处理结果.
模型驱动必须实现ModelDriven接口
public class xxxAction implements Action,ModelDriven
{
public String execute()throws Exception
{…}
public Object getModel()
{…}
}
struts-default.xml中
<interceptor name="model-driven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
struts2通过model-driven拦截器将请求参数封装到模型驱动的(model)JAVABEAN中
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
struts2通过params拦截器将请求参数封装到属性驱动的ACTION中
13异常处理
struts2通过声明式异常捕获和处理
局部异常映射:
将<exception-mapping …/>作为<action…/>子元素
全局异常映射:
将<exception-mapping …/>作为<global-exception-mappings>的子元素
exception-mapping的属性
exception|result
exception :异常类型
result:出异常时系统转入result属性所指向的结果
<struts>
<package name=”pack” extends=”struts-default”>
<global-results>
<result name=”sql”>/exception.jsp</result>
<result name=”root”>/exception.jsp</result>
</global-result>
<global-exception-mappings>
<exception-mapping exception=”java.sql.SQLException” result=”sql”/>
<exception-mapping exception=”java.lang.Exception” result=”root”/>
<global-exception-mappings>
<action name=”login” class=”yilin.LoginAction”>
<result name=”my”>/exception.jsp</result>
<result name=”success”>/go.jsp</result>
<exception-mapping exception=”yilin.MyCustomException” result=”my”/>
</action>
</package>
</struts>
输出异常
<s:property value=”exception”/>输出异常对象本身
<s:property value=”exception.message”/>输出异常信息
<s:property value=”exceptionStack”/>输出异常堆栈信息
struts-default.xml中定义的exception异常拦截器
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
包的属性 name |extends | namespace |abstract
struts2的配置文件是从上到下处理的,所以父包应该在子包前面。
抽象包不能有Action的定义。
如果没有为包指定命名空间,包使用默认的命名空间””
当某个包指定命名空间后包下所有的Action处理的URL应该是命名空间+ACTION名。
<package namespage=”/book” extends=”struts-default” name=”get”>
<action name=”getBook” class=”com.strutstest.GetBookAction”>
<result name=”success”>showbook.jsp</result>
</action>
</package>
访问该包里的getBook的Action的路径是(web应用的名称是strutstest)
http://localhost:8080/strutstest/book/getBook.action
如果请求为/book/getBook.action系统查找/book的命名空间对应的getBook的action
如果找不到,系统将会在默认命名空间里面找。如果找不到就出现系统错误。
如果请求为/login.action系统会在根命名空间”/”中查找名为login的action
如果找不到,系统将会在默认命名空间里面找。如果找不到就出现系统错误。
默认命名空间是”” 根命名空间是”/”
命名空间只有一个级别。
5.拦截器配置
拦截器结构
<interceptors>
<interceptor name=”拦截器名” class=”拦截器类名”/>
<interceptor-stack name=”拦截栈名”>
<interceptor-ref name=”外面定义的拦截名”/>
</interceptor-stack>
</interceptors>
Action中使用拦截器配置
<action name=”MyAction” class=”yilin.MyAction”>
<result name=”success”>myresult.jsp</result>
<interceptor-ref name=”上面定义的拦截器名或者拦截栈名”/>
</action>
6.ActionSupport类解剖
public class ActionSupport implements Action,Validateable,ValidationAware,TextProvider,
LocaleProvider,Serializable
Action接口
public interface Action
{
public static final String ERROR=”error”;
public static final String INPUT=”input”;
public static final String LOGIN=”login”;
public static final String NONE=”none”;
public static final String SUCCESS=”success”;
public String execute ()throws Exception;
}
Validateable接口
public abstract interface Validateable
{
public abstract void validate();
}
ValidationAware 接口
public abstract interface com.opensymphony.xwork2.ValidationAware
{
//收集校验错误的方法
public abstract void setActionErrors(java.util.Collection arg0);
//返回校验错误的方法
public abstract java.util.Collection getActionErrors();
//普通ACTION信息的集合
public abstract void setActionMessages(java.util.Collection arg0);
public abstract java.util.Collection getActionMessages();
//字段错误信息的集合
public abstract void setFieldErrors(java.util.Map arg0);
public abstract java.util.Map getFieldErrors();
//添加错误信息
public abstract void addActionError(java.lang.String arg0);
public abstract void addActionMessage(java.lang.String arg0);
public abstract void addFieldError(java.lang.String arg0, java.lang.String arg1);
public abstract boolean hasActionErrors();
public abstract boolean hasActionMessages();
public abstract boolean hasErrors();
public abstract boolean hasFieldErrors();
}
LocaleProvider接口
public abstract interface com.opensymphony.xwork2.LocaleProvider
{
//控制Locale的相关信息
public abstract java.util.Locale getLocale();
}
TextProvider接口
public abstract interface com.opensymphony.xwork2.TextProvider
{
//返回国际化信息的方法
public abstract java.lang.String getText(java.lang.String arg0);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.lang.String arg2);
public abstract java.lang.String getText(java.lang.String arg0, java.util.List arg1);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String[] arg1);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.util.List arg2);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.lang.String[] arg2);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.util.List arg2, com.opensymphony.xwork2.util.ValueStack arg3);
public abstract java.lang.String getText(java.lang.String arg0, java.lang.String arg1, java.lang.String[] arg2, com.opensymphony.xwork2.util.ValueStack arg3);
//返回国际化资源包的方法
public abstract java.util.ResourceBundle getTexts(java.lang.String arg0);
public abstract java.util.ResourceBundle getTexts();
}
7.ActoinContext类
static ActionContext getContext();获取系统的ActionContext实例
Object get(Object key)类似调用HttpServletRequest的getAttribute(String name)方法
Map getApplication();模拟ServletContext实例。
void setApplication(Map application)
Map getParameters();获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap方法。
Map getSession();模拟HttpSession实例。
void setSession(Map session);
好处是与容器解藕。
8.ServletActionContext 类,用来返回容器的对象
static PageContext getPageContext();
static HttpServletRequest getRequest();
static HttpServletResponse getResponse();
static ServletConext getServletContext();
缺点,与容器耦合,优点,可以操作容器对象。更加方便。
必须指出,虽然可以在Acation类中获取HttpServletResponse;但是不能通过它来生成服务器的相应。
9.ServletResponseAware接口
通过实现此接口的setServletResponse(HttpServletResponse response)的方法,可以获取HttpServletResponse对象。
由于Action不能用Response对象来生成服务器相应,但是可以通过该对象来设置COOKIE。
10.Action配置详解
10.1 ACTION 属性 name|class|method
在设置name属性时,不要为在name中加入”.”或”-”,可能会引发一些异常.
在设置name属性时如果需要在name属性中使用”/”,则必须配置常量:
struts.enable.SlashesInActionNames=true
class属性不是必需的.如果我们不为<action>元素指定class属性,系统则默认使用系统的ActionSupport类,该类的execute方法默认返回SUCCESS;
10.2 动态方法调用一
1.配置STRUTS2常量
struts.enable.Dynamic.MethodInvocation=true
2.通过在页面设置form的action属性:
<form action=”ActionName!methodName.action”>
如<form action=”Login!login.action”>
javascript 代码
function register()
{
this.form.action = “Login!register.action”;
this.form.submit();
}
10.3为action元素配置method属性将一个action类映射到多个逻辑action元素
<action name=”login” class=”struts.LoginAction”>
<result name=”success”….../ >
<result name=”error”….../ >
</action>
<action name=”register” class=”struts.LoginAction” method=”register”>
……
</action>
10.4 在action中使用通配符(动态方法调用二)
在action元素中的属性,result子元素都可以设置通配符
<action name=”*Action” class=”lee.LoginAction” method={1}>
……
</action>
有时需要在classs属性和method属性同时使用表达式
<action name=”*_*” method={2} class=”actions.{1}”>
利用通配符返回对应的jsp页面
<action name=”*”>
<result>/{1}.jsp</result>
多个匹配结果的处理方式:
如果有URL为abcAction.action的请求,如果struts.xml文件中有名为abcAction的action元素则由此action处理,如果没有,则才去匹配有通配符”*Action”或者”*”的action.排在前面的action元素先匹配.我们应该把名为”*”的action排在最后面.
10.5 默认的Action
<default-action-ref name=”一个有效的action的名”/>
11.配置结果
局部结果:将<result …/>作为<action…/>的子元素
全局结果:将<result…/>作为<global-results…/>的子元素
result属性 name|type
result子元素 param
子元素属性 name(location|parse)
eg
<result name=”success” type=”dispatcher”>//type默认就是dispatcher
<param name=”location”>/thank.jsp</param>
//通常无需要设置param所以直接输出/thank.jsp就可以
</result>
从struts-default.xml中可以看到dispatcher是默认的
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
struts2内建的结果类型:
chain: action链式处理的结果类型
chart:用于整合JFreeChart的结果类型
dispatcher:jsp整合的结果类型
freemarker:Freemarker整合的结果类型
httpheader:控制特殊的HTTP行为的结果类型
jasper:用于JasperReports整合的结果类型
jsf:用于JSF整合的结果类型
redirect:用于直接跳转到其他URL的结果类型
redirect-action:用于直接跳转到其他ACTION的结果类型
stream:用于向浏览器返回一个InputStream(用于文件下载)
tiles:用于与Tiles整合的结果类型
velocity:用于与Velocity整合的结果类型
xslt:用于与XML/XSLT整合
plaintext:用于现实某个页面的原始代码的结果类型.这种结果类型一般用来从页面发送邮件.
plaintext类型详解
STRUTS2允许为plaintext设置相应的编码
eg <result type=”plaintext”>
<param name=”location”>go.jsp</param>
<param name=”charSet”>GBK</param>
</result>
redirect-action类型详解
配置redirect-action的参数
actionName 重定向的action的名
namespace 重定向的action的命名空间
redirect 与 redirect-action两种结果类型都是重新生成一个新的请求,区别是前者通常用于生成一个对具体资源的请求,而后者通常用于生成一个对其他ACTION的请求.两个结果类型都会丢失请求参数,请求属性以及前一个ACTION的处理结果.
动态视图结果
配置<result…/>时可以通过OGNL表达式来${属性名.属性名.属性名}
<result type=”redirect”>eidt.action?skillName=${currentSkill.name}</result>
<result name=”success”>/${target}.jsp</result>
其中currentSkill和target必须是action的属性名.也就是说action必须提供currentSkill和target的getter和setter
全局结果
<struts>
<package name=”lee” extends=”struts-default”>
<global-results>
<result name=”success”>${target}.jsp</result>
</global-results>
</package>
<action …>….</action>
</struts>
12模型驱动与属性驱动
模型驱动利用javaBean来封装请求参数和处理结果
属性驱动是直接在action中封装请求参数和处理结果.
模型驱动必须实现ModelDriven接口
public class xxxAction implements Action,ModelDriven
{
public String execute()throws Exception
{…}
public Object getModel()
{…}
}
struts-default.xml中
<interceptor name="model-driven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
struts2通过model-driven拦截器将请求参数封装到模型驱动的(model)JAVABEAN中
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
struts2通过params拦截器将请求参数封装到属性驱动的ACTION中
13异常处理
struts2通过声明式异常捕获和处理
局部异常映射:
将<exception-mapping …/>作为<action…/>子元素
全局异常映射:
将<exception-mapping …/>作为<global-exception-mappings>的子元素
exception-mapping的属性
exception|result
exception :异常类型
result:出异常时系统转入result属性所指向的结果
<struts>
<package name=”pack” extends=”struts-default”>
<global-results>
<result name=”sql”>/exception.jsp</result>
<result name=”root”>/exception.jsp</result>
</global-result>
<global-exception-mappings>
<exception-mapping exception=”java.sql.SQLException” result=”sql”/>
<exception-mapping exception=”java.lang.Exception” result=”root”/>
<global-exception-mappings>
<action name=”login” class=”yilin.LoginAction”>
<result name=”my”>/exception.jsp</result>
<result name=”success”>/go.jsp</result>
<exception-mapping exception=”yilin.MyCustomException” result=”my”/>
</action>
</package>
</struts>
输出异常
<s:property value=”exception”/>输出异常对象本身
<s:property value=”exception.message”/>输出异常信息
<s:property value=”exceptionStack”/>输出异常堆栈信息
struts-default.xml中定义的exception异常拦截器
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
发表评论
-
Struts2拦截器配置
2012-11-01 15:33 854Struts2拦截器配置 1 ... -
struts.xml的作用
2012-11-01 14:56 1705struts.xml 为Struts 2的核心配置文件。str ... -
Struts2常用标签总结
2012-11-01 14:56 772Struts2常用标签总结 002 一 介绍 ... -
<s:property>如何使用详解
2012-11-01 14:56 961OGNL:Object Graph Navigation La ... -
struts2配置web.xml文件
2009-09-22 16:10 1838Struts 2的基本配置 前面 ... -
<s:property>1
2009-09-19 09:47 4124关于struts2标签取值的备忘录 取值要通过<s: ... -
struts2 中 Actionsupport 的作用
2009-09-16 14:44 58090struts2 中 Actionsupport 的 ... -
struts2 中日期格式的处理
2009-09-14 09:08 1922在bean中是一个日期格式,要求显示在页面时的格式为:2009 ... -
struts2 request和session
2009-09-11 09:59 1211在struts2中,如何将参数放到request和sessio ...
相关推荐
struts2学习笔记,非本人所写,但有学习的价值,总结的很好,分享一个!
这是学习struts2时记得重点笔记,包括了一些原理,ognl语句的编写,以及如何设置拦截器等等一些基本知识,起到复习和巩固的作用
Struts2学习笔记,介绍了struts2的基础部分
struts2学习笔记总结
STRUTS2学习文档,如果你想花最少的时间来获取对struts2 的最大了解程度,则它将是你最好 的选择.
struts2学习测试代码,struts2学习测试代码2struts2学习测试代码,struts2学习测试代码
本人在网上收集的struts2 的学习资料,包括:struts2权威指南、struts2标签简单说明、struts2中文教程。
STRUTS2学习文档.pdf 对Struts2的一些配置文件进行了详细的说明。 Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2...
struts2学习文档--中文版本。该版本是本人参考官方文档,里面的提到的内容皆通过本人的验证,可以放心使用!
Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...
Struts2 学习
STRUTS2站点,STRUTS2学习实例8
这是一个利用oracle数据库与struts2框架搭建成的小实例,是个人在学习过程中的一个小实例,很适合广大的IT技术初学者!
struts2学习测struts2学习测试代码试代码
struts2学习心得,总结了struts2的常用方法,经验
1. struts2框架的引入 1)把struts2的相关jar包导入到项目中去 2)把struts2框架的配置文件struts.xml复制粘贴到项目中的src下面(同时也可以把log4j.properties放到src下) 在这里我们主要是要的这个struts.xml文件...
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
有了Struts2学习小结,可以很方便的学习struts2,里面包含了许多知识点
struts2学习ppt