`

struts2流程

阅读更多

  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流程与流程图

    一个请求在Struts 2框架中的处理大概分为以下几个步骤。  客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...

    struts2工作流程

    NULL 博文链接:https://ollevere.iteye.com/blog/1150639

    Struts2工作流程

    本文件内容包含用EA软件画的Struts2的工作时序图(.eap文件)、对应生成的图片文件(.bmp文件)以及一张经典的Struts2流程图(.png文件)。此文件对理解Struts2的工作原理有极大的帮助。

    Struts2工作流程图

    虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度...

    Struts2详细分类流程API文档

    Struts2详细地分类Struts2流程、Struts2 API文档等等。。。

    超详细struts2执行流程图

    这张流程图 深刻的描述了 struts2的执行流程 帮助了解Struts2

    struts2建立流程

    Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    Struts2执行流程

    Struts2执行流程 1. web.xml 部署描述符 2. FilterDispatcher 实现StrutsStatics, Filter接口 (1)Filter:一个filter是一个对象用于执行过滤任务为每个请求资源(一个servlet或静态内容),或响应一个资源,或两者.过滤...

    Struts2 基本流程

    我们已在前面学习了Servlet 数据库应用,有了JSP、Servlet 、JDBC的一些知识、理解和...2. Struts2基本流程 3. 了解核心控制器FilterDispatcher及在web.xml中的配置 4. 了解业务控制器Action及在struts.xml中的配置

    Struts2的处理流程

    Struts2的处理流程

    Struts2 运行流程分析

    Struts2 运行流程分析,Struts2 运行流程分析,Struts2 运行流程分析

    Struts运行流程图(详细)

    底层,详细. Struts运行流程图(详细) Struts运行流程图(详细) Struts运行流程图(详细)

    struts2框架处理流程

    包含了struts2的处理流程以及struts2的配置文件,并附有处理流程显示图,更加清楚直观。

    Struts工作流程

    Struts工作流程

    struts业务流程图

    非常明确的,清晰明了的struts 业务流程图,把图看懂了就懂struts了。

    Struts 原理 流程图

    Struts 原理 流程图Struts 原理 流程图

    struts2开发流程简图

    struts2 开发流程 简图 struts2 开发流程 简图 struts2 开发流程 简图 struts2 开发流程 简图

    最详细的Struts工作流程图

    这是一个详细的Struts工作流程图,里面包含JSP、java(Action、ActionForm等)类

Global site tag (gtag.js) - Google Analytics