struts2.5+框架使用通配符与动态方法常见问题小结

概述:struts2.5以后加强了安全性,下面就是安全配置引发的问题

1.通配符:

在学习struts框架时经常会使用到通配符调用方法,如下:

<package name="usercrud" namespace="/" extends="struts-default">
    <action name="test-*" class="com.gitee.dgwcode.action.UserCrudAction" method="{1}">
      <result name="query">/view/success.jsp</result>
      <!-- <allowed-methods>query,delete,update,insert</allowed-methods> -->
    </action> </package>

其中的action name="user_*"中*这个符号代表的值会传入method=“{1}”中,并对应action类的一个方法名,这样就能很大程度地减少配置文档中action的数目。

但是在使用这种通配符方法的时候,经常会看到这样的映射错误提示

Struts Problem Report
Struts has detected an unhandled exception:

Messages:   
There is no Action mapped for namespace [/] and action name [test-update] associated with context path [/Struts2_01].

如果看到提示的是映射问题,你可以按照映射路线排除一遍,

第一步:先排查访问的链接有没有问题(细节问题)

第二步:查看struts.xml的配置(仔细排查,出现问题几率很大)

第三步:查看相关的action类及方法(比如return的值是不是跟配置文件中的result对应得上等)

第四步:查看结果响应页面是否存在问题(出现问题的几率比较小)

2.动态方法

当使用动态调用方法时(action名 + 感叹号 + 方法名进行方法调用),需要将其属性改为true,

如:query为类中的方法名

  <a href="${pageContext.request.contextPath }/test!query" rel="external nofollow" >DynamicMethodInvocation</a><br>

当使用通配符调用语法时,建议将其属性改为false(struts2.5.2中默认是false)

当我们需要将其属性改成false时,

只在struts.xml配置文件中加入此句即可修改属性

<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<!-- 动态方法调用 -->
    <action name="test"     class="com.gitee.dgwcode.action.UserCrudAction">
      <result name="query">/view/success.jsp</result>
      <allowed-methods>query,delete,update,insert</allowed-methods>
    </action>

总结:<allowed-methods>方法名1,方法名2…</allowed-methods>代码

补充:Struts2.5框架使用通配符指定方法

struts框架使用的通配符调用方法配置:

<package name="hew" extends="struts-default">
  <!-- 配置Action -->
  <action name="action_*" class="action" method="{1}">
    <result name="SUCCESS">index.jsp</result>
  </action></package>

其中<action name="action_*" class="action">中的name="action_*"中的*代表的是method="{1}"中的{1}的值,并对应Action类中的一个方法名。

注:struts2.3之前使用以上配置正常,struts2.3之后,使用通配符调用方法要加上<allowed-mthods>方法名1,方法名2..</allowed-mthods>

<package name="hew" extends="struts-default">
  <!-- 配置Action -->
  <action name="action_*" class="action" method="{1}">
    <result name="SUCCESS">index.jsp</result>
    <allowed-mthods>方法名1,方法名2..</allowed-mthods>
  </action>
</package>

总结

