首页 > 代码库 > (一)Struts2 基础
(一)Struts2 基础
一、Struts简介
1.1 历史
- 虽然Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
1.2 struts与servlet的区别
1.2.1 区别一:
- servlet是单例,线程安全,每次请求都是由第一个请求到来后建立的那个servlet招呼,所以servlet一般没有成员变量;struts2是通过一个servlet负责招待每个到来的线程,并为这个线程向action工厂要一个全新的action,并把它们俩放进一个叫Threadlocal的容器中,直到线程断掉,这些东西才被gc这个收垃圾的收走。所以struts2是多线程的。
1.2.2 区别二
- servlet中的JSTL和EL对字符串和集合的操作支持很弱,而struts中的OGNL对集合的操作非常强大, 但是OGNL表达式的运行性能没有JSTL和EL高。
1.2.2 区别三
1.3 体系结构
体系结构:1、Web浏览器请求一个资源。
2、过滤器Dispatcher查找方法,确定适当的Action。
3、拦截器自动对请求应用通用功能,如验证和文件上传操作。
4、Action的execute方法通常用来存储和重新获得信息。
5、结果被返回到浏览器。
1.4 基于servlet的MVC设计模式与基于Struts框架的设计模式
二、初步使用Struts框架
2.1 下载
进入apache的官方网:http://struts.apache.org/download.cgi#struts209 下载struts2的GA完整版,本文下载Struts 2.3.32为例。
下载完后,解压到本地磁盘,该文件夹包含如下文件结构:
l apps:该文件夹下包含了struts 2 的示例应用。
l docs:struts2的相关文档,包含struts2的快速入门、struts2的帮助文档及API文档等内容。
l j4:该文件夹下包含了让struts2支持JDK1.4的JAR文件。
l lib:该文件夹下包含了struts2框架的核心类库,以及struts2的第三方插件类库。
l src:该文件下包含了struts2框架的全部源代码。
2.2 Struts框架的使用初步:
A:Apache下载struts.2.1.8.rar包。
B:进入apps目录,解压空工程。
C:将struts2的基本jar包拷到工程的lib目录中。
D:配置web.xml,加载struts2的过滤器
we.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>
E:加载struts的配置文件struts.xml到src目录。
- 在空工程的apps\WEB-INF\classes包里找到struts.xml,并复制这个xml文件到工程的src目录下。
F:编写Struts中的Action类。并且类中必须有返回值为String的execute方法。
ActionFirst.java:
package com; public class ActionFirst { /** * 必须要有String的execute方法 * @return */ public String execute(){ System.out.println("将执行execute方法"); return "index"; } }
- exeucte是用于执行用户请求(Request)和响应用户(Response)的操作。
用于接收GET与POST的请求。
G:将Action类配置到struts.xml中。
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="http://www.mamicode.com/false" /> <constant name="struts.devMode" value="http://www.mamicode.com/true" /> <package name="default" namespace="/" extends="struts-default"> <action name="xx" class="com.ActionFirst"> <result name="index">/index.jsp</result> </action> </package> </struts>
- 解析:当url为/xx 时,会执行com.ActionFirst,并调用该Action中的execute方法,该方法返回一个String值为index,再与《result》中的name属性相匹配,匹配到就跳转到/index.jsp页面。
H:页面访问Action,执行exceute方法,根据execute方法的返回值到Action到result中
进行名称的匹配,从而请求转发或者重定向到页面。
结果:
(一)Struts2 基础
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。