Struts2进阶(一)运行原理

Struts2框架

Struts2框架搭建步骤

致力于web服务,不可避免的涉及到编程实现部分功能。考虑使用到SSH框架中的Struts2。本篇文章只为深入理解Struts2的工作流程,只有在深入理解了其工作流程后,才可以在利用框架编写时做到得心应手。以下是自己的理解及相关的学习知识。若文中技术描述有不当之处,敬请IT界的朋友给予宝贵建议,本人感激不已。

先了解一下Struts2框架的搭建步骤:

    1.拷贝Struts2的jar包到项目中;

    2.在web.xml中添加Struts2的过滤器;

    3.配置Struts2的配置文件(在src目录中创建Struts.xml配置文件);

    4.创建action(action就是一个POJO类);

    5.在Struts.xml文件中配置action及返回结果集;

以上是搭建Struts2框架的基本步骤,至此,Struts2框架搭建完成。

以上只是简单的搭建起Strurs2框架,到这里你可能还是只会用,而且用的不是很好,为什么呢?究其原因,从事IT,我们就应该养成刨根问底的学习习惯,凡事多问个问什么。那么,为了熟练运用此框架,我们就应该首先了解Struts2的工作流程,然后再深入了解其底层方法的实现。

Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。业务控制器Action和业务逻辑组件是需要用户来自己实现的。
    用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。 
    Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。

下面我们先了解一下其工作流程。

首先我们应认识到:Struts2由过滤器(web.xml)启动

正是因为这一特性,

结合到具体的应用场景,请求响应步骤如下:

1:客户端在浏览器中输入一个url地址。
  2:这个url请求通过http协议发送给tomcat。
  3:tomcat根据url找到对应项目里面的web.xml文件。
  4:在web.xml里面会发现有struts2的配置。
  5:然后会找到struts2对应的struts.xml配置文件。
  6:根据url解析struts.xml配置文件,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
  7:Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
  8:Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
  9:返回HTTP响应到客户端浏览器。

在步骤6中,涉及到的代码如下:

<span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;"><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
 <struts>
<!-- 基于通配符的方式 -->
    <package name="user" namespace="/" extends="json-default">
        <action name="user_*" method="{1}" class="com.msun.action.UserAction">
            <result name="success" type="json">
            </result>
        </action>
    </package>
</struts></span><span style="color:#ff6666;">
</span></span>

参考网址

1.http://blog.csdn.net/g_beginner/article/details/6791106

2.http://yanguz123.iteye.com/blog/1697440

3.http://blog.csdn.net/wuwenxiang91322/article/details/11070513

4.http://www.ylzx8.cn/web/web/993988.html

5.https://www.baidu.com/s?wd=struts2原理&rsv_spt=1&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=10018801_hao&rsv_enter=1

&rsv_sug3=8&rsv_sug1=5&rsv_pq=d990692c0006e058&rsv_t=07157W%2FFYoI9EpU%2FK6JnO6yL1qQyltzq0x5F2NtIWnlIvOjA7

eaF7VmUZf%2FK2SMMW3g0&oq=Struts2&rsv_sug2=1&rsp=1&inputT=7812&rsv_sug4=8644

美文美图



Struts2进阶(一)运行原理及搭建步骤的更多相关文章

  1. Struts1运行原理以及整合步骤

    Struts1  struts1运行步骤 1.项目初始化:项目启动时加载web.xml,struts1的总控制器ActionServlet是一个Servlet,它在web.xml中是配置成自动启动的S ...

  2. Web Service进阶(一)运行原理

    利用清明小假期,温习了一遍Web Service的相关内容,对其工作原理进行了简要总结.以供有需求的朋友和自己日后参考.文章若有不当之处,敬请朋友们提出宝贵建议,以求共勉. Web服务中,我们应该首先 ...

  3. MyBatis进阶(一)运行原理

    初次学习MyBatis,自己花了不少时间,理解一件事物是需要时间的.经过多次反复的理解,你的认知能力就可以得到提升.以下是学习MyBatis的一些理解认识,技术理解上若有不当之处,敬请朋友们提出宝贵意 ...

  4. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  5. Struts2的运行原理和运行与原理

    Struts2 struts2的流程图 运行机制 1.客户端发送请求.通过ActionContextLoader调用FilterDispatcher(struts) 2.FilterDispatche ...

  6. struts1,struts2,hibernate,spring的运行原理结构图

    一.struts1运行原理 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...

  7. Web程序的运行原理及流程(一)

    自己做Web程序的开发也有两年多了 从最开始跟风学框架  到第一用上框架的欣喜若狂 我相信每个程序员都是这样过来的 在大学学习一门语言 学会后往往很想做一个实际的项目出来  我当时第一次做WEB项目看 ...

  8. ASP.NET的运行原理与运行机制 如何:为 IIS 7.0 配置 <system.webServer> 节

    https://technet.microsoft.com/zh-cn/sysinternals/bb763179.aspx 当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的 ...

  9. SSH三大框架合辑的搭建步骤

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

随机推荐

  1. Vue2学习(2)

    按键修饰符 还可以自定义按键修饰符别名,通过全局 config.keyCodes 对象设置: // 可以使用 `v-on:keyup.f1` Vue.config.keyCodes.f1 = 112 ...

  2. C#之Action和Func的用法

    以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...

  3. H3C S3100交换机配置VLAN和远程管理

    一.基本设置 1. console线连接成功 2. 进入系统模式 <H3C>system-view //提示符由<H3C> 变为 [H3C] 3. 更改设备名称 [H3C]sy ...

  4. monitoring with Prometheus

    Prometheus是一款开源的监控工具,支持k8s metrics的数据格式,同时也支持通过k8s api进行服务发现从而实现对自定义的metrics进行监控.下面通过一个示例来介绍如何将Prome ...

  5. ZOJ-2965

    Accurately Say "CocaCola"! Time Limit: 2 Seconds      Memory Limit: 65536 KB In a party he ...

  6. opencv 3.1.0 访问像素值的三种方法(C++)

    三种方法分别问: 指针访问:void colorReduce_ptr(cv::Mat &inputImage, cv::Mat &outputImage, int div); 迭代器访 ...

  7. 转:rabbitmq——用户管理

    原文:http://my.oschina.net/hncscwc/blog/262246?p={{currentPage-1}} 安装最新版本的rabbitmq(3.3.1),并启用managemen ...

  8. opencv之人脸识别

    最近在做一个类似于智能广告投放的项目,简单思路是利用opencv获取摄像头图像,然后调用接口或利用其他一些离线模型进行人脸属性识别,进而投放广告.本篇先简单介绍利用opecv进行人脸识别. # -*- ...

  9. Android给控件添加触摸回调

    Android给控件添加触摸回调 脑补一个场景,一个页面点击某个按钮会弹出PopupWindow,然后点击PopupWindow以外的任意位置关闭 效果图 实现方法 可以在布局的最外层容器监听触摸事件 ...

  10. springMVC源码分析--@ModelAttribute使用及运行原理

    这一篇博客我们简单的介绍一下ModelAttribute的使用和运行原理. 1.首先@ModelAttribute是使用在方法或者上的,当使用在方法上时其作用于本身所在的Controller,在访问C ...