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零配置的更多相关文章

  1. 从struts2.1开始Convention零配置

    从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该 ...

  2. struts2 Convention插件零配置,使用注解开发

    从struts21开始,struts2不再推荐使用codebehind作为零配置插件,而是改用Convention插件来支持零配置.与以前相比较,Convention插件更彻底. 使用Conventi ...

  3. 菜鸟学Struts2——零配置(Convention )

    又是周末,继续Struts2的学习,之前学习了,Struts的原理,Actions以及Results,今天对对Struts的Convention Plugin进行学习,如下图: Struts Conv ...

  4. 13、零配置Struts2开发

    Convention 插件 从 Struts 2.1 开始, Struts 可以使用 Convention 插件来支持零配置: Convention 插件完全抛弃配置信息, 不仅不需要使用 strut ...

  5. Struts2基于注解的Action配置

    使用注解来配置Action的最大好处就是可以实现零配置,但是事务都是有利有弊的,使用方便,维护起来就没那么方便了. 要使用注解方式,我们必须添加一个额外包:struts2-convention-plu ...

  6. Struts2零配置介绍(约定访问)

    从struts2.1开始,struts2 引入了Convention插件来支持零配置,使用约定无需struts.xml或者Annotation配置 需要 如下四个JAR包 插件会自动搜索如下类 act ...

  7. struts2 零配置

    一.新建一个web项目,命名为:struts2 二.导入strut2所需的jar包 所需jar下载:http://pan.baidu.com/s/1dDxP4Z3 三.配置struts2的启动文件,在 ...

  8. Struts2的零配置和rest插件

    1. 零配置使用struts2-convention-plugin-2.3.16.jar,rest使用struts2-rest-plugin-2.3.16.jar 1.1 Struts2的conven ...

  9. struts2 convention-plugin实现零配置

    零配置并不是没有配置,而是通过约定大于配置的方式,大量通过约定来调度页面的跳转而使得配置大大减少.使得Action等配置不必写在Struts.xml中. convention-plugin的约定 1. ...

随机推荐

  1. 2016.11.25 activiti的配置文件解析

    参考来自activiti的用户手册.   activiti的配置文件解析 1.processEngine的配置 注意,单独创建流程引擎与spring方式创建流程引擎是不一样的,区别在于:process ...

  2. JAVA Eclipse如何安装Swing

    查看自己的Eclipse版本   打开WINDOWBUILDER的下载页面,找到自己对应版本的下载地址,注意只是一个下载地址,不是要下载东西 http://www.eclipse.org/window ...

  3. hdu3076--ssworld VS DDD(概率dp第三弹,求概率)

    ssworld VS DDD Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  4. 【Wechall.net挑战】Anderson Application Auditing

    Wechall.net是一个国外用于练习CTF和攻防的网站,国内资料writeup不多,只有个别几篇.作为小白,近日玩了几道有意思的题目,在此分享 题目地址:http://www.wechall.ne ...

  5. linux下网卡绑定

    网卡绑定的作用:1.冗余,防止单点故障 2.防止传输瓶颈 1.交换机端口绑定: system-view link-aggregation group 1 mode manual 比如把端口1和2进行绑 ...

  6. 16 nginx实现负载均衡

    一:nginx实现负载均衡-----------------原理-------------------------- (1) 反向代理后端如果有多台服务器,自然可形成负载均衡,但proxy_pass如 ...

  7. scikit-learn:4. 数据集预处理(clean数据、reduce降维、expand增维、generate特征提取)

    本文參考:http://scikit-learn.org/stable/data_transforms.html 本篇主要讲数据预处理,包含四部分: 数据清洗.数据降维(PCA类).数据增维(Kern ...

  8. Dynamic Resource – 动态资源

      Dynamic Resource – 动态资源 与Static Resource不同的是,Dynamic Resource可以在程序运行时重新评估/计算资源来生成对应的对象/值,它支持向前引用,只 ...

  9. Javascript文件加载:LABjs和RequireJS

    传统上,加载Javascript文件都是使用<script>标签. 就像下面这样: <script type="text/javascript" src=&quo ...

  10. EasyNVR RTSP转HLS(m3u8+ts)流媒体服务器前端构建之:bootstrap-datepicker日历插件的实时动态展现

    EasyNVR中有对录像进行检索回放的功能,且先抛开录像的回放,为了更好的用户体验过.让用户方便快捷的找到对应通道对应日期的录像视频,是必须的功能. 基于上述的需求,为前端添加一个日历插件,在日历上展 ...