struts2 codebehind + actionPackages 实现Action零配置
1。jar包:struts2-codebehind-plugin-2.2.1.1.jar
2。struts.xml:<!-- codebehind中查找action的返回结果资源时的默认文件夹 -->
<constant name="struts.codebehind.pathPrefix" value="/pages/" />
3。web.xml:
<!-- struts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>
com.ext.emp.struts2,com.demo.stu.struts2
</param-value>
</init-param>
</filter>
<!-- action过滤 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- 静态资源过滤 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>
web.xml部分
4。
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAABgCAIAAAAPeQ5AAAAIPUlEQVR4nO2cXWgUVxTHJ7BQkPrQxigVAm0IlLZCJIrYPjRS+yLkpSKK9EEQaSFVY7aUpli1JURtQ9AGbaPGqCRqsImNrGv9iG0+bLQQTEyiiSaSpFrzYSJrmrizu7OZPoyMm7kfe3d27s7c9fw4DHd37z3nzt5z/zPsnERSI6hv7ios96JW39ylEqjbnEl5SUGSJEmS0IYO9h19bFTPqB/0I9Tzy8ms8y8s92I7kd5vKV4mj5TLI+W+3v0jHXsHGwt767e1FC+LNGJgZIXUiNXVPzIcDd1oJza7DykEo7fkxpgEihIKh0PhcEiSJEUJKUrQ/+w/UhI0FGfLvhsUayjOJgYmJwFp/dCxtBNDnBicY2O9nBiTwO+f9vun/f4pSZKePZt66nv879A9YhLsypZH6ilWueFNYmBCEqALjH2JDqFfMrBJANcCDWMSTE8/NXytA32dWhLU1hwyHM/vypYHj+tW586imDEwTupZlIBxB5NGgRKgGJNgcvKJzzc+MTEsSdLY6IMHg3f77rSRlKDO/Z7cu1+zOneWPFiumToTUP/Z1F2SppnamhNTEmB7Rr5k2cSMSQCoaBI8HLrb39ve2/W3JEl3brV2tjW237hCSoKTmzPl3r1y7946d5bW0EydCXSXpAXHb6utmWpN2qUtaZjA1CSgCzv2fax/yihIAh1jEnS2/dn6x9nmizVNF083XTzd+PuplstnSElQuSFd7iisc2fJHd9FmrkkwF7dsS/RtsGzwY+hjbp9yZn1LcT6O8G+1W/UubPkjkKDsSQB4Bzi3QqVn72NGiSBWBCTQLv/NwkkgVDwuSjOBNTWnEtb0jRTW3O4RAEsAu6MAE6XA0AoQAkAUALAEiVoKVmmW/zegMQT149FahxFJYBzsK2oBHAOxKKScDjEtagEcA7EohK/fyoBRSXoUxzSO5RHR4wPlwESthWVqGx1fzE1AHMQi0rGHz8yXVTyyfvpqGFiE6oHsBsd7UDpA8QEsaikp/O66aKSVUsWrlm+eM3yxcHgTa2xaulCTGxTu5yy2JAH5uBSVJKzaL62/Prxw0XzMbHJ9wRoPQhFLeCeIE64FJUsyXxdW3vN1ixfvDTzNUzsGP98ANaYE1yKSt5Jn2tQgnfT5xoDM+9d2OW84fLs4K0Fcwz3BBkL5pj2BvCGy/ZKn/cKajwCAZYAGgtwuBzAM2jhACUAQAkAe5UAqlEcgjVKANUoQmONEkA1itBYowRQjSI0lilBwqpRns+b+gAJHinFhGVKYGM1CnrENgASlilBgqtRDI+bVUiCOLBMCWypRol8CUlgGsuUIJHVKCrhn4+os9ce7gkYsed3gjirUViA5WfHtm/KdDUKCyADMeGsP0iFahRbcNZegWoUW3CWEgC24KAkgLSzC2ddDkzT3tFy4Hxpvsdz4Hxpe0eL3dMRDMGU4Lq3wGD3ey63d7Tkezx9bcfl4Rv5Hs8H3i7Ig5gQTAmuewsCQUW3YCgcDIVP3LqlTg30dB786/5ub/fh9QfPrCussXumIiGYElzzfOkPhHQLKeGQEs73eGrv3qlqPFp9YVXl0Y+/2HFs/VZMEiT9o0XT5yXY19F07utpOaSbpgT5Hs9HTUPrT3p3fL7yq63bVm/9rWB7KXa4EA8UEj83wZTg6tlvJqdDBmu4em5d1bWV+7o3FtSu3Vi1dmPRkV9+wA6HJMBHTHC8OLlUu903HYq01IwVqRkr+npuuksOf7q5LM+9/9DPRaTh2CRgqUYh9UH96M+xDA3UD/adqNEpp4b1EzkNkh/HKQH96D2zc2IyGGlaEjCGQJPA0ECP2AajZ3QtozbQKOzqRXFC9yOYEtSf/n7MF4g0PQlSi25LKaVSSmlq0W3ScNJSRe4YNb4koL9D1w/sQPompkQkuY0hCZx5T/BrdfGjJ4FI05NAX34pBX9XqDKsK+8kiDof0pRYwEs9yz9/YQzgEE6d2PNwPPBwPJCasUJPgk3b9ugdpHlHXs2/iR1L2lJRlUBFdhXdv6FN6kOZFV0tSDOhu6XIiWBKUHXsx6ExeWhM1gRAs+raK9qn9GtB0kNPU5qMcZgMR45VlA6MygOjcnXtFT0DBkZlu+dlJyx3DPQ+ginBkcP7+of9qGmfSiml0oITnKeZhAimBOXlP2HN7nmJjWBKAPAAkgAQ7XJAAopK4kEwJYCiEh4IpgRQVMIDwZQgCYpK+E3AtFvBlCA5ikpM/7THCcGUIDmKSoRJAmfizKISUoPkh/1ZEbYP6dSwfujzed6Z5BSKSiidTXhmbKBR2NWL4oTuRzAlcH5RiYklRzexwTNlE2PnEDmQMsMXH5E8OvOewPlFJfyUICp4qYeikkhIWyqqEuh96HNDRYUSiyRF2HDoENIEWAJhBpJOyZlKIFBRCfsOTkxEmoxxmAxHRCkqoWw7W2LR+wimBFBUwgPBlACKSnggmBIAPIAkAES7HJCAopJ4EEwJoKiEB4IpARSV8EAwJXB4UUnifyCyBMEmnRxFJU5DMCVIjqISpyHYd+GEohKKc8ojnARcjEzjOCUwV1QyMRl05VW41n6rGSkEmgSGBnrENqL6x3Z2rA45azZRIRWVjPkCrryK3GYlt1mJNQkM+1W1KAlUnDYw+kkwjlMCOtiiEldehWa5uxVXWT9FD6Kuq7VJwBjUdpw1m6hgi0pceRUH7im5zUrmBcW1s8FV1q+lgmEs/XpPUQKVvKfREJRwcE8QHdNFJS8uBDsbdFWgXBT4QV9gBy6/hkOnRQJbVKLrf26zwnJ7aDksW9yxMqAKpwTYopLwzEz/sN+VV+Eq67dLA4Tmf4/CCD6/PJzvAAAAAElFTkSuQmCC" alt="" />
1)Demo!doUpdate.action
2)Demo!update.action?empNo=<s:property value="empNo"/>
3)Demo!delete.action?empNo=<s:property value="empNo"/>
4)localhost:8080/empDemo/emp/Demo!create.action
5。
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAAgCAIAAAAwrRUNAAAFaUlEQVR4nO1aX0xbVRg/PJks7kG3jGQJITN7QDYJFTC4LMjrnpiGJvi2+KSYxZJsWZkkI2WocTaSoKzGWUpiGbpFFxYCE2dpDe2akC6UMTpQ2R2rbh3VC/1zS2/x+HDwcnfPvae37b1t6e4vX07uOf2+c757vt/97mn7AahBAxFApt7Vka+yW6DjaHl2hhqKBHIpIh8Ok8559hVO+vWV/K7DpFN8RQ2qgkSRa645o2UMl2uuOYKV88yhJYc16B0Keod8Vy5YDW38rvPMIaVvIRuA/1FoR3YASHtktIxlNI7gOF0d9A5trE2GZ4cXJi5aDW38ruN0dWb+ZRVFshX/U40laZGGIqkUu7m5JakUm0olmXiETJHJjuqgdyg8OxyeHV64YUEU4bqTHRpFdhjSUIRhYgwTY5gow0Tj8ega/SRILZIpMn6yynflwsLExYUbFo/N1NnSzO+On6ySdIUHwQi/S77ArURn5sYJNyI1LWGkJJGGIrHYGngay0t+RBH0HYffQghD3kHKrg95ByGEVkNbZ0szEquhDUm/vlLqO47oRuNBlQozITfImZmgwLFQ0EqtXmJIQ5H19b9pejUc/mv1yZ+hxysr9+8t3Z0hZBHKroepOcquhxCi82lnS/Obr1fgIu5Nugcdj4QciuAzy4moIEloFBGB0TL2kLr3W+B2YM674PfcnXX7Z6Zu35qUokho6rNEoPt4FUgEukNTZgghOq4eq9vf2ljb2libTPrQxbH6/SSfMskHMinCH5cZTtGlNYo8BaNlzD/jcP/yg2tixDlx2TlxeWp8+NefvpeiCGXXcxRBiQQdV984vA+Rg2ubDu8TcUX6xMAFRvTFL2pIODQIXp2cDsElKE0RUZdKCYr9LkJdN4anTiQC3f5vmhKB7rDjxIPrRo/NZDW01R18ETEDSWtjbf3BF1S7o7yitMmBoNgdUnb95h+msOvU8SoQdp3a/N1E2fW2tw/06ytfrtgtyCLVFbuVWreAeBZSCFTwPxp3b82/KwN0oG/si7foQB98MODurYEQdhwtP1C+S3AWeal8V66Oa8gXFHsCgh6bu7eGL0GPDX1Usfc5XJRaV4PaKPEkqSF3qF4MkLVhWvi+PKJrn9ZaQqvIPhdRFhn9tFZUpPR17dOakEWRuBRRFvnxE91GMiWQO6PvSbEEPSuaSEkJZpGrH7+KU2TxZte8BEsKHoPiF0XiokoWya4WaeSjOmYjhcRDhaveGXi/7+f7tz5fvNl1Z/Td73rrBPooi/BHFNnTvFmpPVVRZ5HsapG+7amPMWyMYeMJlqNILMHGE2wswdrP1wv08W2FOe+vnBlyXyVvokg0Vcki/FokAIDMWqRBU0Mkzkbi7Hp8myKRGBuJsZE4azM1CPS5swhUlCJpJ8l9lfxIsWcRrhYJACCzFunSuQY6wtKRJB3dpggdTdIR9p8oe+ncawJ9PGaCQf44boUTAl2L6uBTkVklZ3U5BJVaGh8nTJgj1MoiudQira5vIIqQVyFkEcEF3qZVJpMPj4Rol3BBYElG8xBmLvYswtUiAQAyrUV6TG9TZE/PPCgzgzLznp55gQl5K/lqeCvHSiqi+CBUhyJ8l6RIjOuIfpQL1MoiXC0SACCLWqR22zSiCEcOUGYWWMnJIvjOEpTTzpNniohaoXsn6+h2RBbJsRYJHUS2vdz79fMf+ARWUo8+/mzhLb7d5GvRybNQELgkP4tAaSpI7UBRZ5Hca5HG/Q+pUGLLRbG3DCzRX1fhM/K7SEYQrUVafpRYfsSQDQseTmWZocZNKRKgwv9HI1qL9KGhqcvQtOVimRmUD+GGJZlFFJTSySKEWiQyCh6D4hdFAvQfvYy/uz2jtTkAAAAASUVORK5CYII=" alt="" />
这里action的命名最好加上Action后缀,否则可能与pojo中的Demo同名(不会影响去找"Demo"这个Action:DemoAction)
package com.ext.emp.struts2.emp;
public class DemoAction {
// search show
public String execute(){
// get list
if (pagiParam == null) {
pagiParam = new PagiParam();
}
try {
emps = empService.findToPage(empName, sortCol,
PureUtils.isAsc(sortOrder), pagiParam, false);
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
public String update(){
emp = empService.findById(empNo);
return "update";
}
public String doUpdate(){
empService.update(emp);
return execute();
}
public String create(){ //go to create page
return "create";
}
public String doCreate(){
empService.save(emp);
return execute();
}
public String delete(){
Emp emp = new Emp();
emp.setEmpNo(empNo);
empService.delete(emp);
return execute();
}
}
action主要代码
注意:
web.xml中actionPackages下com.bonc.ext.emp.struts2不能写成com.bonc.ext.emp.struts2.emp;
struts.xml限定了jsp的目录是在WebRoot/pages/下;
web.xml限定了action目录是在struts2/下;
对应一个请求localhost:8080/empDemo/emp/Demo!create.action,
会解析并判断是否有emp/DemoAction这个action,然后跳到create方法,这个方法返回“create”字符串,
然后解析并判断(Demo+‘-’+create+'jsp',及Demo-create.jsp)是否有emp/Demo-create.jsp在/pages/下,有的话即把这个页面返回给浏览器
struts2 codebehind + actionPackages 实现Action零配置的更多相关文章
- 从struts2.1开始Convention零配置
从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该 ...
- struts2 Convention插件零配置,使用注解开发
从struts21开始,struts2不再推荐使用codebehind作为零配置插件,而是改用Convention插件来支持零配置.与以前相比较,Convention插件更彻底. 使用Conventi ...
- 菜鸟学Struts2——零配置(Convention )
又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...
- 13、零配置Struts2开发
Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...
- Struts2基于注解的Action配置
使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了. 要使用注解方式,我们必须添加一个额外包:struts2-convention-plu ...
- Struts2零配置介绍(约定访问)
从struts2.1开始,struts2 引入了Convention插件来支持零配置,使用约定无需struts.xml或者Annotation配置 需要 如下四个JAR包 插件会自动搜索如下类 act ...
- struts2 零配置
一.新建一个web项目,命名为:struts2 二.导入strut2所需的jar包 所需jar下载:http://pan.baidu.com/s/1dDxP4Z3 三.配置struts2的启动文件,在 ...
- Struts2的零配置和rest插件
1. 零配置使用struts2-convention-plugin-2.3.16.jar,rest使用struts2-rest-plugin-2.3.16.jar 1.1 Struts2的conven ...
- struts2 convention-plugin实现零配置
零配置并不是没有配置,而是通过约定大于配置的方式,大量通过约定来调度页面的跳转而使得配置大大减少.使得Action等配置不必写在Struts.xml中. convention-plugin的约定 1. ...
随机推荐
- Codis的了解和操作
1.Codis的基本架构 2.Codis各组件 Codis-server:就是redis服务,可以使用codis修改的reids和原生的redis Codis-proxy:客户端连接的代理服务,客户端 ...
- SourceTree的基本使用-git on mac
SourceTree的基本使用 学习了:https://www.cnblogs.com/tian-xie/p/6264104.html
- git-for-windows 安装无图标的问题
git-for-windows.ico 安装无图标的问题 一. 问题表现: 桌面图标与右建菜单图标,所是未知文件的图标, 二. 问题解决: 在shard/git/ copy 一个ico 文件(如git ...
- AutoCAD如何又快又好标注直径
如下图所示,想要标注一条直径.先选择快速标注 鼠标单击左右两侧线条(变成虚线),然后按回车,就可以往下拖了.拖完了就是一条直径的标注. 如果想要修改为自己的尺寸,则在文字替换中加上前缀%%c即 ...
- 处理中文空格.replace((char)12288,' ')
trim()只能替换英文空格.replace((char)12288,' ')是替换中文
- Spring技术笔记(一)
一.控制反转(IoC)&依赖注入(DI) 1.控制反转: 所谓的控制反转就是应用本身不负责依赖对象的创建及维护, 依赖对象的创建及维护是由外部容器负责的. 这样控制权就由应用转移到了外部容器, ...
- Oracle创建自增字段和修改方法-ORACLE SEQUENCE的简单介绍
http://blog.csdn.net/zhoufoxcn/article/details/1762351先假设有这么一个表: create table S_Depart ( DepartI ...
- nginx for windows 配置多域名反向代理
调试了很久...哦耶 共享出来吧 其实 nginx反向代理同一ip多个域名,给header加上host就可以了 upstream test.test.cn { server 119. ...
- java 方法重写原则
方法重写应遵循“三同一小一大”原则: “三同”:即方法名相同,形参列表相同,返回值类型相同: “一小”:子类方法声明抛出的异常比父类方法声明抛出的异常更小或者相等: “一大”:子类方法的访问修饰符应比 ...
- java 中 wait和notify的用法
package com.test; public class OutputThread { public static Object lockObj=new Object(); public stat ...