struts2(一)基本配置与Action的访问方法

Struts2简介:

Struts2是java的一个现在比较流行的web框架,主要用来实现servlet的主要功能,是一个控制层(control)的框架,除此之外还实现了其他的很多有用功能。

Struts2的基本配置与运行流程:

1,要配置Struts2,首先要导入其所需要的jar包如下图所示:可从官网下载,将其粘贴到WEB-INF——>lib下面。

jar包导入完毕之后,需要在src下面新建一个struts.xml文件夹(有什么用在后面流程中会讲到),下面在src下新建一个包,在包中新建一个类,此类可以是一个简单的POJO对象,我们称之为action类(类名命名规则一般为类名+Action:如HelloAction)。

2,此类推荐实现Action接口或者继承ActionSupport接口(implements Action;extends ActionSupport),推荐使用ActionSupport方法,因为里面提供了数据校验和国际化方法。如下图所示:

简单的POJO类:

继承了ActionSupport方法的类:

至此类的书写已经完成,具体类里面的方法如何书写后面会讲到。

3,配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>	
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  
  <!-- 修改常量 -->
  <init-param>
      <param-name>struts.action.extension</param-name>
      <param-value>action</param-value>
  </init-param>
  
  </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
 <!--   <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>-->
</web-app>

如上图所示,首先配置filter过滤器,过滤器中org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter为struts2的jar包中的方法,并且配置好filter-mapping。这些基本是固定的。

4,配置struts.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
  <!-- Struts2为了管理Action的配置,通过包进行管理 -->
  <!-- 配置struts2的常量 -->
  <constant name="strurs.action.extension" value="action"></constant>
  
  <package name="default" extends="struts-default" namespace="/">
    <action name="Hello" class="com.ahut.demo1.HelloAction" >
    <result name="success">/Demo1/success.jsp</result>
    </action>
  </package>
  <include file="com/ahut/demo2/struts_demo2.xml"></include>


</struts>

如上图所示,package中的name值可以任意,namespace为路径分割,最好配置成/,action中name属性为前面自己写的action的名字可以与类名不一致,class为action的类路径,中间是.分割不是/分割。result为结果集,中的name属性为要跳转的页面的参数,应和上图中HelloAction的return "success"值一致,/Demo1/success.jsp为跳转页面的路径。最后的include为此action中包含其他的action的书写方法,以便对action方便管理。

至此,一个简单的struts2的基本配置就已经完成了,将其部署到tomcat中就可以运行了,比书写servlet简单的多。

5,页面配置

注意,在href的路径中Hello.action中的Hello必须与actiom.xml文件中配置的action中的name值一致。

6,运行流程

首先执行的是web.xml中的过滤器,在过滤器的方法中找到所要执行的action.xml文件,根据页面中的action名字去寻找action.xml文件的与此同名的action,并根据后面的路径去寻找该类,执行该类中的默认方法(excute()方法),找到return的"success"值,返回action.xml中寻找该类中与之对应的路径,跳转到对应页面。

通过method方法对action进行访问:

上述过程中使用的是action中的默认方法进行访问的,所以在action.xml文件中不需要配置相应方法名。如果方法较多,或者想访问自己写的方法则需要在action.xml中配置method方法,如下所示:

<action name="userFind" class="com.ahut.demo2.UserAction" method="find" ></action> 
<action name="userUpdate" class="com.ahut.demo2.UserAction" method="update"></action>

如果方法较多需要书写很多个action,过于麻烦。官方推荐我们使用通配符来访问methon方法。如下所示:

<!-- 通配符的方式 -->
<action name="product_*" class="com.ahut.demo2.PrroductAction" method="{1}" ></action> 

name中的*号表示从前端页面传递过来的action值,后面的mathod中的{1}为占位符,表示前面第一个*的值,其值必须要与Action类中的方法名一直,用这种方法还可以解决多个Action的问题。

前端页面地址书写如下所示:

 <h1>Action的访问方法</h1>
 <a href="${pageContext.request.contextPath}/product_find.action">查询商品</a>
 <a href="${pageContext.request.contextPath}/product_update.action">修改商品</a>
 <a href="${pageContext.request.contextPath}/product_delete.action">删除商品</a>
 <a href="${pageContext.request.contextPath}/product_save.action">保存商品</a>

对于method方法的书写还有一种动态地配置方法,该方法更加简便,但是容易混淆所以不在这里介绍了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值