Eclipse+MySQL+前端乱码解决方案(全)

1.Web开发:javax.servlet.Filter

  • 所有过滤器都应该实现Filter接口.
  • 过滤器的作用:
    • 对目标访问前或访问后进行过滤.
  • 应用场景:
    • 对密码进行加密
    • 对请求参数进行字符编码设置
    • 对请求进行权限控制
    • 对请求参数值进行非法字符过滤

 2.过滤器过滤规则:

①过滤器默认对请求进行过滤,对服务器内部资源转发不进行过滤.

②需求:希望服务器内部资源转发也进行过滤.在中增加转发过滤设置

        REQUEST

        FORWARD

③过滤器过滤执行顺序:

  • 按照匹配规则进行执行过滤.
    • 如果多个过滤器的匹配规则都匹配到这个路径,按照匹配顺序来执行过滤.

④过滤执行顺序原理:

  • 通过Tomcat将过滤器对象创建后,存放到集合,然后根据匹配规则,迭代过滤器实施过滤.
  • 每一个过滤器的执行有责任调用下一个过滤器的执行.所以在doFilter()方法中进行放行: chain.doFilter(req,resp);

Eclipse+MySQL+前端乱码解决方案(全)_第1张图片

3.项目中解决乱码问题

  • GET: 在Tomcat/conf/server.xml中设置编码.
    • URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
  • POST :
    • 字符编码过滤器只能解决POST请求乱码问题.不能解决GET请求乱码问题.

 

  • 项目开发注意事项:

①工作空间编码设置

Eclipse+MySQL+前端乱码解决方案(全)_第2张图片

②JSP页面编码设置

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

  • pageEncoding="UTF-8" 页面编码
  • contentType="text/html; charset=UTF-8"   服务器端响应返回结果字符编码:response.setCharacterEncoding("UTF-8");

③数据库编码

Eclipse+MySQL+前端乱码解决方案(全)_第3张图片

 

  • 如果修改编码:
    • 修改编码,重新启动服务器,重新创建数据库以及表.以前创建的数据还是采用以前的编码.
  • 应用程序和数据库之间数据交互是通过url来指定中间编码进行转换
    • jdbc:mysql://localhost:3306/atcrowdfunding170506?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8

Eclipse+MySQL+前端乱码解决方案(全)_第4张图片

 

  • 命令行查询数据显示乱码
    • 数据库采用utf8编码,而DOS窗口默认GBK,需要通过set names GBK将数据库数据转换为GBK编码之后再显示到DOS窗口就解决乱码问题了.
    • 这个设置只是临时的,只针对于当前窗口有效.

Eclipse+MySQL+前端乱码解决方案(全)_第5张图片

  • Java中字符串编码转换:

public byte[] getBytes(String charsetName)  字符串对象调用这个方法将字符串转换为二进制数据(将原来编码转换为指定的中间编码)

public String(byte bytes[], String charsetName) 将二进制数组数据再转换为字符串(将数据的中间编码再转换为需要的编码).

  • 设置Eclipse的编码了,所有的工作空间字符编码与Eclispe编码一致了.

Eclipse+MySQL+前端乱码解决方案(全)_第6张图片

 

你可能感兴趣的:(Spring学习)