ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

今日学习笔记

2020-12-01 16:35:34  阅读:161  来源: 互联网

标签:乱码 Overridepublic void 笔记 学习 encode 今日 servlet response


过滤器Filter

过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理

应用到的场景一般有自动登录、统一设置编码格式、访问权限控制和敏感字符过滤等

在我的项目中,新建一个角色

 

 王五

会出现乱码 

 

 数据库中也显示乱码

 

 这就是由于没有设置过滤器导致,所以需要设置过滤器来解决

首先在数据库连接的bd中设置字符编码

String DB_URL ="jdbc:mysql://localhost:3306/test?useUnicode=true";
告诉MySQL这里要用到我们自己定义的编码,而非系统自带的编码(如ios等)


然后修改Tomcat,在conf目录的service.xml文件中修改connecter

 

 Tomcat如果不作这一步修改,在以后的项目中会遇到本电脑显示正常,项目到其他电脑就显示乱码的情况

 在servlet中新建EncodeFilter

public class EncodeFilter implements Filter 

@Override
public void init(FilterConfig filterConfig) throws ServletException {

}

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

}

@Override
public void destroy() {

}

在web.xml中配置filter
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>com.dpb.servlet.servlet.EncodeFilter</filter-class> //这里是servlet的路径
<init-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>//“/*”的意义是所有文件编码都要经过此过滤
</filter-mapping>

编写filter
private String encode = "utf-8";

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

}

}

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
request.setCharacterEncoding(encode);
response.setCharacterEncoding(encode);
filterChain.doFilter(request, response);
(加粗部分是filter的核心编码,即实现request和response的互相转换)

 

 再次添加的新用户角色不再产生乱码,数据库中也不再显示乱码

 

标签:乱码,Overridepublic,void,笔记,学习,encode,今日,servlet,response
来源: https://www.cnblogs.com/weishui/p/14068580.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有