Struts2将前台参数传递到action的完整过程解析

先来说说Struts2(由于Struts1表现层单一,无法跟Freemarker等技术整合),它采用拦截器的机制来处理用户的请求。

先来讲讲Struts2的原理图,如上图所示:

1.当用户发起请求时(一个URL),服务器端的Web容器收到了请求。

2.这时,Struts2的核心控制器FilterDispatcher接受用户发起的请求,然后判断这个请求是交给action处理?还是交给web组件来处理?如果请求的action或web组件不存在,则报404错误。在整个处理过程中,需要一个辅助对象:Action映射器(ActionMapper),ActionMapper会确定调用哪个Action(这个过程的实现是依靠ActionMapper返回一个收集Action详细信息的ActionMaping对象)

3.然后,来交给Action来处理,它会根据struts.xml的配置信息(首先执行拦截此action的所有拦截器,然后再执行请求的action对象<在这个处理过程中需要辅助对象:Action代理(ActionProxy);配置管理器(ConfigurationManager);ActionInvocation>,),

4.Action执行完毕之后,返回一个结果(此结果用字符串来表示),这个结果经过拦截Action的所有拦截器之后,返回给主控制器。主控制器根据此结果从配置文件中找到真正的路径,然后将请求转发给相应的视图。

5.由视图客户端作出响应。

时间: 2024-08-26 23:51:05

Struts2将前台参数传递到action的完整过程解析的相关文章

转: 数字证书原理 https 完整过程解析

点评: 讲的非常的详细与全面,值得一看. 转: http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用.接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书.如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出! 1.基础知识

jquery中ajax 从前端到后端 完整过程解析

几个原则: 1.get方式访问浏览器时,常加参数缘由: GET访问浏览器是等幂的,就是一个相同的URL只有一个结果[相同是指整个URL字符串完全匹配],所以第二次访问的时候如果 URL字符串没变化,浏览器是 直接拿出了第一次访问的结果.POST则认为是一个变动性访问 (浏览器认为POST的提交必定是有改变的)防止GET的等幂访问就在URL后面加上?+new Date();[总之就是使每次访问的URL字符串不一样的].设计WEB页面的时候也应该遵守这个原则. 2.ajax方式中的get和post的

struts2之day01——06Struts2的action方法访问

struts2之day01--06Struts2的action方法访问                           (重点) 一.Action的方法访问介绍 1.有三种方法实现 第一种  使用action标签的method属性,在这个属性里面写执行的action的方法: 第二种  使用通配符方式实现: 第三种  动态访问实现(基本不用) 2.演示错误 (1)如果action方法有返回值,在配置文件中没有配置,出现错误 (2)在action里面的方法有返回值,如果有返回值时候类型必须是St

Struts2 自定义拦截器时Action无法接收到参数

问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultStack中也有细分如basicStack等 <interceptors> <interceptor name="checkUser" class="com.common.interceptor.UserInfoInterceptor"></

struts2之day01——05Struts2的action创建

struts2之day01--05Struts2的action创建 Action三种编写方式 第一种:创建普通类,这个不继承任何类,不实现任何接口 第二种:创建类,实现接口Action(注意,该方法需要这个包) 查看源代码:ctrl点击"Action"单词,导入src文件,可以查看源代码: 该方法可以用接口中的常量做返回值,比如:SUCCESS: 第三种:创建类,继承类ActionSupport 这个类本身就实现了Action接口:

Struts2:前台提交JSON数组

JS: $.ajax({ url : {URL}, type : "POST", data : { "list[0]":{VALUE0}, "list[1]":{VALUE1} }, scriptCharSet : "UTF-8", success : function(data) {} }); FORM: public class Form{ private List list; public List getList(){

五、程序启动的完整过程

程序启动的完整过程: 1.先执行main函数,main内部会调用UIApplicationMain函数,该函数的声明如下: int UIApplicationMain(int argc, char argv[], NSString principalClassName, NSString *delegateClassName). argc.argv:标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可 principalClassName:指定应用程序类,该类必须

Ubuntu上snmp安装、配置、启动及远程测试完整过程

0.说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通过snmp的方式来获取Linux主机的信息则会更轻松简单些,只不过在使用前的配置可能需要花多一点时间,不过这绝对值得!而且如果需要开发Linux主机的监控软件,那使用snmp肯定是首选,毕竟它可以获得的信息太多太多! 后面的内容就来分享一下在Ubuntu上安装.配置.启动snmp以及进行远程测试

程序启动的完整过程

程序启动的完整过程 int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([MJAppDelegate class])); } } 执行顺序 1.main函数 2.UIApplicationMain 创建UIApplication对象 创建UIApplication的delegate对象 3.开启主运行循环 3(1).de