struts2常见错误笔记

1.通配符访问方法,报错404错误找不到页面

  (1)错误原因:struts.xml中缺少<global-allowed-methods>regex:.*</global-allowed-methods>,根据字面理解就是允许以*通配符的方式访问方法

  (2)详细错误:HTTP Status 404 - There is no Action mapped for namespace [/] and action name [] associated with context path [/struts2002].

  (3)报错截图:

      (4)解决方案:在package标签之间添加<global-allowed-methods>regex:.*</global-allowed-methods>即可

 2.编写struts.xml时编译报错

  (1)错误原因:<package></package>中的标签必须按顺序书写,否则会报错

  (2)详细错误:The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-allowed-methods?,global-exception-mappings?,action*)".

  (3)报错截图:

  (4)解决方案:检查顺序是否正确

          result-types
          interceptors
          default-interceptor-ref
          default-action-ref
          default-class-ref
          global-results
          global-exception-mappings

          action*

        (5) 版本改变后容易出现文档的版本不同的问题,这个问题也使我困扰了好久,才从网上找到答案。以下是转载他人的博客:

            在使用通配符的时候出现了问题你就是  {1}   获取不到   *   所表示的字符,一开始我没有往版本上考虑,我一遍一遍的排查,发现是这个通配符的问题,之前并没有想到,因为出的还是404  action找不到的问题,我先不用通配符,能正确显示,使用通配符导致Action不能区别访问,

<action name="Person" method="add" class="com.struts2.action.LoginAction2">
      <result name="success">/success.jsp</result>
      <result name="logout">/error.jsp</result>
      <allowed-methods>*</allowed-methods>
      </action>

上面的不用通配符,下面的用了通配符却出错了,一边一边的改这个配置

<action name="*Person" method="{1}" class="com.struts2.action.LoginAction2">
      <result name="success">/success.jsp</result>
      <result name="logout">/error.jsp</result>
      <allowed-methods>*</allowed-methods>
      </action>

结果这个可以访问到,于是我发现问题出在了    {1}       这个符号上,最后发现这是struts2 2.5 的又一个新特性---通配符禁止使用,我想应该是这种操作虽然对于编程人员来说简化了许多操作,但是对系统来说却增加了系统的开销。所以默认禁止使用通配符,需要加入允许操作才可以


红线标记的两句话就是开启这个的秘密。终于解决了,错,struts.xml显示这两个东西是没有的,瞬间懵逼了,没有,怎么可能,又开始检查文件,发现并没有错误,又纠结了好长时间最终想到是不是还是版本的问题,看了看struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

果然是版本的问题,赶紧改正

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">

这下没问题了,这下是完全成功了,终于从Struts2   2.5的套路中走出来了,不得不说2.5的套路太深了,我都无言以对了,但是从另一个方面来看,他禁止了许多不安全或是对系统来说负担过中的功能,这也是应该引导编程人员进步的阶梯吧,从struts2 的更新开始就是对struts2的优化开始。

新的东西出现的很快,当我们的教材还是以前的版本时,就已经跟不上了,我们需要去接触最新的东西,即使很难,这是因为新的东西和旧的东西有很大的改变,当这种差异显现的时候,头疼的就是程序员了,这是为什么错了,怎么又错了,欸,怎么对了,好奇怪。原来我接触JAVAFX2.0的时候也很头疼,因为这种GUI很新,和旧的AWT、SWING完全不是一个思想,可以说是更高层的抽象了。扯远了,以上就是我在最新的Strut2 2.5的版本上发现的新的,估计以后会发现更多,希望可以解决你们的问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值