- 浏览: 205509 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
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 872Struts2拦截器配置 1 ... -
struts.xml的作用
2012-11-01 14:56 1746struts.xml 为Struts 2的核心配置文件。str ... -
Struts2常用标签总结
2012-11-01 14:56 807Struts2常用标签总结 002 一 介绍 ... -
<s:property>如何使用详解
2012-11-01 14:56 992OGNL:Object Graph Navigation La ... -
struts2配置web.xml文件
2009-09-22 16:10 1866Struts 2的基本配置 前面 ... -
<s:property>1
2009-09-19 09:47 4158关于struts2标签取值的备忘录 取值要通过<s: ... -
struts2 中 Actionsupport 的作用
2009-09-16 14:44 58139struts2 中 Actionsupport 的 ... -
struts2 中日期格式的处理
2009-09-14 09:08 1963在bean中是一个日期格式,要求显示在页面时的格式为:2009 ... -
struts2 request和session
2009-09-11 09:59 1232在struts2中,如何将参数放到request和sessio ...
相关推荐
### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...
在这个名为"struts2学习小项目"的资源中,我们可以看到一个适用于初学者实践的实例,它结合了Oracle数据库,提供了一个从基础到实践的学习路径。 首先,了解Struts2框架的基本概念至关重要。Struts2的核心是Action...
这个"STRUTS2学习文档"显然是一个关于如何理解和使用Struts2框架的教程资料,对于想要快速掌握Struts2核心概念和技术的开发者来说,它是一份非常有价值的资源。 Struts2框架的核心特点包括: 1. **拦截器...
### Struts2学习心得:深入理解Struts2框架的基本配置与初学者指南 #### Struts2框架概述 Struts2是Struts框架的升级版本,它继承了Struts1的优点并在此基础上进行了改进,提供了更丰富的功能和更好的性能。Struts...
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...
### Struts2学习笔记知识点详解 #### 一、Struts2框架的基本引入步骤 ##### 1. 导入Struts2相关Jar包 在引入Struts2框架时,首先需要将Struts2的相关Jar包导入到项目的类路径中。这些Jar包通常包括核心库以及其他...
这个压缩包中包含的资源是学习Struts2的关键资料,帮助开发者深入理解和掌握这个框架。 首先,"struts2权威指南"是学习Struts2的核心参考资料,通常会涵盖框架的基本概念、核心组件、配置细节、MVC设计模式的应用...
张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...
这个"STRUTS2学习实例8"显然旨在深化对Struts2的理解和应用,通过具体的实战项目来教学。让我们深入探讨一下Struts2的关键概念和技术。 首先,Struts2的核心是Model-View-Controller(MVC)设计模式。MVC模式将应用...
struts2学习测试代码,struts2学习测试代码2struts2学习测试代码,struts2学习测试代码
本资料“struts2学习 源码”旨在帮助初学者理解Struts2的核心概念和工作原理,通过来自达内的详细代码实例来提供直观的学习体验。 Struts2框架的关键特性包括: 1. **动作(Action)**:在Struts2中,业务逻辑通常...
STRUTS2学习文档.pdf 对Struts2的一些配置文件进行了详细的说明。 Struts2―表单验证validate(html)对validate的type属性校验类型以及param 做了详细的解释说明。 struts2和struts的比较 让你更清楚的知道struts2...
本教程“Struts2 学习 2”将深入探讨Struts2的核心概念和技术,通过一系列文档帮助你掌握这个框架的关键要点。 一、ActionContext的理解与应用 在“第九讲 ActionContext.docx”中,你将学习到ActionContext是...
Struts2是一个强大的Java Web应用程序开发框架,基于Model-View-Controller(MVC)设计模式,为开发者提供了...然而,随着Spring Boot等现代框架的兴起,Struts2的使用逐渐减少,但其设计理念和技术仍值得学习和借鉴。
这个“Struts2学习资料(强烈推荐)”包含的资源旨在帮助开发者深入理解并熟练掌握Struts2的核心概念和技术。 Struts2权威指南通常会涵盖以下几个主要知识点: 1. **MVC模式**:Struts2是基于Model-View-...