lyloverly 2010-08-25 13:53
浏览 314
已采纳

过滤器 ServletActionContext.setRequest(request) 抛异常

WEB.XML

authFilter
jp.cofesta.framework.web.filter.AuthorityFilter


encodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
UTF-8



struts2
org.apache.struts2.dispatcher.FilterDispatcher

<filter-mapping> 
  <filter-name>authFilter</filter-name> 
  <url-pattern>*.action</url-pattern> 
</filter-mapping> 

<filter-mapping> 
  <filter-name>encodingFilter</filter-name> 
  <url-pattern>*.*</url-pattern> 
</filter-mapping> 


<filter-mapping> 
  <filter-name>struts2</filter-name> 
  <url-pattern>*.action</url-pattern> 
</filter-mapping> 
<filter-mapping> 
  <filter-name>struts2</filter-name> 
  <url-pattern>*.jsp</url-pattern> 
</filter-mapping> 

过滤器 实现类

public class AuthorityFilter extends OncePerRequestFilter {

private String error = "/logout.action";

/**

  • error action setter method
  • @param error */ public void setError(String error) { this.error = error; }

/**

  • filter
  • @param request
  • @param response
  • @param filterChain */ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException { String requestURI = request.getRequestURI(); //String shortRequestURI = requestURI.replace(request.getContextPath(),""); //ServletActionContext sac = new ServletActionContext(null,null); ServletActionContext.setRequest(request); User user = SecurityUtil.getLoginUser(); if (requestURI.endsWith(error)) { filterChain.doFilter(request, response); }else if (user == null && !requestURI.endsWith(Constants.LOGINACTION) && !requestURI.endsWith(Constants.WELCOMEACTION)) { String forwardPath = request.getContextPath() + error; (new HttpServletResponseWrapper(response)) .sendRedirect(forwardPath); } else { filterChain.doFilter(request, response); } } }

错误信息如下:

2010-8-25 13:34:56 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at org.apache.struts2.ServletActionContext.setRequest(ServletActionContext.java:103)
at cc.yilian.invoicing.common.filter.AuthorityFilter.doFilterInternal(AuthorityFilter.java:51)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
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:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

  • 写回答

1条回答 默认 最新

  • oyj7454103 2010-08-25 14:04
    关注

    jp.cofesta.framework.web.filter.AuthorityFilter 这个过来器的
    AuthorityFilter.java:51 行市哪行呢?!

    还有就是 其他的 struts2默认的过滤器 是否添加呢!














    dojo..*



    input,back,cancel,browse




    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