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
相关推荐
一个请求在Struts 2框架中的处理大概分为以下几个步骤。 客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...
在深入探讨Struts2的工作流程之前,我们先了解一下MVC模式的基本概念。MVC模式将应用逻辑分隔为三个部分:模型(Model)处理业务逻辑,视图(View)负责展示数据,控制器(Controller)协调用户输入和模型间的交互。...
本文件内容包含用EA软件画的Struts2的工作时序图(.eap文件)、对应生成的图片文件(.bmp文件)以及一张经典的Struts2流程图(.png文件)。此文件对理解Struts2的工作原理有极大的帮助。
虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度...
这张流程图 深刻的描述了 struts2的执行流程 帮助了解Struts2
Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...
我们已在前面学习了Servlet 数据库应用,有了JSP、Servlet 、JDBC的一些知识、理解和...2. Struts2基本流程 3. 了解核心控制器FilterDispatcher及在web.xml中的配置 4. 了解业务控制器Action及在struts.xml中的配置
Struts2的处理流程
底层,详细. Struts运行流程图(详细) Struts运行流程图(详细) Struts运行流程图(详细)
包含了struts2的处理流程以及struts2的配置文件,并附有处理流程显示图,更加清楚直观。
下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目需求分析 在 Struts2 项目开发中,需求分析是非常重要的一步。通过对项目的需求分析,可以...
在上述的描述中,我们了解了Struts工作流程的关键步骤: 1. **客户端请求**:当用户在浏览器中输入一个以`.do`结尾的URL(例如http://localhost:8080/helloapp/Hello.do)时,这个请求会被Web服务器捕获并传递给...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
非常明确的,清晰明了的struts 业务流程图,把图看懂了就懂struts了。
### Struts2的工作流程及配置文件详解 #### 一、Struts2简介 Struts2是基于MVC设计模式的Java Web开发框架之一,它继承了Struts1的优点,并在此基础上进行了大量的改进和扩展。Struts2框架的核心是拦截器...
总之,"Struts2详细分类流程API文档"涵盖了Struts2框架的核心流程和API,包括Action、Interceptor、Result的使用,以及Struts2标签库和OGNL等重要概念。开发者可以通过这份文档深入理解Struts2的工作原理,提高开发...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...
- **Hello Struts2**:通过创建一个简单的“Hello World”示例,帮助开发者快速上手Struts2的基本配置和运行流程。 - **Action类详解**:Action类是Struts2的核心组件之一,负责处理用户的请求并返回相应的结果。...