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. 图像融合之拉普拉斯融合(laplacian blending)

    一.拉普拉斯融合基本步骤 1. 两幅图像L,R,以及二值掩模mask,给定金字塔层数level. 2. 分别根据L,R构建其对应的拉普拉斯残差金字塔(层数为level),并保留高斯金字塔下采样最顶端的 ...

  2. YARN整理

    YARN整理 1.YARN的介绍 是一个资源管理.任务调度的框架,主要包含三大模块: ResourceManager(RM):负责所有资源的监控.分配和管理 ApplicationMaster(AM) ...

  3. 小白到大神,Python 密集知识点汇总

    Python 基础 1. 变量 你可以把变量想象成一个用来存储值的单词.我们看个例子. Python 中定义一个变量并为它赋值是很容易的.假如你想存储数字 1 到变量 "one" ...

  4. 启动Docker容器

    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动. 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器. 新建并 ...

  5. Java中使用CountDownLatch进行多线程同步

    CountDownLatch介绍 在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法: 1.synchronized关键字进行同步. 2.Lock锁接口及其实现类ReentrantL ...

  6. Android开发技巧——使用Drawable实现小红点

    在产品的设计中,总难免需要我们开发去实现各种各样的小红点,小红点,小红点. 通常,我们可能会这样做: 用一个View实现小红点,放在相对布局里,设置好内边距或外边距,让它位于图片的右上角. 或者是给图 ...

  7. Git之(五)远程管理

    开篇就提到过,Git是一个分布式版本管理系统.但是到现在为止,我们所有的演练都是在本地Git仓库.如果想与他人合作,还需要一个远程的 Git 仓库.尽管技术上可以从个人的仓库里推送和拉取修改内容,但我 ...

  8. 剑指Offer——Java实现栈和队列的互模拟操作

    剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列   题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型.   思路:其实就是把队列正常入 ...

  9. Android艺术开发探索第三章——View的事件体系(上)

    Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...

  10. Dynamics CRM 站点地图中URL的&号编码问题

    现在大多数人对站点地图的操作都通过工具来执行,但如果你使用原始的编辑XML方式,并且你的SubArea中对应的不是某个Entity而是一串URL时,要注意了你的URL中如果带有与符号即&,那就 ...