struts2中action业务控制类的几种配置方式
来源:互联网 发布:阿里云服务器怎么设置 编辑:程序博客网 时间:2024/06/02 03:44
struts2通过配置请求与业务控制类之间的对应关系来处理请求,主要有以下四种方式:
- 一个请求对应一个业务控制类的一个方法
- 通过动态调用的方式
- 通过统配符的方式
- 通过注解的方式
1.一个请求对应一个业务控制类的一个方法
<?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="sysmanage" namespace="/sysmanage" extends="struts-default"> <!-- "/sysmanage/add.action"请求匹配UserAction类中的add方法 --> <action name="add" class="com.lyu.struts.sysmanage.action.UserAction" method="add"> <result name="addUser_suc">/views/sysmanage/addUser_suc.jsp</result> </action> <!-- "/sysmanage/del.action"请求匹配UserAction类中的del方法 --> <action name="del" class="com.lyu.struts.sysmanage.action.UserAction" method="del"> <result name="delUser_suc">/views/sysmanage/delUser_suc.jsp</result> </action> <!-- "/sysmanage/update.action"请求匹配UserAction类中的update方法 --> <action name="update" class="com.lyu.struts.sysmanage.action.UserAction" method="update"> <result name="updateUser_suc">/views/sysmanage/updateUser_suc.jsp</result> </action> <!-- "/sysmanage/query.action"请求匹配UserAction类中的query方法 --> <action name="query" class="com.lyu.struts.sysmanage.action.UserAction" method="query"> <result name="queryUser_suc">/views/sysmanage/queryUser_suc.jsp</result> </action> </package></struts>
前台的请求方式:
2.动态调用方法
一个请求匹配某一个具体的类,并不指明具体哪个方法,而是通过!动态调用某个方法。
请求格式:Action的名称!方法名[.action]
<?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="sysmanage" namespace="/sysmanage" extends="struts-default"> <action name="userMgr" class="com.lyu.struts.sysmanage.action.UserAction"> <result name="addUser_suc">/views/sysmanage/addUser_suc.jsp</result> <result name="delUser_suc">/views/sysmanage/delUser_suc.jsp</result> <result name="updateUser_suc">/views/sysmanage/updateUser_suc.jsp</result> <result name="queryUser_suc">/views/sysmanage/queryUser_suc.jsp</result> </action> </package></struts>
前台发送请求的格式:
注:请求的后缀.action可加可不加。
注意:struts2在开启动态方法调用(DMI)的情况下,,可以被远程执行任意命令,安全威胁程度高,如果想开启需将系统常量struts.enable.DynamicMethodInvocation的值设为true,默认为false
3.统配符的方式
利用通配符来简化配置,规范命名。
<?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="sysmanage" namespace="/sysmanage" extends="struts-default"> <!-- *是通配符,代表任意字符串,和正则表达式的*没有关系,{1}代表第一颗星,依次类推 --> <action name="*User" class="com.lyu.struts.sysmanage.action.UserAction" method="{1}"> <result name="{1}User_suc">/views/sysmanage/{1}User_suc.jsp</result> </action> <action name="*_*" class="com.lyu.struts.sysmanage.action.UserAction" method="{1}"> <result name="{1}{2}_suc">/views/sysmanage/{1}{2}_suc.jsp</result> </action> </package></struts>
前台发送的请求方式:
注:
1. 统配符的方式虽然可以减少配置量,但是不利于维护,而且在2.5的新版本当中默认是不支持此种配置方式。
2. 符合最长前缀匹配:即同时使用通配符和明确指明哪个类的方法时,会由具体的那个方法来处理请求 。
4.注解的方式
导入三个jar包:
- asm-3.3.jar
- asm-commons-3.3.jar
- struts2-convention-plugin-2.3.16.3.jar
在Action类上加注解:
package com.lyu.struts.sysmanage.action;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Namespace;import org.apache.struts2.convention.annotation.ParentPackage;import org.apache.struts2.convention.annotation.Result;// 相当于package的extends@ParentPackage("struts-default")// 相当于package的namespace@Namespace("/")public class LoginAction { private String loginName; private String password; public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } // login请求所对应的业务处理类,name为视图名称,location为返回的页面 @Action(value="login",results={ @Result(name="success",location="/main.jsp"), @Result(name="fail",location="/error.jsp") }) public String execute() { System.out.println(loginName); System.out.println(password); if (loginName.equals("admin")) { return "success"; } else { return "fail"; } }}
注:不推荐,因为注解还是java代码,如果项目有变动还得重新编译。
阅读全文
0 0
- struts2中action业务控制类的几种配置方式
- struts2业务控制类(Action)获取页面请求参数的几种方式
- Struts2配置action的几种方式
- Struts2的Action中方法的几种访问方式
- struts2中 Action获取表单参数的几种方式
- struts2中 Action获取表单参数的几种方式
- struts2中 Action获取表单参数的几种方式
- struts2中 Action获取表单参数的几种方式
- Struts2.x中action的几种配置方法
- Struts2中action映射的四种配置方式
- struts2--Action的四种配置方式
- 在Struts2中,Action可以以几种不同的方式来工作
- struts2 的Action获取表单的几种方式
- Struts2中action用注解的方式配置
- struts2中action的配置
- struts2 中Action的配置
- Struts2 Action 配置方式
- Struts2中Action获得表单数据的几种方法
- 前端学习资料大全
- [BZOJ2179]-大数乘法-FFT模板
- SVN不完全指南(安装&配置)
- 堆(优先队列)的构建以及基本操作实现
- 数据结构实验之图论二:图的深度遍历
- struts2中action业务控制类的几种配置方式
- Android
- 全面理解Java内存模型
- 二叉树的链式存储
- SVN客户端与服务端安装
- Canvas 入门6 requestAnimationFrame实现动画
- Linq查询数据集取得排序后的序列号(行号)
- 欢迎使用CSDN-markdown编辑器
- 合并HDFS和本地文件系统中的小文件