当前位置:首页 > 开发 > Web前端 > 前端 > 正文

struts2流程

发表于: 2015-04-05   作者:麦田的设计者   来源:转载   浏览:
摘要:   1、用户发送请求,在web.xml配置文件,servlet容器的主要任务是管理servlet的生命周期 <filter>        <filter-name>struts2</filter-name>      &

  1、用户发送请求,在web.xml配置文件,servlet容器的主要任务是管理servlet的生命周期

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>。

通过请求的url到核心过滤器

2、请求经过核心过滤器FilterDispatcher,执行doFilter方法,在该方法中,询问ActionMapper(<url-pattern>/*</url-pattern>
指定的用户请求,Filter过滤用户请求,struts2的每一次请求都会创建Action,是线程安全的)来决定这个请求是否需要调用某个Action;

 

3、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
4 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类
5 ActionProxy创建一个ActionInvocation的实例

6、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

代码:自定义拦截器

public String intercept(ActionInvocation arg0) throws Exception {
  Map<String,Object> session=arg0.getInvocationContext().getSession();
  String user=(String) session.get("user");
  System.out.println("11-------------------"+user);
  if(user!=null&&user.equals("lzw")){
   System.out.println("222-------------------"+user);

       return arg0.invoke(); 
  }else{
   
   System.out.println("333-------------------"+user);

    return Action.INPUT;
   
  }
 }

7、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

 

 

二、

如何得到内置对象

ActionContext

struts2把jsp的内置对象放到了actionContext里面,程序员通过存入键值对,就在对象里面加了值

public  class HelloWorldAction{

     public String execute(){

    ActionContext ctx=ActionContext.getContext();

     ctx.getApplication().put("application","应用范围");

     ctx.getSession().put("ses","session范围");

    ctx.put("req","request范围");

return “success”;

     }

}

在对应的jsp页面里

 

<body>

${applicationScope.app}

${sessionScope.ses}

${requestScope.req}

</body>

 

在容器tomcat里运行后打印出 后面的值。

 

还有一种方法,得到对象进行操作,有个集合

public String rsa() throws exception{

HttpServletRequest request=ServletActionContext.getRequest();

ServletContext servletContext=ServletActionContext.getServletContext();

servletContext.setAttribute("app","应用范围属性");

request.setAttribute("names",Arrays.asList("aa","bb","cc"));

request.getSession().setAttribute("ses","会话范围属性");

return“success”;

 

 

}

 

body里面struts2标签

<c:forEach items=${names} var="name">

$name{}<br/>

</c:forEach>

输出aa

       bb

       cc

struts2流程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制
Struts2工作原理 Struts2请求响应流程: 在struts2的应用中,从用户请求到服务器返回相应响应给用户
Struts2的处理流程: StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<ur
Struts2的处理流程: StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<ur
1.struts2架构图 2.几个概念 2.1 actionContext: is the context in which an Action is executed.
工作流程: 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求; 2 这个请求
struts2的工作流程 StrutsPrepareAndExecuteFilter是struts2框架的核心控制器,它负责拦截由<url
1. Struts2架构图 请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前
struts2的工作流程 StrutsPrepareAndExecuteFilter是struts2框架的核心控制器,它负责拦截由<url
这几天因为在项目中曾经使用过Struts2这个神奇的框架,所以很有必要深入探究一下Struts2的处理的基
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号