Struts由来:
<1>:Servlet + jsp
<2>:Struts1
<action path="" type="">
<forward />
</action>
Struts2:
Struts WebWork
Struts2
Strut1的缺点:
<1>:侵入性很强(Servlet)
<2>:FORM表单
<3>:资源访问
Struts2是否是struts1的升级版?
Filter
开发struts2步骤:
<1>:新建Webproject
<2>:导入相应的jar文件
struts2-core-2.0.11.2.jar
xwork-2.0.5.jar
ognl-2.6.11.jar
freemarker-2.3.8.jar
commons-logging-1.0.4.jar
<3>:配置web.xml 配置filter
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<4>:开发Action
1:普通的java类
2:含有execute方法
3:execute方法返回值为string
<5>:配置struts.xml
<struts>
<package name="example" extends="struts-default">
<action name="login" class="cn.com.ambow.struts2.day1.web.action.LoginAction">
<result name="success">/day1/success.jsp</result>
<result name="error">/day1/error.jsp</result>
</action>
</package>
</struts>
Struts2的后缀名为:action
Struts2的执行流程:
一个请求在Struts2框架中的处理大概分为以下几个部骤:
(1)客户端提交一个请求。
(2)请求被提交到一系列过滤器(先ActionContentCleanUp,然后其他过滤器,最后FilterDispatcher )。
(3) FilterDispatcher咨询ActionMapper是否需要调用某个Action来处理这个请求,如果ActionMapper决定需要调用某个Action, FilterDispatcher则把请求的处理交给ActionProxy。
(4) ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类
(5) ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前, ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)
(6)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。
Struts2包含User对象的两种实现:
<1>: 不实例化(注意jsp页面的属性名 user.name)
public class LoginAction {
private User user;
}
<2>: 实例化(implements ModelDriven 页面属性名为name)
public class UserLoginAction implements ModelDriven{
private User user = new User();
}
Struts2的资源访问:
request
session
application
1:与ServletApi耦合的方式访问
<1>:
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ServletContext application = ServletActionContext.getServletContext();
<2>:
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
HttpSession session = request.getSession();
ServletContext application = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT);
<3>: public class LoginAction2 implements ServletRequestAware ,ServletContextAware {
private HttpServletRequest request;
private ServletContext application;
}
2:与ServletApi解耦的方式访问
<1>:ActionContext context = ActionContext.getContext();
Map request = (Map) context.get("request");
Map session = context.getSession();
Map application = context.getApplication();
<2>:public class LoginAction2 implements RequestAware ,SessionAware ,ApplicationAware{
private User user;
private Map request;
private Map session;
private Map application;
}
Struts2的配置
<1>:web.xml 描述相关部署的信息(框架自带但是需要自己配置)
<2>:Struts.xml :这个文件需要程序员自己写(拦截器,action)
<3>:Struts.properties:strtus2默认相关配置 比如文件上传大小 ,
国际化文件,编码
Struts.i18n.encoding
默认值为utf-8,解决乱码的时候可以尝试设置为GBK,GB2312
Struts.devMode
指定是否使用开发模式,可选的值为true和false,
默认值为false,当设置为true的时候对struts开发更为友好
Struts. i18n.reload
指定是否在每次请求时自动重新加载资源包,
如果为true则自动重新加入默认值为false
Struts.multipart.maxSize
指定允许上传文件的最大字节数,默认值为2097152
Struts.custom.i18n.resoures= testmessage,testmessage2
指定要加载国际化的资源包的文件,如果多个用逗号分开
该属性没有设置
<4>:struts-default.xml
<1>:bean
<2>:拦截器
<1>:Servlet + jsp
<2>:Struts1
<action path="" type="">
<forward />
</action>
Struts2:
Struts WebWork
Struts2
Strut1的缺点:
<1>:侵入性很强(Servlet)
<2>:FORM表单
<3>:资源访问
Struts2是否是struts1的升级版?
Filter
开发struts2步骤:
<1>:新建Webproject
<2>:导入相应的jar文件
struts2-core-2.0.11.2.jar
xwork-2.0.5.jar
ognl-2.6.11.jar
freemarker-2.3.8.jar
commons-logging-1.0.4.jar
<3>:配置web.xml 配置filter
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<4>:开发Action
1:普通的java类
2:含有execute方法
3:execute方法返回值为string
<5>:配置struts.xml
<struts>
<package name="example" extends="struts-default">
<action name="login" class="cn.com.ambow.struts2.day1.web.action.LoginAction">
<result name="success">/day1/success.jsp</result>
<result name="error">/day1/error.jsp</result>
</action>
</package>
</struts>
Struts2的后缀名为:action
Struts2的执行流程:
一个请求在Struts2框架中的处理大概分为以下几个部骤:
(1)客户端提交一个请求。
(2)请求被提交到一系列过滤器(先ActionContentCleanUp,然后其他过滤器,最后FilterDispatcher )。
(3) FilterDispatcher咨询ActionMapper是否需要调用某个Action来处理这个请求,如果ActionMapper决定需要调用某个Action, FilterDispatcher则把请求的处理交给ActionProxy。
(4) ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类
(5) ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前, ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)
(6)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。
Struts2包含User对象的两种实现:
<1>: 不实例化(注意jsp页面的属性名 user.name)
public class LoginAction {
private User user;
}
<2>: 实例化(implements ModelDriven 页面属性名为name)
public class UserLoginAction implements ModelDriven{
private User user = new User();
}
Struts2的资源访问:
request
session
application
1:与ServletApi耦合的方式访问
<1>:
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
ServletContext application = ServletActionContext.getServletContext();
<2>:
ActionContext context = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
HttpSession session = request.getSession();
ServletContext application = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT);
<3>: public class LoginAction2 implements ServletRequestAware ,ServletContextAware {
private HttpServletRequest request;
private ServletContext application;
}
2:与ServletApi解耦的方式访问
<1>:ActionContext context = ActionContext.getContext();
Map request = (Map) context.get("request");
Map session = context.getSession();
Map application = context.getApplication();
<2>:public class LoginAction2 implements RequestAware ,SessionAware ,ApplicationAware{
private User user;
private Map request;
private Map session;
private Map application;
}
Struts2的配置
<1>:web.xml 描述相关部署的信息(框架自带但是需要自己配置)
<2>:Struts.xml :这个文件需要程序员自己写(拦截器,action)
<3>:Struts.properties:strtus2默认相关配置 比如文件上传大小 ,
国际化文件,编码
Struts.i18n.encoding
默认值为utf-8,解决乱码的时候可以尝试设置为GBK,GB2312
Struts.devMode
指定是否使用开发模式,可选的值为true和false,
默认值为false,当设置为true的时候对struts开发更为友好
Struts. i18n.reload
指定是否在每次请求时自动重新加载资源包,
如果为true则自动重新加入默认值为false
Struts.multipart.maxSize
指定允许上传文件的最大字节数,默认值为2097152
Struts.custom.i18n.resoures= testmessage,testmessage2
指定要加载国际化的资源包的文件,如果多个用逗号分开
该属性没有设置
<4>:struts-default.xml
<1>:bean
<2>:拦截器