10、一个action中处理多个方法的调用第二种方法method的方式
在实际的项目中,经常采用现在的第二种方式在struct.xml中采用清单文件的方式
我们首先来看action
package com.bjpowernode.struts2; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private String messsage; public String getMesssage() { return messsage; } public void setMesssage(String messsage) { this.messsage = messsage; } public String add() throws Exception { messsage = "添加用户"; return SUCCESS; } public String del() throws Exception { messsage = "删除用户"; return SUCCESS; } public String update() throws Exception { messsage = "修改用户"; return SUCCESS; } public String list() throws Exception { messsage = "查询用户"; return SUCCESS; } }
接下面我们看看struct.xml的配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 会提供更加友好的提示信息 --> <constant name="struts.devMode" value="true"/> <!-- 禁用动态调用 --> <!-- <constant name="struts.enable.DynamicMethodInvocation" value="false"/> --> <package name="user-package" extends="struts-default"> <!-- name="addUser"用在jsp中调用的。名字可以随便起,但是method中的名字add必须和action中的函数名字一一对应 --> <action name="addUser" class="com.bjpowernode.struts2.UserAction" method="add"> <result>/success.jsp</result> </action> <action name="delUser" class="com.bjpowernode.struts2.UserAction" method="del"> <result>/success.jsp</result> </action> <action name="updateUser" class="com.bjpowernode.struts2.UserAction" method="update"> <result>/success.jsp</result> </action> <action name="listUser" class="com.bjpowernode.struts2.UserAction" method="list"> <result>/success.jsp</result> </action> </package> </struts>
接下面我们来看看访问的jsp页面
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <a href="addUser.action">添加用户</a><br> <a href="delUser.action">删除用户</a><br> <a href="updateUser.action">修改用户</a><br> <a href="listUser.action">查询用户</a><br> </body> </html>
跳转成功之后的jsp sucess.jsp页面
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> ${messsage } </body> </html>
上面就完成了配置,但是上面的配置存在一个很大的问题,就是在struct.xml文件中配置量较大,我们可以使用通配符的方式解决这个问题,其他的文件都不用修改,只需要修改struct.xml文件就可以
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- 会提供更加友好的提示信息 --> <constant name="struts.devMode" value="true"/> <!-- 禁用动态调用 --> <!-- <constant name="struts.enable.DynamicMethodInvocation" value="false"/> --> <package name="user-package" extends="struts-default"> <!-- name="addUser"用在jsp中调用的。名字可以随便起,但是method中的名字add必须和action中的函数名字一一对应 --> <action name="*User" class="com.bjpowernode.struts2.UserAction" method="{1}"> <result>/success.jsp</result> </action> </package> </struts>
当在index.sjp点击添加用户的时候,访问的是addUser.jsp,那么在struct.xml进行匹配,得到的*代表的就是add,method中的{1},1表示的是得到第一个*的值,就是add,然后就访问action中对应的add函数,减少了代码的配置
总结:
Struts2的Action中包含多个方法如何调用(使用通配符)
具体配置
<action name="*User" class="com.bjpowernode.struts2.UserAction" method="{1}">
<result>/{1}Success.jsp</result>
</action>
在Struts2的<action>标签class、name、method和result标签上都可以使用通配符
通配符的作用就是为了减少配置量,通配符需要建立在约定的基础上
posted on 2017-12-24 10:51 luzhouxiaoshuai 阅读(337) 评论(0) 编辑 收藏 举报