struts2入门之准备工作
Posted MySummerRain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2入门之准备工作相关的知识,希望对你有一定的参考价值。
使用struts2开发项目分四个步骤:
1、导入jar包
2、创建action
3、配置struts.xml
4、配置过滤器
下面分别介绍以上四步骤:
首先struts2是由struts1进化而来,但是二者差别很大,struts2集成了struts1和webwork的优势,详细差别请参考:http://blog.csdn.net/john2522/article/details/7436307/
I、导入jar包到WEB-INF/lib中。具体是哪些jar包呢?首先下载struts2的压缩包,官网上自己下载,然后解压,会有
以下几个目录:
然后打开apps这个文件夹,会看到struts2-blank.war这个压缩文件,
进而将这个文件继续解压,会出现WEB-INF这个文件夹,找到WEB-INF/lib下的所有jar包,拷贝到项目WEB-INF/lib下面;
II、创建action有多种方式,我这里介绍三种吧:
1)、直接新建一个类,这个类中要有execute方法,返回值为String。比如:
1 public class DogAction{ 2 public String execute(){ 3 return "success"; 4 } 5 }
2)、实现Action接口,并实现execute方法,比如:
1 import com.opensymphony.xwork2.Action; 2 3 public class DogAction implements Action { 4 @Override 5 public String execute() throws Exception { 6 return "success"; 7 } 8 }
3)、继承ActionSupport这个类,比如:
1 import com.opensymphony.xwork2.ActionSupport; 2 3 public class DogAction2 extends ActionSupport { 4 @Override 5 public String execute() throws Exception { 6 return "success"; 7 } 8 }
4)、这里有个疑问,为啥每次都要写execute方法呢?其实这在后面配置struts.xml文件的时候,如果action标签不配置method属性的话,action会默认
找execute方法的返回值,然后根据result标签去找要访问的具体页面或者是action。
3、配置struts.xml文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <package name="dogDemo" extends="struts-default" namespace="/"> 8 <action name="dog" class="com.cczhao.struts.DogAction"> 9 <result name="success">/hello.jsp</result> 10 </action> 11 </package> 12 </struts>
4、设置过滤器,在WEB-INF/web.xml文件中写:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 5 6 <display-name>Dog-Filter</display-name> 7 8 <filter> 9 <filter-name>struts2</filter-name> 10 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 11 </filter> 12 13 <filter-mapping> 14 <filter-name>struts2</filter-name> 15 <url-pattern>/*</url-pattern> 16 </filter-mapping> 17 </web-app>
截至到目前,准备工作已经完成,在地址栏中输入:localhost:8080/test/dog.action,正常的话会跳转到hello.jsp页面中去。当然这里有写步骤我也省略了,
比如我的项目名称是test,hello.jsp是在webContent目录下。
5、接下来详细说一下struts.xml文件中的几个标签:根标签是struts,在根标签下,可以有多个package标签,在package标签中有三个属性,本别是name、extends、namespace。name属性本身对于某个项目来说影响不大,你爱怎么命名就怎么命名,但是如果在这个struts标签内有多个package时,这个name属性不能重复;extends表面就是继承的意思,在这里是为了说明package标签下的类具有action的功能,这个值也是固定的,就是extends="struts-default";namespace属性它和接下来的
action中的name属性共同构成访问路径,例如在上面的例子中访问路径就是:localhost:8080/项目名称/dog ,其实namespace属性是有默认值的,默认就是”/“,上面的例子中可以把这个省略掉;action标签中的name属性就不说了,它和上面package中的namespace共同构成访问路径;class属性就是指定类的全路径;
result标签中name属性是和类中的方法的返回值对应的,DogAcion这个类中默认有个execute方法,它的返回值是"success"的话,会找到请求最后去访问哪个页面。本例中,就是成功的话访问/hello.jsp这个页面。
另外在配置过滤器时候,还可以配置常量;contant标签一般只有两个属性,name、value.
===============================分割线=======================================
struts.xml文件中的标签介绍还不完善,这里进行一个补充:
action标签除了有name属性和class属性之外,还有method属性,用来指定当访问这个action的时候要去具体执行哪个方法,然后根据返回值再去找指定的页面后者是action;
result标签除了有name属性外,还有type属性,这个type属性指定了请求访问具体页面的方式,比如是转发(dispatcher),还是重定向(redirect),这两个参数
对访问页面有效果,如果是要访问action的话,分别是chain(转发)和redirectAction(重定向)。
========================================分割线========================================
另外再说一下result的全局结果配置和局部结果配置:先上代码,如下:
<struts> <package name="test02" extends="struts-default" namespace="/"> <global-results> <result name="success">/hello.jsp</result> </global-results> <action name="book" class="com.cczhao.struts.action.BookAction"> <result name="success" type="redirectAction">orders</result> </action> <action name="orders" class="com.cczhao.struts.action.OrdersAction"> <result name="success">/world.jsp</result> </action> </package> </struts>
这个配置全局结果页面是有这么一种需求的时候,方法的返回值一样,前往的页面也一样,此时没有必要分别去对一个这样的action去配置结果页,用一个全局结果配置就能搞定。用的最多的,404页面,500页面等。
另外如果方法的返回值是空,可以在struts.xml中的action标签下不配置result标签,因为返回值为空嘛,也就意味这不准备往下再访问其他页面了。
以上是关于struts2入门之准备工作的主要内容,如果未能解决你的问题,请参考以下文章