Struts2中使用DMI(动态方法调用)
2016-04-19 21:25
483 查看
Struts2中使用DMI(动态方法调用)
(这是从网上找的视频资料,学习的过程中真理的)
Action执行的时候并不一定要执行execute方法,
可以在配置文件中配置Action的时候用method=来指定执行哪个方法------会产生太多的action,不推荐用,
也可以在url地址中动态指定(动态方法调用-DMI)------推荐
1.配置Action (method方式)
url为:http://localhost:8080/militaryShop/user/userAdd
<struts>
<constant name="struts.person" value="true"/>
<!-- 当调用userAdd这个action的时候,会调用对应的class对象的add方法-->
<package name="user" extends="struts-default" namespace="/user">
<action name="userAdd" class="com.militaryShop.struts2.user.action.UserAction" method="add">
<!--成功,则返回的页面-->
<result>/user_add_sucess.jsp</result>
</action>
</package>
</struts>
2.DMI方式配置xml
2.1 使用"!"方式,即action名称!方法名称
url为:http://localhost:8080/militaryShop/user/user!add
add是Action中的方法
<struts>
<constant name="struts.personMode" value="true"/>
<!-- 会调用对应的class对象的add方法-->
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="com.militaryShop.struts2.user.action.UserAction">
<result>/user_add_sucess.jsp</result>
</action>
</package>
</struts>
2.2 使用通配符,可以将配置量降到最低。不过,一定要遵守“约定优于配置”的原则。
2.2.1
<struts>
<constant name="struts.personMode" value="true"/>
<!-- 会调用对应的class对象的add方法-->
<package name="actions" extends="struts-default" namespace="/actions">
<!--method 里的{1}表示的是,比如有个action叫Useradd,这时候method的{1}就等于add。-->
<!--url为:http://localhost:8080/militaryShop/actions/Useradd-->
<action name="User*" class="com.militaryShop.struts2.action.UserAction" method="{1}">
<!--返回的页面是useradd_sucess.jsp-->
<result>/user{1}_sucess.jsp</result>
</action>
2.2.2
<!--{1}对应的是第一个*号,{2}对应第二个*号,便于模块化的区分-->
<!--url为:http://localhost:8080/militaryShop/actions/User_add,注意,这时候的类型就是UserAction类-->
<action name="*_*" class="com.militaryShop.struts2.action.{1}Action" method="{2}">
<!--返回iude页面是user_add_success.jsp-->
<result>/{1}_{2}_success.jsp</result>
</action>
</package>
</struts>
开发中的约定:(一般由项目经理)
规定---项目名怎么定,项目里的Action名字怎么定,Action里增、删、改、查的方法名怎么定
1.当都能匹配时,首先匹配最精确的;精确度一样时,看前后顺序,匹配前面的
2.当有的模块需要单独做一些配置,比如Filter过滤器,可以做一些精确的配置,然后用通用的配置所有的。
如果有不对的地方,请朋友们指出来,谢谢!
(这是从网上找的视频资料,学习的过程中真理的)
Action执行的时候并不一定要执行execute方法,
可以在配置文件中配置Action的时候用method=来指定执行哪个方法------会产生太多的action,不推荐用,
也可以在url地址中动态指定(动态方法调用-DMI)------推荐
1.配置Action (method方式)
url为:http://localhost:8080/militaryShop/user/userAdd
<struts>
<constant name="struts.person" value="true"/>
<!-- 当调用userAdd这个action的时候,会调用对应的class对象的add方法-->
<package name="user" extends="struts-default" namespace="/user">
<action name="userAdd" class="com.militaryShop.struts2.user.action.UserAction" method="add">
<!--成功,则返回的页面-->
<result>/user_add_sucess.jsp</result>
</action>
</package>
</struts>
2.DMI方式配置xml
2.1 使用"!"方式,即action名称!方法名称
url为:http://localhost:8080/militaryShop/user/user!add
add是Action中的方法
<struts>
<constant name="struts.personMode" value="true"/>
<!-- 会调用对应的class对象的add方法-->
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="com.militaryShop.struts2.user.action.UserAction">
<result>/user_add_sucess.jsp</result>
</action>
</package>
</struts>
2.2 使用通配符,可以将配置量降到最低。不过,一定要遵守“约定优于配置”的原则。
2.2.1
<struts>
<constant name="struts.personMode" value="true"/>
<!-- 会调用对应的class对象的add方法-->
<package name="actions" extends="struts-default" namespace="/actions">
<!--method 里的{1}表示的是,比如有个action叫Useradd,这时候method的{1}就等于add。-->
<!--url为:http://localhost:8080/militaryShop/actions/Useradd-->
<action name="User*" class="com.militaryShop.struts2.action.UserAction" method="{1}">
<!--返回的页面是useradd_sucess.jsp-->
<result>/user{1}_sucess.jsp</result>
</action>
2.2.2
<!--{1}对应的是第一个*号,{2}对应第二个*号,便于模块化的区分-->
<!--url为:http://localhost:8080/militaryShop/actions/User_add,注意,这时候的类型就是UserAction类-->
<action name="*_*" class="com.militaryShop.struts2.action.{1}Action" method="{2}">
<!--返回iude页面是user_add_success.jsp-->
<result>/{1}_{2}_success.jsp</result>
</action>
</package>
</struts>
开发中的约定:(一般由项目经理)
规定---项目名怎么定,项目里的Action名字怎么定,Action里增、删、改、查的方法名怎么定
1.当都能匹配时,首先匹配最精确的;精确度一样时,看前后顺序,匹配前面的
2.当有的模块需要单独做一些配置,比如Filter过滤器,可以做一些精确的配置,然后用通用的配置所有的。
如果有不对的地方,请朋友们指出来,谢谢!
相关文章推荐
- struts2 jquery 打造无限层次的树
- 使用struts2+Ajax+jquery验证用户名是否已被注册
- struts2入门Demo示例
- 通过Ajax两种方式讲解Struts2接收数组表单的方法
- Struts2+Hibernate实现数据分页的方法
- ajax交互Struts2的action(客户端/服务器端)
- struts2 spring整合fieldError问题
- Struts2的s:radio标签使用及用jquery添加change事件
- 使用MyEclipse 开发struts2框架实现登录功能(结构教程)
- struts2 中文乱码的解决办法分享
- Struts2访问servlet分享
- struts2单个文件上传的两种实现方式
- struts2+jsp实现文件上传的方法
- struts2+jquery实现ajax登陆实例详解
- struts2中一个表单中提交多个请求的例子(多个提交按钮)
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- Java(基于Struts2) 分页实现代码
- 从搭建Struts2 开发环境说起
- JAVA+Struts2获取服务器地址的方法
- 使用maven+eclipse搭建struts2开发环境