测试show.jsp发生错误

来源:3-4 编码过滤器

慕用6234762

2020-04-11 01:00:36



spacer.gif    

java.lang.NullPointerException
org.apache.tomcat.util.buf.B2CConverter.getCharset(B2CConverter.java:60)
org.apache.catalina.connector.Request.setCharacterEncoding(Request.java:1667)
org.apache.catalina.connector.RequestFacade.setCharacterEncoding(RequestFacade.java:329)
com.imooc.sm.global.EncodingFilter.doFilter(EncodingFilter.java:21)


package com.imooc.sm.global;

import javax.servlet.*;
import java.io.IOException;

/**
 * 编码过滤器
 */
public class EncodingFilter implements Filter {
    //设置字符级
    private String encoding;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
            if(filterConfig.getInitParameter("Encoding")==null){
                encoding = "UTF-8";
            }
    }

    @Override
    public void doFilter(ServletRequest  servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            servletRequest.setCharacterEncoding(encoding);
            servletResponse.setCharacterEncoding(encoding);
            filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
      public void destroy() {
        encoding=null;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
<!--配置字符过滤器-->
  <filter>
    <filter-name>Encoding</filter-name>
    <filter-class>com.imooc.sm.global.EncodingFilter</filter-class>
    <init-param>
      <param-name>Encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <!--配置servlet核心控制器-->
  <servlet>
    <servlet-name>Global</servlet-name>
    <servlet-class>com.imooc.sm.global.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Global</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>


写回答

1回答

好帮手慕阿满

2020-04-11

同学你好,ecoding值在定义时已经给出。另外在EncodingFilter类的init()方法中,应该判断不为null,给encoding赋值,如:

http://img.mukewang.com/climg/5e91320809c3a10008710242.jpg

建议同学修改一下再试试。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


0

0 学习 · 8263 问题

查看课程