使用过滤器统一全站编码
来源:互联网 发布:暴力解压rar软件 编辑:程序博客网 时间:2024/05/12 05:42
在web开发中,过滤器是一项非常激动人心的技术,它可以对所有的访问进行控制,通过这些特性,我们可以用来实现很多的需求。常见的有记住用户名密码、统一全站编码等等。本文就利用过滤器+装饰器实现统一全站编码做简单的介绍。
首先需要对jsp和servlet中的编码有一定的了解,具体可以看这篇文章:JSP编码以及乱码解决总结。
实现代码如下:
public class EncodingFilter implements Filter{ // filter初始化参数 private FilterConfig config ; private static Log log = LogFactory.getLog(EncodingFilter.class); public void destroy() { // do nothing } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 获取自定义编码 String encode = config.getInitParameter("encode"); if (encode == null){ encode = "utf-8"; } HttpServletRequest req =(HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); // 使用装饰器 MyReq myReq = new MyReq(req); chain.doFilter(myReq, resp); } public void init(FilterConfig filterConfig) throws ServletException { this.config = filterConfig; } /** * 装饰器模式 * @author: xlli * @CreateDate: 2016-3-27 上午12:22:01 * @version: 1.0 */ class MyReq extends HttpServletRequestWrapper{ private HttpServletRequest req; public MyReq(HttpServletRequest request) { super(request); this.req = request; } @Override public String getParameter(String name) { // post请求 if (req.getMethod().equalsIgnoreCase("post")){ return req.getParameter(name); } // get请求 String value = req.getParameter(name); if (value == null){ return null; } try { value = new String(req.getParameter(name).getBytes("iso8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { log.error(new Date().getTime() + "EncodingFilter编码转化失败",e); }; return value; } }}
0 0
- 使用过滤器统一全站编码
- 使用EncodingFilter过滤器来完成统一编码
- Filter 统一全站编码
- Filter-统一全站编码
- 统一全站字符编码
- 2Filter应用1统一全站字符编码的过滤器
- 统一全站乱码解决过滤器
- javaweb全站编码过滤器
- 全站编码过滤器EncodingFilter
- javaweb 使用过滤器解决全站编码问题
- web--4.统一全站编码
- JSP页面统一编码过滤器
- 过滤器_编码统一处理
- 过滤器——解决全站编码
- EncodingFilter 全站编码过滤器 get请求中文编码过滤
- 全站统一字符编码的几种方式
- Filter过滤器,统一网站字符编码
- Java通过过滤器统一编码格式
- 商城一般的组织模板
- 初学HTML心得
- SICP 习题2.33 用accumulate完成一些基本的表操作
- 大数据平台用于生成数据跑批脚本的脚本(version3.0)
- S3c2440中断学习
- 使用过滤器统一全站编码
- concat join reverse slice sort push unshift pop splice Array对象常用方法
- Mysql中的TIMESTAMPDIFF和TIMESTAMPADD
- session
- Android帧动画(Drawable Animation)的使用总结
- C语言基础 类型强制转换
- JavaScript强化教程——从简到繁
- yii2 修改默认URL中的%2F调整为/
- SVN与Git的最主要的区别?