struts配置通配符*来匹配方法,实现动态调用
01:web.xml中配置,启动struts2
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- 01:启动struts2框架 -->
<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> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
02:编写action类
package com.self.action;
/**
* 02:写相应的处理方法
*/
public class HelloWorldAction { private String message; public String helloworld_1(){
this.message="helloworld_1";
return "helloworld_1";
}
public String helloworld_2(){
this.message="helloworld_2";
return "helloworld_2";
} //为属性注入值,需要提供set方法
public void setMessage(String message) {
this.message = message;
}
//在页面显示值,需要get方法
public String getMessage() {
return message;
} }
03:配置struts.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>
<!-- 01:将.action访问,改为.do和.action -->
<constant name="struts.action.extension" value="do,action" />
<!-- 02:指定默认编码,相当于HttpServletRequest的setCharacterEncoding方法,也作用于freemarker、velocity的输出 -->
<constant name="struts.i18n.encoding" value="UTF-8" /> <include file="department.xml"/>
</struts>
04:编写引入的department.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>
<package name="dep" namespace="/department" extends="struts-default">
<!-- 用通配符*来指代方法名,{1}代表第一个通配符所代表的字段:这里代表方法 -->
<action name="helloworld_*" class="com.self.action.HelloWorldAction" method="{1}" >
<result name="helloworld_1">
/helloworld_1.jsp
</result>
<result name="helloworld_2">
/helloworld_2.jsp
</result>
</action>
</package>
</struts>
05:编写界面1
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head> <title>显示</title>
</head> <!-- 第4步:显示 -->
<body>
<BR>
<BR>
<center>
将页面放在WEB-INF下面,这样用户直接访问不到<BR> <BR> 为action的属性注入值: ${message}
<BR>
</center>
</body>
</html>
06:编写界面2
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head> <title>显示</title>
</head> <!-- 第4步:显示 -->
<body>
<BR>
<BR>
<center>
将页面放在WEB-INF下面,这样用户直接访问不到<BR> <BR> 为action的属性注入值: ${message}
<BR>
</center>
</body>
</html>
07:访问路径1、2
http://localhost:8080/Struts2_01/department/helloworld_helloworld_1.action
http://localhost:8080/Struts2_01/department/helloworld_helloworld_2.action
struts配置通配符*来匹配方法,实现动态调用的更多相关文章
- Struts 之 通配符 路径匹配 常量用法 配置默认值
Struts 框架学习 Action的开发的几种方式 方式1 : 继承ActionSupport 如果使用Struts校验功能,必须继承此类 方式2 : 实现Action接口 方式3 :不继承 ...
- new关键字在虚方法的动态调用中的阻断作用
关于new关键字在虚方法动态调用中的阻断作用,也有了更明确的理论基础.在子类方法中,如果标记 new 关键字,则意味着隐藏基类实现,其实就是创建了与父类同名的另一个方法,在编译中这两个方法处于动态方法 ...
- struts2学习笔记(2)action多个方法的动态调用
①在struts.xml中的action添加method <action name="addhelloworld" method="add" class= ...
- struts2学习笔记之八:Action中方法的动态调用
方法一:action名称+!+方法名称+后缀 Action类中增加addUser()和delUser()方法, package com.djoker.struts2; import org.apach ...
- struts2_7_Action类中方法的动态调用
(一)直接调用方法(不推荐使用) 1)Action类: private String savePath; public String getSavePath() { return savePath; ...
- java根据方法名动态调用invoke方法!
public class Activity { public void deal(String name, long id) { System.out.println(name + id + &quo ...
- Struts.xml中Action的method与路径的三种匹配方法
原文 http://blog.csdn.net/woshixuye/article/details/7734482 首先我们有一个Action——UserAction public class Us ...
- java:struts框架2(方法的动态和静态调用,获取Servlet API三种方式(推荐IOC(控制反转)),拦截器,静态代理和动态代理(Spring AOP))
1.方法的静态和动态调用: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- 10、一个action中处理多个方法的调用第一种方法动态调用
我们新建一个用户的action package com.weiyuan.test; import com.opensymphony.xwork2.ActionSupport; /** * * 这里不用 ...
随机推荐
- UNION 查询中的排序
MSSQL 不允许在UNION查询中使用 ORDER BY 因此,当我们需要这种功能的时候,就需要绕一些弯路. 比如有一张学生表student 和教师表 teacher , 我们要查询所有的教师学生的 ...
- 为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
http://blog.csdn.net/caryaliu/article/details/49284185 需要在被观察的属性所在的类里面实现一些方法,对开发者不友好,一般不建议使用,这里mark一 ...
- angularJS商品购物车案例
<!DOCTYPE html> <html ng-app="shopping"> <head lang="en"> < ...
- HBASE架构解析(二)
http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html HBase读的实现 通过前文的描述,我们知道在HBase写时,相同Cell( ...
- Interview with BOA
1. BFS 2. QuickSort 3. PCA, 1000 articles, so many factors, how to reduce factors. 4. newton's metho ...
- 诊断SQLSERVER问题常用的日志
这里主要有两个: (1)Windows事件日志 (2)SQLSERVER ErrorLog 1.Windows事件日志 Event Log 作为一个Windows开启和管理的服务程序,Windows会 ...
- iOS多线程知识总结--GCD
iOS多线程知识总结--GCD 1. iOS中苹果提供4钟方案来帮助我们实现多线程: (1) 纯C语言的pthread,偏底层,需要程序员手动管理线程的生命周期,基本不用. (2) OC语言的NSTr ...
- [BS-05] init、initWithFrame和initWithCoder的区别
init.initWithFrame和initWithCoder的区别 1.Xib方式自定义UIView(指任意的UI控件) 使用Xib文件,就是我们所常用的“拖控件”的方式.如果我们使用了该方法创建 ...
- T4自动生成数据库C#实体类学习(1)
第一个测试的Demo <#@ template language="C#" debug="True" hostspecific="True&qu ...
- Vue.2.0.5-模板语法
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...