谈到Struts,自己对其不是完全的陌生。
从视频到官方文档多多少少也看过两三遍了。当然,对于我自身来说,看再多也并没有得到实践中的经验。
现在决定转业到Java开发方面,或许,再次的温习多少也会给一些新的启示和思想的启迪吧。
现在和毕业生一起,参加招聘会,网投,希望自己在2010年能够得到一次机会吧。
介绍Struts2及Struts2开发环境的的搭建
Struts2是Webwork的升级版本,虽然它和Struts1拥有相似的名字,但Struts1和Struts2之间的原理有着些许的区别。但两者都是实现了MVC框架。可以说webwork和struts2有更多的相似度和相似的运行机理。
我们知道,软件以及框架的升级都是在fix bug的同时,采用一种更合理更易于扩展的模式进行部分重构,在Struts1中,MVC架构中的action的实现类需要显示继承action类,并且在action类中的execute()参数中,耦合着servlet和Struts1的API,所以,这是一种侵入式设计。这并不是一个好的实践方案。
在Struts2中,增加了许多相比Struts1更为合理的改进。
1.Struts2采用了非侵入式设计,框架让应用与servlet、Struts2之间没有耦合。
2.Struts2采用了拦截器,利用过滤器,可以实现aop设计,例如可以利用它来进行权限的设置
3.Struts2增加了对一些表现层框架的支持
4.Struts2扩大了对包、全局、和action范围内的国际化配置
5.Struts2可以对指定方法进行验证,这与Struts1有些许不同,因为Struts1的验证问题,程序员一般不会采用Struts1框架来做验证工作,而这在Struts2中则广泛被采用
6.Struts2增加了类型转换机制,可以把指定的参数转换成特殊的类型,而在Struts1中则必须要实现beanutil
...
在Struts2中,拥有以上或更多特点,上面简单了列举了一些代表性的特点。
了解Struts2的新特性之后,开始搭建Struts2的开发环境,需要三个步骤:
- 将Struts2需要的jar包导入开发环境当中
- 编写Struts2的配置文件(struts.xml)
- 在web.xml中设置Struts2的启动项(采用Struts2提供的过滤器)(针对Struts2.1.3之前的版本和之后的版本,官方推荐的过滤器有了改变,具体看一下标准文件内容)
最小化必须的jar包
- struts2-core-2.x.x.jar
- xwork-2.xx.jar
- ognl-2.6x.jar
- freemarker-2.3.x.jar
- commons-logging-1.1.x.jar
- commons-fileupload1.2.1.jar
(注意:不要将所有Struts2框架包中lib目录下的所有jar文件全部导入应用环境中,因为默认strust2中包含了很多第三方插件,例如struts-plus*.jar。类似这样的jar包需要第三方jar包才可以正常运行,如不然,在运行Struts2的时候会提示找不到jar包)
struts.xml文件标准内容
- <?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.0.dtd">
- <struts>
- </struts>
web.xml文件标准内容
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <display-name>Struts Blank</display-name>
- <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>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- </welcome-file-list>
- </web-app>
以上两个文件可以直接复制以上代码内容,或者可以再Struts2自带的blank.war示例中找到相应的文件,进行内容拷贝和复制。
注意:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter过滤器执行的时候,会自动运行init方法来读取struts.xml文件以JavaBean形式来保存到内存当中。这样,在每一次请求Struts2框架的时候都是访问内存中的JavaBean类实现Struts2的初始化,而不会重复读取struts.xml文件。
这里我采用的是Struts2.1.8,或许在日后的版本中会有些许改变,请查看最新文档说明。
最后运行一下Strust2框架测试是否配置成功,在web环境下运行服务器查看是否有错误信息输出。
如没有错误信息输出,则可认为环境配置成功。
(这里也有种情况是没有错误信息,但以后进行应用开发的时候出现404问题,一般是web.xml没有设置过滤器的原因,我常犯这样的问题。)