使用Struts2的好处

(1)    第一个好处就是我们不必非得编写一个控制器不可,这使得我们可以把注意力集中在编写各种动作类里的业务逻辑方面。

(2)    Struts2使用了一个基于XML的配置文件来匹配URI和动作。因为xml是文本文件,因此对应用程序的许多修改都用不着在重新编译有关代码。

(3)    对动作类进行实例化和提取用户输入去填充相关动作属性的工作都有Struts2来完成

(4)    Struts2可以对用户输入做一些基本的合法性验证,并在遇到不合法输入时自动地把用户重定向到相关的输入表单。Struts2还内建了许多验证程序。

(5)    Struts2负责调用动作方法,我们可以通过配置文件轻易的该百年某个动作的方法

(6)    Struts2负责检查各个动作的结果和执行该结果。

还有很多好处,用过就知道了。

Struts2中的mvc模型


MVC设计模式有3个关注点:模型、视图、控制器。在Struts2中,他们分别由动作(action)、结果(result)和控制器(FilterDispatcher)来实现。许多mvc框架中控制器的主要作用是来执行业务逻辑,而模型用来封装数据相关的操作。在Struts2中,将业务逻辑和数据处理都放在模型(action)中。

Struts2的工作原理


每一次的动作处理流程中,过滤器调度程序会做一下几件事:

(1)      查询配置管理器,以确定应该根据请求URI调用哪个动作。

(2)      运行为该动作注册的每一个拦截器,其中一个拦截器将请求中的参数填充到动作的属性上

(3)      执行相关的动作方法

(4)      执行相关的动作结果

注意:有些拦截器会在动作方法执行完毕之后、在动作结果执行之前再次执行。

从工作原理图中可以看出,在拦截器和结果页面中都可以通过OGNL来操作ValueStack,ValueStack中存放了与动作相关的数据,拦截器将数据方法ValueStack上,那么在结果页面就可以访问这些数据了。动作中的数据正是通过ValueStack来传递到结果页面中的。

其他几个重要的概念,动作、拦截器都需要我们花时间自习研究。特别是拦截器,它在Struts2中起到了十分重要的作用,框架的很多功能都是通过拦截器来实现的,比如将请求中的参数填充到动作类的属性上正是通过params拦截器实现的。

话不多说,开始动手做吧!就从经典的hello word开始:

首先需要将Struts所需要的包引入到工程中来:

接下来需要在部署描述符web.xml中将Struts2的过滤器引入进来,这样Struts2在我们的工程中才能发挥作用。

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <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> </web-app>

接下来我们就可以编写我们的动作(Action)类:

package action; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String execute() throws Exception { return SUCCESS; } }

还需要在src目录(classpath)下新建一个struts.xml文件,它就是struts2的配置文件,我们需要在这里面配置好我们的Action。

<?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.3.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="hello" class="action.HelloWorld"> <result name="success">/success.jsp</result> </action> </package> </struts>

然后编写input.jsp和success.jsp

input.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>input</title> </head> <body> <form action="hello.action"> userName : <input type="text" name="userName"/> <input type="submit" value="submit"/> </form> </body> </html>

success.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>sucess</title> </head> <body> hello ${userName } </body> </html>

测试:

这样,我们将成功的将Sturts2应用到了工程中,至于Action和interceptor以及result等知识以后学习的时候再去研究,这里先把struts2环境搭建起来,算是迈出了学习struts2的第一步。

周围很多同学都要去参加培训公司的培训,我看了一下培训课程,基本就和我们自己学的差不多。讲三大框架(SSH2)的时间加起来两个月左右,其实我觉得两个月时间自己看应该也能学到不少东西了,培训机构收费那么贵(1万3),最怕就是去了发现老师都是打酱油,还不如花点钱把自己身体养好,精神好学习有劲!

转载于:https://www.cnblogs.com/JPAORM/archive/2012/05/16/2509749.html