以上所述是小编给大家介绍的struts2.5+框架使用通配符与动态方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Struts2学习笔记(4)-通配符的使用

    通配符是在struts2配置中非常常用的一种配置方式,在程序开发过程中要遵循"约定优于配置"的原则,在这种原则下,约定的结果如果比较合适的话,就会大大减少配置的数量,使得配置变得非常简单,方便. 下面以例子来做下说明: 1.由如此的一个struts.xml配置文件: 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE struts PUBLIC      &

  • 搭建EXTJS和STRUTS2框架(ext和struts2简单实例)

    新建一个工程struts2工程teaweb(因为现在所做的项目是一个关于茶叶,茶文化的),导入jar包(基本的几个jar包:commons-logging-1.0.4.jar,freemarker- 2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.10.jar,xwork-2.0.4.jar),配置 struts.xml配置内容如下 <?xml version="1.0" encoding="UTF-8" ?> &l

  • 详解在Java的Struts2框架中配置Action的方法

    在Struts2中Action部分,也就是Controller层采用了低侵入的方式.为什么这么说?这是因为在Struts2中action类并不需要继承任何的基类,或实现任何的接口,更没有与Servlet的API直接耦合.它通常更像一个普通的POJO(通常应该包含一个无参数的execute方法),而且可以在内容定义一系列的方法(无参方法),并可以通过配置的方式,把每一个方法都当作一个独立的action来使用,从而实现代码复用. 例如: package example; public class U

  • SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2

    本文开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总结一下如何整合Struts2.Hibernate4.3和Spring4.2. 整合三大框架得先从搭建各部分环境开始,也就是说首先得把Spring,Hibernate和Struts2的环境搭建好,确保它们没有问题了,再做整合.这篇博文遵从的顺序是:先搭建Spring环境-->然后搭建Hibernate环境--> 整合Spring和Hibernate --> 搭建Struts2环境 --> 整合Spri

  • 使用MyEclipse 开发struts2框架实现登录功能(结构教程)

    1.首先建立Web Project,名称为:struts2 ,然后选择Java EE6.0,点击Finish. 2.右击"struts"选择MyEclipse->Add Struts Capabilities,然后弹出如下弹窗,再选择Struts 2.1.选择完成即可点击Finish. 3.建完后项目目录如下图所示: 4.建立一个Login类,继承ActionSupport类(点击Superclass的Browse,选择搜索ActionSupport) 5.定义username,

  • JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册

    最近在仿造一个书城的网站: http://www.yousuu.com ,UI直接拿来用,前端后端自己写,目前大部分功能已经实现, 就把具体的 登录注册功能 拿来分享一下.PS:又写登录注册会不会被人喷啊=.= 一.开发环境的部署 程序结构: BootStrap+Ajax+Struts2+Hibernate+MySql 仅供参考:能实现相关功能即可 操作系统:ubuntu 14.10 前端框架:BootStrap   注:此框架只是为了实现用户界面,和具体功能无关 数据库:mysql-5.5 数

  • struts2.5+框架使用通配符与动态方法常见问题小结

    概述:struts2.5以后加强了安全性,下面就是安全配置引发的问题 1.通配符: 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="usercrud" namespace="/" extends="struts-default"> <action name="test-*" class="com.gitee.dgwcode.action.UserCrudAc

  • Struts2配置文件中使用通配符的方法(三种形式)

    Struts2简介 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使

  • 详解Struts2动态方法调用

    动态方法就是一个Action对应多个请求,减少Action的数量 1.指定method属性 <action name="addAction" method="add" class="com.venn.action.HelloWorldAction"> <result>/jsp/add.jsp</result> </action> 2.感叹号(!)方式(不推荐使用) <action name=&

  • struts中动态方法调用使用通配符

    一.DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了.还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同的业务逻辑:另外一种是使用通配符的方式.改变method属性的方式需要配置多个action,而且这些action定义的绝大部分都是相同的,所以这种定义是相当冗余的.因此,使用通配符就可以在一个action标签中代替多个逻辑处理的Action. 二.示范:(和之前的动态方法调用改变form表单acti

  • thinkPHP5.0框架独立配置与动态配置方法

    本文实例讲述了thinkPHP5.0框架独立配置与动态配置方法.分享给大家供大家参考,具体如下: 独立配置文件: 新版支持配置文件分离,只需要配置extra_config_list参数(在应用公共配置文件中). 例如,不使用独立配置文件的话,数据库配置信息应该是在config.php中配置如下: /* 数据库设置 */ 'database' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据

  • AjaxFileUpload结合Struts2实现多文件上传(动态添加文件上传框)

    上篇文章http://www.jb51.net/article/124489.htm介绍了ajaxfileupload实现多文件上传, 但只是固定的文件个数,如果需求不确定是多少文件 则我们就需要动态的添加文件上传框,以实现灵活性. 基于上篇基本框架是不变的,主要修改以下几个方面 1.jQuery实现动态添加删除文件上传框 2.获取文件上传框的ID 3.ajaxfileupload.js里将ID数组转换为需要的Object数组 依次解决上面问题 一.实现动态添加删除文件上传框 <body> &

  • Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块完美实现

    中午的时候发了第一篇 Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块 ,发现实现上还是有问题,有很多理解不到位的地方,晚上详细解决下了,终于实现MVC各模块按需加载了,哈皮. 上篇文章中,关于ExtJs这个玩意的评论就跟java和.Net那个好一样,既然上了贼船,就难下了,而且对于企业级的应用我个人觉得Extjs框架还是不错的,尤其是没有UI设计的团队(苦逼的程序员就兼UI吧),起码难得发现一个做的比较好的UI框架(国产的miniUI貌似看的过去,其他的就有点

  • CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)

    本文实例讲述了CI框架封装的常用图像处理方法.分享给大家供大家参考,具体如下: 其实微信手机端上图时,列表图最好是缩略图,节省流量,这不,又被移动坑了一把,话费签一分就停机,流量欠到90块才停机,我也是醉了... 不说废话了,下面是用CI 的内置处理图像的库写的,小弟不才,遗漏之处敬请指出,谢谢. /** * 生成缩略图 * @param $path 原图的本地路径 * @return null 创建一个 原图_thumb.扩展名 的文件 * */ public function dealthu

  • 异步JS框架的作用以及实现方法

    从异步JS的重要性开始说起,再引入异步js框架,一步步的深入了解异步JS. 1.异步JS的重要性 随着Web平台地位的提升,霸占着浏览器的JavaScript语言也成为了世界上最流行的语言之一,甚至通过Node.js进入了服务器编程领域.JavaScript的一个重要特性便是"不能阻塞",这里的"不能"是指"不应该"而不是"无法"的意思(只要提供阻塞的API). JavaScript是一门单线程语言,因此一旦有某个API阻塞了

随机推荐