博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2入门之准备工作
阅读量:5338 次
发布时间:2019-06-15

本文共 3454 字,大约阅读时间需要 11 分钟。

使用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     @Override5     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     @Override5     public String execute() throws Exception {6         return "success";7     }8 }

    4)、这里有个疑问,为啥每次都要写execute方法呢?其实这在后面配置struts.xml文件的时候,如果action标签不配置method属性的话,action会默认

     找execute方法的返回值,然后根据result标签去找要访问的具体页面或者是action。

 3、配置struts.xml文件:  

1 
2 5
6
8
9
/hello.jsp
10
11
12

 

 4、设置过滤器,在WEB-INF/web.xml文件中写:  

1 
2
5 6
Dog-Filter
7 8
9
struts2
10
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
11
12 13
14
struts2
15
/*
16
17

 截至到目前,准备工作已经完成,在地址栏中输入: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的全局结果配置和局部结果配置:先上代码,如下:

 

/hello.jsp
orders
/world.jsp

 

 

 

这个配置全局结果页面是有这么一种需求的时候,方法的返回值一样,前往的页面也一样,此时没有必要分别去对一个这样的action去配置结果页,用一个全局结果配置就能搞定。用的最多的,404页面,500页面等。

另外如果方法的返回值是空,可以在struts.xml中的action标签下不配置result标签,因为返回值为空嘛,也就意味这不准备往下再访问其他页面了。

 

转载于:https://www.cnblogs.com/ZT-SummerRain/p/7075286.html

你可能感兴趣的文章
Linux目录结构
查看>>
LeetCode-Strobogrammatic Number
查看>>
luoguP3414 SAC#1 - 组合数
查看>>
五一 DAY 4
查看>>
(转)接口测试用例设计(详细干货)
查看>>
【译】SSH隧道:本地和远程端口转发
查看>>
win8.1安装Python提示缺失api-ms-win-crt-runtime-l1-1-0.dll问题
查看>>
图片点击轮播(三)-----2017-04-05
查看>>
直播技术细节3
查看>>
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
Spring mvc初学
查看>>
有意思的代码片段
查看>>
C8051开发环境
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
01_1_准备ibatis环境
查看>>
windows中修改catalina.sh上传到linux执行报错This file is needed to run this program解决
查看>>
JavaScript中的BOM和DOM
查看>>