struts2学习笔记(二) 初识Struts2相关推荐

  1. struts2学习笔记二--准备struts2的学习和开发环境

    准备struts2的学习和开发环境 1 导包 2 参照开发包自带的例子在web.xml文件中配置 3 参照开发包自带的例子编写Action类和配置struts.xml文件 <struts> ...

  2. Struts2 学习笔记 — 第一个struts2项目

    创建struts2项目 勾选生成web.xml文件 配置项目 打开项目后,首先导入struts2所需的jar包,关于这个,我们可以在下载的struts包中struts-2.3.34/apps中找到st ...

  3. struts2学习笔记之十一:struts2的类型转换器

    Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转 ...

  4. ElasticSearch学习笔记二 初识Elasticsearch

    初识Elasticsearch Elasticsearch简介 Elasticsearch术语及概念 文本(Text) 索引词/精确值(term) 精确值 VS 全文 分析(Analysis)与分析器 ...

  5. Struts2学习总结二

    Struts2框架学习 Struts2学习总结二 1.请求封装参数 1.1.动作类作为实体模型 1.1.1.创建UserAction类 1.1.2.创建struts.xml并编写 1.1.3.编写we ...

  6. Hadoop学习笔记—4.初识MapReduce

    一.神马是高大上的MapReduce MapReduce是Google的一项重要技术,它首先是一个 编程模型 ,用以进行大数据量的计算.对于大 数据量的计算,通常采用的处理手法就是并行计算.但对许多开 ...

  7. C语言学习笔记-P1 初识C语言(2)

    C语言学习笔记-P1 初识C语言(2) C语言学习笔记-P1 初识C语言(2) 一.常量 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 3.枚举常量 二.字符串+转义字 ...

  8. C语言学习笔记-P1 初识C语言(1)

    C语言学习笔记-P1 初识C语言(1) P1 初识C语言(1) 一.什么是C语言 1.定义 2.发展 二.第一个C语言程序 Hello World 三.数据类型 四.变量,常量 未完待续!!! P1 ...

  9. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  10. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

最新文章

  1. MariaDB 宣布成立基金会
  2. LabviewRS232串口通信数据格式问题解析
  3. Mysql主从和redis集群哪个好_Redis的三种模式:主从、哨兵、集群
  4. 《解释的工具:生活中的经济学原理 读书笔记6》
  5. mysql const ref_mysql explain详解
  6. R语言心得-分词包的安装
  7. 怎样用Java自制优秀的图片验证码?这样!
  8. Divide and Sum CodeForces - 1445D(排列组合+逆元)
  9. 儿童学文字编程python_手把手教你python数字知识
  10. Quartus II 8.1 详解--有图---图片详解 【1讲】
  11. 各大网站猪年新春应景LOGO秀
  12. jsp 动态添加一行数据_大数据从入门到深入:JavaEE 之 动态网页开发基础 JSP的数据交互(3)...
  13. Kali Linux Web 渗透测试秘籍 第九章 客户端攻击和社会工程
  14. linux qemu 运行win10,只用ISO镜像,在Linux系统上用Qemu虚拟机给另一块硬盘安装Windows 10...
  15. DelayQueue1.8源码
  16. 超详细!基于树莓派Python编程使用dht11温湿度模块
  17. 教程|Word/WPS永久更改默认背景颜色
  18. 因为计算机丢失user32.dll,电脑丢失USER32.dll怎么处理
  19. 如何成为一名优秀的网络信息安全工程师?
  20. 传奇微端大带宽服务器如何选择

热门文章

  1. 关于在Android中访问和使用到上下文变量
  2. Mysql 存储过程基本语法
  3. 环形数组求最大子数组之和
  4. 【SpringBoot 】 组件管理 + 属性注入
  5. 网络信息安全实验 — 网络攻击技术实验(Kali系统,John、lc7、arpspoof、ettercap、SQL注入...)
  6. 10年老分析师:数据分析不只是一个岗位,更是一种职场必备能力
  7. 几何分布的期望_超几何分布与二项分布的数学期望
  8. python 函数中参数的传递方式(三分钟读懂)
  9. samp服务器信息获取,手把手教你写一个简单的服务器
  10. android每秒 1,在Android 5.1中调度每秒的警报