struts2--Action的四种配置方式
2016-07-07 21:50
309 查看
struts2--Action的四种配置方式
第一种:普通配置:执行action类中的execute()方法1.新建一个Web Project,命名为struts-action
2.引入struts支持
3.配置struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="hello" namespace="/" extends="struts-default"> <!--普通action配置,默认执行Action类中的execute()方法--> <action name="hello" class="com.etc.action.HelloAction"> <result>/hello.jsp</result> </action> </package> </struts>
4.新建com.etc.action包,在包下新建HelloAction1.java
package com.etc.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport{
public String execute() throws Exception { System.out.println("你好"); return Action.SUCCESS; }
}
5.新建hello.jsp
<html> <body> hello! </body> </html>
6.右键运行,访问hello.action
运行结果:页面跳转到hello.jsp,输出hello,在控制台输出:你好!
注意:页面虽然跳转,但是URL地址栏并没有发生改变。。
第二种:使用method配置,不同的action名称进行控制(常用)
相对于第一种方式进行代码的比较
1,2步骤不变
3.struts.xml文件改为:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="hello" namespace="/" extends="struts-default"> <!-- 使用method配置,不同的action名称进行控制。--> <action name="hello" class="com.etc.action.HelloAction2" method="m1"> <result>/success.jsp</result> </action> <action name="hello2" class="com.etc.action.HelloAction" method="m2" > <result>/success.jsp</result> </action> </package> </struts>4.在com.etc.action下新建HelloAction2.java
package com.etc.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction2 extends ActionSupport { public String m1() { System.out.println("执行了m1方法"); return Action.SUCCESS; } public String m2() { System.out.println("执行了m2方法"); return Action.SUCCESS; } }
5.步骤不改变。
6.运行:访问hello.action 运行结果:页面跳转到hello.jsp页面,输出hello,控制台输出:执行了m1方法
访问hello2.action 运行结果:页面跳转到hello.jsp页面,输出hello,控制台输出:执行了m2方法
第三种方式:使用通配符*
相对于第二种方式,进行代码的比
c2a7
较
1.2步骤不变
3.struts.xml文件改为:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="hello" namespace="/" extends="struts-default"> <!-- 使用通配符*--> <action name="*" class="com.etc.action.HelloAction3" method="{1}"> <result>/success.jsp</result> </action> --> </package> </struts>4.在com.etc.action下新建HelloAction3.java
package com.etc.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction3 extends ActionSupport { public String select() { System.out.println("执行了select方法"); return Action.SUCCESS; } public String update() { System.out.println("执行了update方法"); return Action.SUCCESS; } }5.步骤不改变
6.运行:访问select.action 页面跳转到hello.jsp,输出hello,控制台输出:执行了select方法
访问update.action,页面跳转到hello.jsp,输出hello,控制台输出:执行了update方法
补充:struts.xml中的通配符*比较灵活
1)
<action name="*_*" class="com.etc.action.HelloAction3" method="{1}"> <result>/success.jsp</result> </action>
这样的配置之后,匹配的是第一个*号的方法(第二个*的值可以任意)
比如:访问select_update.action,执行的是select方法
访问update_create.action.执行的是update方法
2)
<action name="*_*" class="com.etc.action.HelloAction3" method="{1}abc"> <result>/success.jsp</result> </action>访问select_update.action,执行的是selectabc方法。
第四种方式:动态方法调用
1.首先在struts.xml中配置常量参数如下:
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>2.在struts.xml中配置相应的action如下:
<!-- 第四种方法:使用!号通配符 --> <action name="hello" class="com.etc.action.HelloAction"> <result>/hello.jsp</result> </action>3.编写action类,HelloAction如下:
package com.etc.action; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport{ private static final long serialVersionUID = -4677141561291687131L; @Override public String execute() throws Exception { System.out.println("你好,世界!"); return Action.SUCCESS; } public String hello(){ System.out.println("你好,世界2!"); return Action.SUCCESS; } public String add(){ System.out.println("增加方法"); return Action.SUCCESS; } public String update(){ System.out.println("修改方法"); return Action.SUCCESS; } public String select(){ System.out.println("查询方法"); return Action.SUCCESS; } }4.编写hello.jsp页面如下:
<body> <h1 align="center">你好,世界!</h1> </body>5.运行:http://localhost:8080/struts-action/hello!hello.action---->执行的是HelloAction类的hello()方法 http://localhost:8080/struts-action/hello!select.action---->执行的是HelloAction类的select()方法 http://localhost:8080/struts-action/hello!add.action---->执行的是HelloAction类的add()方法
结论:我们可以发现,只是配置了一个名字叫做hello的action,对应的类是HelloAction,我们便可以通过!加上方法名
执行这个类的所有方法,当然,前提是要在struts.xml中配置相应的常量struts.enable.DynamicMethodInvocation为true
相关文章推荐
- java 泛型
- Exception in thread "main" java.lang.NoClassDefFoundError: scala/Predef
- java web(三)
- Ant path 匹配原则 spring
- [置顶] spring整合cxf实现webservice发布
- java之原子性
- Java 8 指南
- MAC Android Eclipse开发环境设置
- Spring学习笔记-1:SpringMVC hello world
- java中的时间转化问题
- struts2--使用域模型完成注册的简单实例
- Java反射
- 鸽巢(计数)排序--java
- ---Servlet(一)简介
- Spring+Log4j+ActiveMQ实现远程记录日志
- jdk安装详解
- Spring注解
- Java编程思想之容器目录
- 算法游戏-黑洞数(java实现)
- Java语言基础【1】