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
在深入了解Struts2的执行流程之前,我们先理解几个关键概念。 **Filter**:在Servlet世界中,Filter是一个实现Servlet API中Filter接口的类,其主要任务是在请求到达目标资源(如Servlet)之前或之后执行特定的任务...
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的核心组件之一,负责处理用户的请求并返回相应的结果。...