Struts 2简介:
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。(百度百科)
可以说struts2的基因来自于webwork,webwork的基因来自于xwork。
优点:
1.在软件设计上struts2没有像struts1那样跟servlet API和struts API有着紧密的耦合,struts2的应用可以不依赖于servlet API和struts API。struts2的这种设计属于无侵入式设计,而struts1却属于侵入式设计。
2.struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。
3.struts2提供了类型转换器,可以把特殊的请求参数转化成需要的类型。在struts1中,如果我们要实现同样的功能,就必须向struts1的底层实现BeanUtil注册类型转换器才行。
4.struts2提供支持多种表现层技术,如:jsp、freemarker、velocity等。
5.struts2的输入校验可以对指定的方法进行校验,解决了struts1长久之痛。
6.提供了全局范围、包范围和Action范围的国际化资源文件实现。(百度百科)
Struts2开发环境搭建:
开发前需搭建环境,这里我用的是struts-2.3.16这个版本总共分三步:
第一步:引入jar包
第二步:从struts2的源码示例中复制struts.xml到项目src目录下
第三步:修改web.xml配置文件
源码,直接复制进去即可:
<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>
这样环境就差不多配好了,不过每次写都需要去struts2源码中去找,太麻烦,所以,可以把核心的jar包 配置文件都放在一个文件夹中
第一个小程序,先看看结果
点登陆后 取到表单的值
先写一个index.jsp 在body 里写一个表单 post提交
然后写jsp对应的action LoginAction.java name和age 是成员变量 生成get set 方法 写一个 execure方法
返回一个success
最后在struts.xml配置文件中注册
Name的名字随便起 namespace命名空间 result 中拿到LoginAcyion.java中的返回值
把表单提交到welcome.jsp中
写一个welcome.jsp
用EL表达式
E L(Expression Language) 目的:为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
这样就完成了一个简单的struts2 MVC框架