Action的三种访问方式(八)

来源:互联网 发布:k歌之王65首歌名知乎 编辑:程序博客网 时间:2024/06/03 17:51

一、传统方式

1.1 代码

package com.ken.action2;import com.opensymphony.xwork2.ActionSupport;public class CustomerAction extends ActionSupport {private static final long serialVersionUID = -3159892583595670390L;public String save() {System.out.println("保存客户...");return NONE;}public String delete() {System.out.println("删除客户...");return NONE;}}
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><h3>传统的配置文件方式</h3><a href="${pageContext.request.contextPath }/saveCust.action">保存客户</a><a href="${pageContext.request.contextPath }/delCust.action">删除客户</a></body></html>

1.2 配置

<!-- Action的访问,传统方式 --><package name="demo2" namespace="/" extends="struts-default"><action name="saveCust" class="com.ken.action2.CustomerAction"method="save" /><action name="delCust" class="com.ken.action2.CustomerAction"method="delete" /></package>

1.3 运行效果




二、通配符方式

2.1 代码

package com.ken.action2;import com.opensymphony.xwork2.ActionSupport;/** * 通配符的方式 * */public class LinkmanAction extends ActionSupport {private static final long serialVersionUID = -6387584399632189176L;public String save() {System.out.println("保存联系人...");return NONE;}public String delete() {System.out.println("删除联系人...");return NONE;}}
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><h3>传统的配置文件方式</h3><a href="${pageContext.request.contextPath }/saveCust.action">保存客户</a><a href="${pageContext.request.contextPath }/delCust.action">删除客户</a><h3>通配符的方式(应用比较多)</h3><a href="${pageContext.request.contextPath }/linkman_save.action">保存客户</a><a href="${pageContext.request.contextPath }/linkman_delete.action">删除客户</a></body></html>

2.2 配置

<?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><package name="default" namespace="/" extends="struts-default"><!-- 配置Action --><action name="hello" class="com.ken.action.HelloAction" method="sayHello"><!-- 配置跳转的页面,路径的写法:在struts2框架中,不管是转发还是重定向都不用写项目名 --><!-- name中的ok叫做逻辑视图名称 --><result name="ok">/demo1/success.jsp</result></action><!-- POJO --><action name="demo1Action" class="com.ken.action.Demo1Action"></action><!-- 实现Action接口 --><action name="demo2Action" class="com.ken.action.Demo2Action"><result name="success">/demo1/success.jsp</result></action><!-- Action类继承ActionSupport --><action name="demo3Action" class="com.ken.action.Demo3Action"></action></package><!-- Action的访问 --><package name="demo2" namespace="/" extends="struts-default"><!-- 传统方式 --><action name="saveCust" class="com.ken.action2.CustomerAction"method="save" /><action name="delCust" class="com.ken.action2.CustomerAction"method="delete" /><!-- 通配符的方式 --><action name="linkman_*" class="com.ken.action2.LinkmanAction"method="{1}"></action></package></struts>

2.3 运行效果



通配符的优点是,减少了Action标签的数量。

三、动态访问的方式

3.1 代码

package com.ken.action2;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {/** * 动态方法访问 */private static final long serialVersionUID = 2843394265982624974L;public String save() {System.out.println("保存用户...");return NONE;}public String delete() {System.out.println("删除用户...");return NONE;}}
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!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=UTF-8"><title>Insert title here</title></head><body><h3>传统的配置文件方式</h3><a href="${pageContext.request.contextPath }/saveCust.action">保存客户</a><a href="${pageContext.request.contextPath }/delCust.action">删除客户</a><h3>通配符的方式(应用比较多)</h3><a href="${pageContext.request.contextPath }/linkman_save.action">保存客户</a><a href="${pageContext.request.contextPath }/linkman_delete.action">删除客户</a><h3>动态方法访问的方式</h3><a href="${pageContext.request.contextPath }/user!save.action">保存用户</a><a href="${pageContext.request.contextPath }/user!delete.action">删除用户</a></body></html>

3.2 配置

关键:开启常量的配置
<!-- 开启动态方法访问 --><constant name="struts.enable.DynamicMethodInvocation" value="true" />
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><!-- 开启动态方法访问 --><constant name="struts.enable.DynamicMethodInvocation" value="true" /><package name="default" namespace="/" extends="struts-default"><!-- 配置Action --><action name="hello" class="com.ken.action.HelloAction" method="sayHello"><!-- 配置跳转的页面,路径的写法:在struts2框架中,不管是转发还是重定向都不用写项目名 --><!-- name中的ok叫做逻辑视图名称 --><result name="ok">/demo1/success.jsp</result></action><!-- POJO --><action name="demo1Action" class="com.ken.action.Demo1Action"></action><!-- 实现Action接口 --><action name="demo2Action" class="com.ken.action.Demo2Action"><result name="success">/demo1/success.jsp</result></action><!-- Action类继承ActionSupport --><action name="demo3Action" class="com.ken.action.Demo3Action"></action></package><!-- Action的访问 --><package name="demo2" namespace="/" extends="struts-default"><!-- 传统方式 --><action name="saveCust" class="com.ken.action2.CustomerAction"method="save" /><action name="delCust" class="com.ken.action2.CustomerAction"method="delete" /><!-- 通配符的方式 --><action name="linkman_*" class="com.ken.action2.LinkmanAction"method="{1}" /><!-- 动态方法访问的方式 --><action name="user" class="com.ken.action2.UserAction" /></package></struts>

3.3 运行效果



源码下载