package cn.hd.dynamic; public class UserAction { public String add(){ System.out.println("添加用户"); return "success"; } public String delete(){ System.out.println("删除用户"); return "success"; } public String update(){ System.out.println("查找用户"); return "success"; } public String set(){ System.out.println("修改用户"); return "success"; }
}
<?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"></constant>--> <package name="user" namespace="/user" extends="struts-default"> <!--action配置详解 name:给action起个名字,决定了访问路径最后的地址 class:访问的是那个类 类的完整的路径名 method:访问了类中的方法 --> <!-- <action name="userActionAdd" class="cn.hd.dynamic.UserAction" method="add"> <result name="success">/hello.html</result> </action> <action name="userActionUpdate" class="cn.hd.dynamic.UserAction" method="update"> <result name="success">/hello.html</result> </action> <action name="userActionDelete" class="cn.hd.dynamic.UserAction" method="delete"> <result name="success">/hello.html</result> </action> <action name="userActionGet" class="cn.hd.dynamic.UserAction" method="set"> <result name="success">/hello.html</result> </action>--> <action name="userAction_*" class="cn.hd.dynamic.UserAction" method="{1}"> <result name="success">/hello.html</result> <allowed-methods>update,add,delete,set</allowed-methods> </action> </package> </struts>
<?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> <!--il8n 国际化 相当于我们在servlet中设置的编码 解决了post请求的中文乱码问题--> <constant name="struts.i18n.encoding" value="utf-8"></constant> <!--extension 使用设置action访问的扩展名 action 可以改为do 为什么要改成go 以为struts1用的是do--> <!--<constant name="struts.action.extension" value="do"></constant>--> <!--developerMode 开发者模式 1.热部署 你修改配置文件后,等一段时间会自动加载 2.提高错误信息的提示(友好的错误提示)--> <constant name="struts.devMode" value="true"></constant> <!-- package :他跟项目里面的包没关系,他是用来管理action--> <!--name:给package起个名字,没什么意义,可以随便命名,一般情况下他的命名是按当前package管理action的分类来命名 package和 package的名字不能重复 namespace:访问路径地址前缀 跟name没有关系 跟其他的package中的 namespace能不能重复,没有要求 extend:继承 继承自struts-default 必须写 名字不能改 固定的写法 他是从struts2核心包中struts-2.2-core下面的 struts-default.xml 这里面配置了很多默认属性 abstract:抽象 生命的一个标志,当前的这个配置文件不能被继承,独立运行,等待被继承 --> <package name="hello" namespace="/hello" extends="struts-default"> <!--action配置详解 name:给action起个名字,决定了访问路径最后的地址 class:访问的是那个类 类的完整的路径名 method:访问了类中的方法 --> <action name="helloAction" class="cn.hd.hello.HelloAction" method="hello"> <!--result:对应的是action类中的method的返回值 名字可以随便写只要和action类中的返回值结果一样就可以,但是情况下使用特定的 success:代表成功 type:dispatcher 转发 redirect 重定向 标签中间的值:跳转页面的地址 --> <result name="success">/hello.html</result> </action> </package> <include file="cn/hd/dynamic/struts01.xml"></include>
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <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> <context-param> <param-name>struts.i18n.encoding</param-name> <param-value>UTF-8</param-value> </context-param> </web-app>