学习笔记,不断更新。
1)1、 配置struts的三个步骤:1》找到开发struts2应用需要用到的jar文件;2》编写struts2的配置文件;3》在web.xml中加入struts2 MVC框架启动配置。
2) 开发struts2应用必须导入的jar文件:
struts2-core-2.1.8.1.jar:struts2框架的核心类库
xwork-core-2.1.6.jar:XWork类库,struts2在其上构建
ognl-2.7.3.jar:对象图导航语言(Object Graphic Navigation Language),struts2通过其读写对象的属性。
freemarker-2.3.15.jar:struts2的UI标签的模板使用FreeMarker编写
commons-logging-1.0.4.jar:ASF出品的日志包,struts2使用这个日志包来支持Log4J和JDK的日志记录。
commons-fileupload-1.2.1.jar:文件上传组件,2.1.6版本后加入此文件。
3)2、Action配置中的各项默认值:
<package name="hello" namespace="/test" extends="struts-default">
<action name="helloworld" class="package1.HelloWorld" method="execute">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
1》 如果没有为action指定class,则默认是ActionSupport
2》 如果没有为action指定method,默认执行action中的execute方法
3》 如果没有指定result的name属性,默认为success。
4) 3、 result配置的各种视图转发类型及全局视图:
1》 dispatcher:默认值,内部请求转发,可以转发到WEB-INF目录下的jsp页面。
2》 redirect:浏览器重定向,不能定向到WEB-INF目录下的jsp页面。
在result中还可以使用${属性名}访问action中的属性,表达式中的属性名对应action中的属性。
3》 redirectAction:浏览器重定向到action。
如果重定向的action在同一包中,<result type="redirectAction">helloworld</result>
如果重定向的action不在同一包中,
<result type="redirectAction">
<param name="actionName">helloworld</param><!-- 指定action的名字 -->
<param name="namespace">/test</param> <!-- 指定命名空间 -->
</result>
4》 plaintext:显示原始文件,当需要原样显示jsp文件源代码的时候可以运用这种类型。
Struts读取文件时默认用系统默认的GBK编码方式读取文件,所以要注意文件的存放编码方式和读取文件的编码方式不同的话,可能会出现乱码。
<result type="plainText">
<param name="location">/xxx/jsp</param>
<param name="charSet">UTF-8</param> <!-- 读取文件用的编码 -->
</ result>
5》 全局视图。在包中加入<global-results name="xxxx">/xxx.jsp</global-results>,那么这个包中的每个action都可以使用这个全局视图了。
如果想要在两个或两个以上的包中使用此视图,通过包与包的继承实现。代码如下:
<package name="base" extends="struts-default">
<global-results name="xxxx">/xxx.jsp</global-results>
</package>
<package name="hello" namespace="/test" extends="base">
</package>
6》 Tomcat服务器接收到中文是以ISO8859-1编码的,所以,以get方式传递的中文参数要先得到ISO8859-1二进制数组,然后得到我们想要的编码方式,比如UTF-8.
5) 6、指定struts2处理的请求后缀:
1》 默认使用.action后缀访问Action;其默认后缀可以通过常量”struts.action.extention”进行修改,例如:可以配置struts2只处理以.do为后缀的请求路径:
在struts-xml文件中设置:
<struts>
<constant name=” struts.action.extention” value=”do”>
</struts>