struts2执行流程。资源访问等

Struts2的介绍:
 Struts  WebWork
Struts2和Struts1: grails opentaps(ofbiz)
 <1>:实现原理
Struts2的组成部分:
 <1>:struts  webwork ognl()
Struts2开发步骤:
 <1>:jar 文件  
 <2>:配置相关的xml
 <3>:业务逻辑开发
========================
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

你可能感兴趣的:(struts,session,Interceptor,user,application,action)