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. 【C语言 C++】简单keywordRegister,Const,Static,Volatile,typedef,Define的理解

    Register 用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器 中.但对32位编译器不起作用.当global optimizations(全局优化)开的时候,它会 ...

  2. Linux 的计划任务(运维基础|可用于提权)

    Linux操作系统定时任务系统 Cron 入门 先写笔记: crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 crontab -l //列出某个用户 ...

  3. iOS陆哥开发笔记(七) (AVFoundation简单介绍)

    在AVFoundation框架中AVAudioRecorder类专门处理录音操作,支持多种音频格式. 以下是经常使用的属性和方法: 属性 说明 @property(readonly, getter=i ...

  4. asp.net core 系列之Reponse caching之cache in-memory (2)

    这篇文章(主要翻译于官网,水平有限,见谅)讲解asp.net core 中的 Cache in-memory (内存缓存). Cache in-memory in ASP.NET Core Cachi ...

  5. Django之sitemap

    ##########settings.py SITE_ID=1 # Application definition # taggit tag INSTALLED_APPS = [ 'myblog', ' ...

  6. python DOM解析XML

    #conding:utf-8 # -*- coding:utf-8 -*- __author__ = 'hdfs' """ XML 解析 :DOM解析珍整个文档作为一个可 ...

  7. 这样好用的ReactiveCocoa,根本停不下来【转载】

    前戏我个人非常推崇ReactiveCocoa,它就像中国的太极,太极生两仪,两仪生四象,四象生八卦,八卦生万物.ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛 ...

  8. org hibernate querytimeoutexception

    起因 在做Hibernate批量插入时,出现这个错误org.hibernate.QueryTimeoutException: 错误原因是表空间的容量不足,需要加大空间容量:那首先想到的是应该查询其容量 ...

  9. servletResponse 控制浏览器缓存

    //当访问一些资源文件时,我们希望,访问一次后,资源文件能够在缓存在浏览器中,当我们再次访问该资源时 //直接从缓存中去取,这样可以减少服务器的压力 package response; import ...

  10. 搜狐新闻APP是如何使用HUAWEI DevEco IDE快速集成HUAWEI HiAI Engine

    6月12日,搜狐新闻APP最新版本在华为应用市场正式上线啦! 那么,这一版本的搜狐新闻APP有什么亮点呢? 先抛个图,来直接感受下—— ​ 模糊图片,瞬间清晰! 效果杠杠的吧. 而藏在这项神操作背后的 ...