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,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" 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. ...
随机推荐
- SSD配置
SSD: Single Shot MultiBox Detector - 运行“ make -j32”时出错: nvcc warning : The 'compute_20', 'sm_20', an ...
- spring Multiple MongoTemplate
<!-- 数据环境配置 --> <mongo:repositories base-package="com.my9yu.manager.module.server.repo ...
- 2016.8.19 将div设置为隐藏使用style=“display:none”
style="display:none"表示隐藏. style="display:block"表示显示. 在代码中则使用$("#id").s ...
- .NET创建宿主设计器--DesignHost、DesignSurface.
一个窗口在运行时,是这样的: 但是,在设计时,却远比这复杂的多,它需要一个设计器对象:它仅存在于设计时,并连接到运行时存在的对象. 宿主容器 我们可以看到每个窗体和按钮均有与之相关的设计器.这两个 ...
- POJ-1190-生日蛋糕-DFS(深搜)-枚举-多重剪枝
题目链接: 这个题目非常好,有难度:能够好好的多做做: #include<iostream> #include<string> #include<cstdio> # ...
- UVA - 10895 Matrix Transpose
UVA - 10895 Matrix Transpose Time Limit:3000MS Memory Limit:Unknown 64bit IO Format:%lld & % ...
- -ROOT-表和.META.表结构详解
在<HBase技术简介>中我们知道,HBase中有两个特殊的表:-ROOT-和.META.. 由于HBase中的表可能非常大,故HBase会将表按行分成多个region,然后分配到多台Re ...
- JS函数库Underscore.js
http://underscorejs.org/ http://www.css88.com/doc/underscore/ http://www.bootcss.com/p/underscore/
- webpack3.0 环境搭建
额.备份一下总是好的 #为了避免某些国外镜像源安装失败,先设置淘宝镜像代理 yarn config set registry https://registry.npm.taobao.org # 初始化 ...
- VS2017快捷键
1.回到上一个光标位置/前进到下一个光标位置 (1)回到上一个光标位置:使用组合键“Ctrl + -”; (2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪切/删除整行 ...