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. 运行eclipse java virtual machine launcher 什么错误

    在MyEclipse的安装目录eclipse有个eclipse.ini文件原来的配置如下:-showsplashcom.genuitec.myeclipse.blue.product.ide--lau ...

  2. vmware迁移到openstack的一些坑

    title: 安全平台迁移 tags: 新建,模板,小书匠 grammar_cjkRuby: true --- 前言 主要有三个坑: 一是如果原先虚拟机没有安装virtio驱动,要设置设备驱动为ide ...

  3. easyui datagrid属性和方法

    本文可以当做api来使用 使用方法(Usage Example) 从现有的表单元素创建数据表格,定义在html中的行,列和数据. <table class="easyui-datagr ...

  4. let 和 const 命令

    let 命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a / ...

  5. Go 错误处理

    Go 语言通过内置的错误接口提供了非常简单的错误处理机制. error类型是一个接口类型,这是它的定义: type error interface { Error() string } 我们可以在编码 ...

  6. Android 性能优化(一)内存篇

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/54377370 本文出自:[余志强的博客] 本博客同时也发布在 Hoo ...

  7. Java中使用long类型实现精确的四则运算

    引子 Effective Java 2nd Edition 第48条建议:如果需要精确的答案,请避免使用float和doble.float和double类型主要是为了科学计算和工程计算而设计的.他们执 ...

  8. 计算机网络之域名系统DNS

    域名系统DNS 域名系统DNS(Domai NameSystem)是因特网使用的命名系统,用于把便于人们使用的机器名字转换为IP地址. 许多应用层软件经常直接使用域名系统,但计算机的用户只是间接而不是 ...

  9. 【SSH系列】Hibernate映射 -- 继承映射

    开篇前言 在前面的博文中,小编介绍了hibernate中的映射,一对一,一对多,多对多,单向,双向等,今天这篇博文,小编主要来介绍一下hibernate中的继承映射,小伙伴都知道在C#中,如果想要实现 ...

  10. [CSDN_Markdown] 使用LaTeX写矩阵

    简介 LaTeX 的公式功能非常强大,一次性讲全不是件容易的事情.将LaTeX 的这些功能分成较小的相互独立的部分来讲,一方面方便大家单独查阅:另一方面,所有[CSDN_Markdown]相关的文章都 ...