struts2.3.16中表单重复提交出现空指针异常

异常代码形式:

严重: Exception occurred during processing
request: null
java.lang.NullPointerException
  
 at
com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:630)
    at
com.opensymphony.xwork2.util.LocalizedTextUtil.findText(LocalizedTextUtil.java:606)
    at
com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:210)
    at
com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:139)
    at
org.apache.struts2.interceptor.TokenInterceptor.getErrorMessage(TokenInterceptor.java:182)
    at
org.apache.struts2.interceptor.TokenInterceptor.handleInvalidToken(TokenInterceptor.java:166)
    at
org.apache.struts2.interceptor.TokenInterceptor.handleToken(TokenInterceptor.java:151)
    at
org.apache.struts2.interceptor.TokenInterceptor.doIntercept(TokenInterceptor.java:142)
    at
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
    at
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
    at
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    at
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
    at
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
    at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)
    at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760)
    at
java.lang.Thread.run(Thread.java:662)

异常原因:

(1)如果把相关的<s:token/>等关于重复提交的配置
去掉就会一切正常,

一加上Action所有的属性全部为空.
诊对这个问题,如果加上其它的拦截器如token的拦截器,

那么struts2.3.16默认的拦截器
不会被执行,而为Action中的对象赋值刚好是默认拦截器的功能.
因此解决方法就是我们在配置过struts2.3.16重复提交的拦截器功能后还要手动的配置一下

默认的拦截器,否则前台页面提交的东西就不能自动的为Action进行赋值

struts.xml的代码:

<?xml version="1.0" encoding="UTF-8"
?>
<!DOCTYPE struts
PUBLIC
    "-//Apache
Software Foundation//DTD Struts Configuration 2.3//EN"
   
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <package name="struts"
extends="struts-default" >
        <action
name="login" class="action.LoginAction">
  
         <interceptor-ref
name="defaultStack"></interceptor-ref>
  
         <interceptor-ref
name="token"></interceptor-ref>
  
         <result
name="invalid.token">/error.jsp</result>
  
         
  
         <result name="success"
type="dispatcher">
  
             <param
name="location">/login.jsp</param>
  
         </result>
      
 </action>
  
 </package>
</struts>

同时要注意两点问:(1)自己写的Action类一点要继承ActionSupport。

(2)表单内部要加上<s:token></s:token>标签。

struts2.3.16中表单重复提交出现空指针异常,布布扣,bubuko.com

时间: 2024-11-10 07:37:36

struts2.3.16中表单重复提交出现空指针异常的相关文章

Struts2中防止表单重复提交

一.防止表单的重复提交 1.在表单中加入<s:token/>标签 2.在动作类中加入token的拦截器<interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="token"></interceptor-ref> 3.增加一个名称为invalid.token的结果视图<result name="

struts2之防止表单重复提交

struts.xml配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts

struts1与struts2的防止表单重复提交

struts1的防止表单重复提交 一.方法:利用令牌来解决页面重复提交的问题 二.步骤 2.1  Action中需要添加以下代码 public ActionForward entry(ActionMapping mapping, ActionForm form, HttpServletRequestrequest, HttpServletResponse response) throws Exception { saveToken(request); return mapping.findFor

【Struts2】防止表单重复提交

一.概述 二.Struts2中解决方案 三.实现步骤 一.概述 regist.jsp----->RegistServlet 表单重复提交 危害: 刷票. 重复注册.带来服务器访问压力(拒绝服务) 解决方案: 在页面上生成一个令牌(就是一个随机字符串),将其存储到session中,并在表单中携带. 在服务器端,获取数据时,也将令牌获取,将它与session中存储的token对比,没问题,将session中令牌删除. 二.Struts2中解决方案 struts2中怎样解决表单重复提交: 在strut

Struts2中解决表单重复提交

3. 表单的重复提交问题 1). 什么是表单的重复提交 > 在不刷新表单页面的前提下:  >> 多次点击提交按钮 >> 已经提交成功, 按 "回退" 之后, 再点击 "提交按钮". >> 在控制器响应页面的形式为转发情况下,若已经提交成功, 然后点击 "刷新(F5)" > 注意: >> 若刷新表单页面, 再提交表单不算重复提交 >> 若使用的是 redirect 的响应类型,

struts2如何防止表单重复提交

struts2解决表单重复提交问题方法: 1.在s:form 标签中加入s:token标签 1)会生成一个隐藏域, 2)在session中添加一个属性值 3)隐藏域中的值和session中的值是一样的 2.使用token拦截器或者是tokenSession拦截器 这两个拦截器不在默认的拦截器栈中,需要手工配置一下 使用token拦截器,需要配置一个invalid.token的result 使用tokenSession拦截器不用配置任何的result 3.token VS tokenSession

struts2实现防止表单重复提交

1.使用Struts2的表单标签,其中需要增加token标签. <s:token/>标签其实底层是这么实现的: 首先会在form表单里产生一个hidden类型的<input>标签: <input type="hidden" name="token" value="9AUOGRO10QB77EAJ65NYE6ROHWZ3IIQN" /> 然后struts2会生成一个全局唯一的字符串token放置在session会

12-struts2防止表单重复提交

防止表单重复提交 问题:什么是表单重复提交? regist.jsp----->RegistServlet 表单重复提交 危害: 刷票. 重复注册.带来服务器访问压力(拒绝服务) 解决方案: 在页面上生成一个令牌(就是一个随机字符串),将其存储到session中,并在表单中携带. 在服务器端,获取数据时,也将令牌获取,将它与session中存储的token对比,没问题, 将session中令牌删除. struts2中怎样解决表单重复提交: 在struts2中解决表单重复提交,可以使用它定义的一个i

[原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------