struts2配置标签以及实现自己第一个hello
2018-05-14 本文已影响0人
小漫画ing
一、配置标签
- 介绍在配置文件中主要有三个标签package、action、result以及标签中的属性。
标签package
- 类似于代码包,区别不同的action,必须首先写package标签,在package里面才能配置action。
package中的属性:
(1)、name属性:
- name属性的值和功能本身没有关系,再一个配置文件可以写很多个name,但是不能重复,也不能写中文,在一个配置文件中package可以有多个,name属性值不能相同。
(2)、extends属性:
extends="struts-default"
- 属性值是固定的,固定值叫struts-default
- 写了这个属性之后,在package里面配置的类具有action功能。
(3)、namespace属性 -
namespace属性和 值和action里面的name属性值构成访问路径。
image.png
里面的红色框框中的属性值构成了访问路径。
标签action
action标签配置action访问路径。
action标签属性:
(1)name属性:
- namespace属性和 值和action里面的name属性值构成访问路径。
- 在package标签里面写多个action标签,但是action的name属性值不能相同。
(2)、class属性: - action全路径
(3)、method属性: - 比如,action里面默认执行的方法是execute(),但是在action里面其他方法。让action里面多个方法执行 ,使用method进行配置。
标签result
这个标签是根据不同的返回值,配置到不同的路径中去。
result标签中的属性
(1)、name属性
-
和返回值一样
image.png
(2)type属性:
- 配置如何到路径中去(转发或者重定向)
- type属性的默认值是转发。(转发的特点:地址不会变)
二、实现自己第一个hello
首先第一步需要去配置自己web.xml,里面一部分是需要配置过滤器的。
1、web.xml的位置如下:
web.xml
具体的代码见下面:
</welcome-file-list>
<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>
</web-app>
当然配置好过滤器,一定不能忘的一件事就是“买包包”,因为自己已经犯了两次这样的错误,具体会用到的包如下:
切记不能忘
做完这两个后,这两部分代码就可以暂时关闭了。
2、那么接下来就是要写主体部分了:
(1)、在进入正题之前我们需要知道的就是action的编写方式:
首先Action有三种编写方式:
第一种:创建普通类,这个不继承任何类,不实现任何接口。
代码如下:
package com.manman.itcast;
public class Hello {
}
第二种:创建一个类,实现接口Action
package com.manman.itcast;
import com.opensymphony.xwork2.Action;//一定不能导错包。
/*
* 实现接口
*/
public class HelloAction implements Action {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return null;
}
}
需要注意的是:
image.png
我们可以用接口中常量作为返回值
第三种:创建类,继承类ActionSupport(最常用的方法)
package com.manman.itcast;
import com.opensymphony.xwork2.ActionSupport;
/*
* 继承类
*/
public class actionsupport extends ActionSupport {
}
配置Struts.xml*******在action中一般默认执行execute()方法,但是我们知道有时候我们需要访问的方法可能会很多,那该如何处理,如下:
- 访问action中方法(重点),有三种方式:
第一种:使用action标签的method属性,在这个属性里面写执行的action的方法。
<action name="orders" class="cn.itcast.from" method="add">
我们来看一下它的实现结果:
hello
第二种:使用通配符的方法实现。
在action标签里面name属性,name属性值里面写*
(1)、* 理解,表示匹配任意内容
比如访问hello , * 可以匹配到
访问add,*也可以访问到。
<!-- 通配符的方法实现
name属性值里面写符号*
(1)执行action里面的add方法,访问book_add,使用book_*可以匹配到,*相当于add
(2)执行action里面的update方法,访问book_update,使用book_*可以匹配到,*相当于变成update
上面两个路径使用book_*可以匹配到
method属性写*值
下面的1表示第一个*
-->
<action name="book_*" class="com.manman.itcast" method="{1}"></action>
<result name="SUCCESS">from.jsp</result>
第二种方法的实现结果:
HELLO
第三种:动态访问实现(一般不怎么用)