使用注解定义过滤器这样是对的吗?如果不对应该怎么写

使用注解定义过滤器这样是对的吗?如果不对应该怎么写

@WebFilter(filterName = "Encoding",urlPatterns = "/*",initParams = {@WebInitParam(name = "ENCODING",value = "utf-8")})
public class EncodingFilter implements Filter {
   private String encoding;

   @Override
   public void init(FilterConfig filterConfig) throws ServletException {
       if (filterConfig.getInitParameter("Encoding") != null) {
           encoding = filterConfig.getInitParameter("Encoding");
       }

   }

   @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;
   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
一叶知秋519 2018-08-01 13:55:37

注解这么书写是没有问题的,不过建议同学:filterConfig.getInitParameter("Encoding")内的参数应该与注解中的ENCODING保持一致,否则会获取不到呢。祝学习愉快!

  • 提问者 JeasonLeeHao #1
    请问如果我把 private String encoding 赋值为"utf-8",是不是就可以不用在@WebFilter里面写initParams属性了
    2018-08-01 19:48:12
  • 一叶知秋519 回复 提问者 JeasonLeeHao #2
    即便把encoding赋值为utf-8,也建议设置一个初始化参数,这样书写更加专业,另外建议同学在获取初始化参数时,filterConfig.getInitParameter("Encoding")内的参数应该与注解中的ENCODING保持一致,否则会获取不到呢~~祝学习愉快!
    2018-08-02 09:48:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
SSM主流框架入门与综合项目实战2018版
  • 参与学习           人
  • 提交作业       205    份
  • 解答问题       4317    个

Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师