Spring MVC 解决乱码

smalllove 2019-11-11

1. Spring 事务处理
    Spring MVC乱码问题
    三种处理数据库的方式
        (1)jdbc(J2EE规范)
        (2)Spring JDBCTemplate(进一步封装)
        (3)MyBatis/Hibernate(不容易调错,效率不是很高,但写代码更新简单)
        (4)jpa (J2EE规范) java persist api
        jdbc: select * from user u where u.id=1;
        hibernate:from User u where u.id=1;
        
2. Spring  Transaction
    a.以前的处理方式:
        事务:原子性 一致性 隔离性 持久性
        同一个Connectiond
    b.AOP的原理和标注来实现了声明式的事务处理
    c.如何编码
        (1). 引入jar (不用引入jar,因为他就是aop实现,默认引入)
        (2). 开启Spring的事务处理功能
            AppConfig配置类加入@EnableTransactionManagement
        (3). 配置事务管理器的Bean(datasource)
                JdbcConfig配置中加入TransactionManagement。
        (4). 开始使用Spring事务
                Service 方法上加上 @Transactional

3. 处理乱码问题
    a:97(ascii 美国 1Byte 256) a: 97(gb2312/gbk 2-3Byte)
4. web系统最容易产生乱码的地方
    (1) 后台乱码的问题:
            a. 数据库UTF-8[默认Lanti1]
            b. JDBC连接的也要指定连接的编码格式
            c. 项目本身和项目文件都应采用UTF-8
    (2)应该理论上来说,你从前台存储数据到后台,或者拿数据到前台不应该出现乱码。
    (3)浏览器的问题
        a. 从浏览器的地址框直接传数据。
            get:浏览器会对数据进行ISO-8859-1的解码工作,后台utf-8进行解码。
            post:
        b. 拿到数据做展示
            要对传递的数据进行编解码处理。servlet的过滤器
            Spring帮我们写了这么一个过滤器,这个过滤器就是干编解码的工作
            
        编码: byte[] byte = "中".getBytes(‘ISO-8859-1‘);
        解码: String s = new String(bytes,"utf8")
        
        c. 配置Spring帮我们写好的那个Filter
        FilterRegistration.Dynamic encodingFilter =servletContext.addFilter("encodingFilter", CharacterEncodingFilter.class);
        encodingFilter.setInitParameter("encoding", String.valueOf(StandardCharsets.UTF_8));
        encodingFilter.setInitParameter("forceEncoding", "true");
        encodingFilter.addMappingForUrlPatterns(null, false, "/*");

相关推荐