文档章节

Struts2---->运行机制

小强斋太
 小强斋太
发布于 2016/11/09 20:05
字数 719
阅读 2
收藏 0

Struts的作用:把请求跟视图分开(请求跟展现分开,请求跟最后的结果分开)。

一、HelloWorld的执行过程

1、输入url地址:http://localhost:8080/Struts2_HelloWorld/hello 这个url地址的请求,会通过http协议发送到服务器,

2、服务器收到请求之后,会先看请求的是哪个web application,是Struts2_HelloWorld这个web application,所以就把这个web application交给对应的程序处理,既然是这个web application,当然要读这个web application里面的web.xml文件来看它是怎么配的,这时候发现了filter,

<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>


这个filter会过滤所有的url地址,因为写成/*了,所以url里面的hello,这个地址就会被org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter接收到。

3、过滤器会调用doFilter(),在doFilter()内部会参考struts.xml文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

 <constant name="struts.devMode" value="true" />
	<package name="default" namespace="/" extends="struts-default">
	
		<action name="hello">
			<result>
				/index.jsp
            </result>
		</action>
	</package>
</struts>

a、首先看NameSpace,其中NameSpace是和访问路径一一对应的,它会到struts.xml中去查,查到有一个NameSpace叫"/",然后就会在此NameSpace下去查

b、查到相应的Action的名字, 在url地址里,/后面的是hello,在struts.xml里,namespace="/"里面有个action叫hello,

c、根据该action的class(可以没有,如果action没有配置class属性,这默认ActionSupport中的execute方法返回了”success“。)和method(如果没指定,就默认为execute方法),找到要执行的方法,根据该方法返回的字符串,找到对应的result,本例找到Hello.jsp了,就把Hello.jsp的结果返回。如果result没有配置name属性,则就默认返回"success"时匹配。

二、Struts2框架处理请求的步骤

 

Struts2官方站点的Struts 2 的整体结构
一个请求在Struts2框架中的处理大概分为以下几个步骤:
1)  客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
2)  这个请求经过一系列的过滤器(Filter)。
3)  接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。
4)  如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。
5)  ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
6)  ActionProxy创建一个ActionInvocation的实例。
7)  ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器Intercepter的调用。
8)  一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
Struts2的核心就是拦截器。Struts.xml中所有的package都要extends="struts-default"。同理与所有的Java类都要extends自Object一样。struts-default.xml里面就是要做以上事情。

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/05/18/5637308.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
struts2中 welcome-file-list 设置的路径不能是Action地址

<welcome-file-list>中配置Struts2 的action是不能被访问的,但是Struts1的行原理在于: 在tomcat中配置的 <welcom-file> 是基于servlet 的struts2 的运行机制却是filter。 解决办法,设置i...

cheese
2012/08/20
0
2
从一个简单的实例看struts2运行原理

1.1 简单例子 先做一个最简单的struts2的例子:在浏览器中请求一个action,然后返回一个字符串到jsp页面上显示出来。 第一步:把struts2最低配置的jar包加入的项目中。 commons-logging-1.0....

chape
2013/06/08
0
0
Java程序员从笨鸟到菜鸟之(六十六)细谈struts2(十二)struts2国际化底层大揭秘

Struts2的博客在前不久已经停止了,但是里面还有很多内容我们都还没接触到,所以现在我们在补充一下struts2的内容。这篇博客我们主要是一块来看一下struts2内对国际化的支持。在了解struts2...

长平狐
2012/11/12
95
0
shader高级着色语言视频教程

课程目标:让学员能够熟悉shader的运行机制,能够编写shader程序。 适合人群:有一定C++或C#程序和unity3D基础 课程通过多个实例讲解unity3d shader如何工作,让学员能够熟悉shader的运行机制...

星辰8209
07/26
0
0
Spring集成 Struts2

Spring如何整合struts2? 1) 整合目标? 使IOC容器来管理Struts2的Action! 2) 如何进行整合? ① 正常加入Struts2 ② 在Spring的IOC容器中配置Struts2的Action 特别注意:在IOC容器中配置S...

哎小艾
2017/11/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

八种排序算法的时间复杂度复杂度

1、稳定性 归并排序、冒泡排序、插入排序。基数排序是稳定的 选择排序、快速排序、希尔排序、堆排序是不稳定的 2、时间复杂度 最基础的四个算法:冒泡、选择、插入、快排中,快排的时间复杂度...

陈刚生
31分钟前
2
0
大数据学习系列 Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

目录 引言 目录 一、环境选择 1,集群机器安装图 2,配置说明 3,下载地址 二、集群的相关配置 1,主机名更改以及主机和IP做相关映射 2,ssh免登录 3,防火墙关闭 4,时间配置 5,快捷键设置...

董黎明
45分钟前
1
1
六元一个的私有博客系统,了解一下?

神说要有光,于是便有了光 写代码的,偶尔都想装点逼,想要自己写点博客。刚开始还能在各大社区写,比如说CSDN,开源中国,博客园什么的。但是越写就会越觉得,那些博客平台都不是自己想要的...

耒耒耒耒耒
50分钟前
1
0
maven环境隔离

一.maven项目环境根据实际情况进行隔离: 开发环境 dev 测试环境 beta 线上环境 prod 二.pom 配置: build节点 <build> <resources> <resource> <directory>src/......

imbiao
51分钟前
1
0
webrtc收包流程源码分析

版本: webrtc M59 收包流程: AsyncUDPSocket::OnReadEvent AllocationSequence::OnReadPacket HandleIncomingPacket UDPPort::OnReadPacket Connection::OnReadPacket P2PTransportChannel......

bill_shen
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部