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. Linux下的定时任务Crontab

    通过crontab -e写入定时任务的指令,一行为一项任务. 任务模式是时间克龙表达式+命令形式. 如: 2 0,6,12,18 * * * perl /root/restarttomcat.pl p ...

  2. 基于SNMP的交换机入侵的内网渗透

    前言:局域网在管理中常常使用SNMP协议来进行设备的管理和监控,而SNMP的弱点也成为了我们此次渗透的关键. 使用SNMP管理设备只需要一个community string,而这个所谓的密码经常采用默 ...

  3. Galileo Gen2 之MQTT通讯

    前言 原创文章,转载引用务必注明链接.如有疏漏,欢迎斧正. Galileo系统:完整版Yocto,内核版本3.8.7-yocto-standard:宿主机:Windows 7 64 bit 这期主要讲 ...

  4. ZOJ - 3890 Wumpus(BFS基础题)

    Wumpus Time Limit: 2 Seconds      Memory Limit: 65536 KB One day Leon finds a very classic game call ...

  5. swoole新手教程01-环境搭建及扩展安装

    写在前面的废话 <swoole源代码分析>已经写了13章,整个swoole的核心架构基本都分析的差点儿相同了.于是心里一直以来想整理swoole的文档并写一份教程的想法就再度浮了出来. 实 ...

  6. Android · PendingIntent学习

    Intent 是及时启动,intent 随所在的activity 消失而消失 PendingIntent用于处理即将发生的事情.比如在通知Notification中用于跳转页面,但不是马上跳转.   ...

  7. Battery Charging Specification 1.2 中文详解

    转:       http://blog.csdn.net/liglei/article/details/228 1. Introduction 1.1 Scope 规范定义了设备通过USB端口充电的 ...

  8. ExtJs5.1多选下拉框CheckComb

    ExtJs这么多个版本号了.可就是不提供多选下拉框,老外不用这个玩意吗? 5都出来这么久了,新写的项目就用5吧,把曾经Extjs4.2的时搜到前人的CheckComb改巴改巴.能用了就赶紧贴上来,没有 ...

  9. php减少损耗的方法之一 缓存对象

    即把实例后的对象缓存起来(存入变量),当需要再次实例化时,先去缓存里查看是否存在.存在则返回.否则实例化.

  10. 无刷新URL 更新

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...