广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    [java]如何使用过滤器解决jsp乱码

    来源:网络收集  点击:  时间:2024-03-03
    【导读】:
    Myeclipse中默认的编码是“ISO—8859-1”,由于中文的特殊性(可用GBK、UTF-8,推荐使用UTF-8,国际通用),在开发中比可避免编码转化问题,今天我们用过滤器技术解决jsp等编码问题。原理就不再说了,实例说明一下。工具/原料moreMyeclipse 6.5方法/步骤1/3分步阅读

    打开web项目,在src中新建一个类,规范一下编程习惯我们就把它放到一个包中去,项目右键新建“class”,包名填写例如“com.test.struts.filters”(习惯是域名反转),文件名首字母大写,例如“SetCharacterEncoding”。下面是类中的代码,实际上就是实现了Filter接口,重写了一下doFilter函数。

    package com.test.hibernate.filters;

    import java.io.IOException;

    import javax.servlet.Filter;

    import javax.servlet.FilterChain;

    import javax.servlet.FilterConfig;

    import javax.servlet.ServletException;

    import javax.servlet.ServletRequest;

    import javax.servlet.ServletResponse;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    public class SetCharacterEncoding implements Filter {

    /* (non-Javadoc)

    * @see com.sun.net.httpserver.Filter#doFilter(com.sun.net.httpserver.HttpExchange, com.sun.net.httpserver.Filter.Chain)

    */

    public void doFilter(ServletRequest srequest, ServletResponse sresponse,

    FilterChain chain) throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest)srequest;

    HttpServletResponse response = (HttpServletResponse)sresponse;

    // 注意这里请求和响应都强制转化了一下

    request.setCharacterEncoding(UTF-8);//设置请求编码“UTF-8”比较通用

    response.setCharacterEncoding(UTF-8);//设置相应编码

    chain.doFilter(srequest, sresponse);//转发请求

    }

    public void destroy() {

    // TODO Auto-generated method stub

    }

    public void init(FilterConfig arg0) throws ServletException {

    // TODO Auto-generated method stub

    }

    }

    2/3

    web配置文件配置filter文件,打开web.xml文件,在web-app/web-app之间加入如下配置,filter/filter是设置类路径的,filter-mapping/filter-mapping是用来映射指定路径文件到filter的。

    filter

    filter-namesetEncoding/filter-name

    filter-classcom.test.struts.filters.SetCharacterEncodingFilter/filter-class

    !--这里还可以使用初始变量

    init-param

    param-namename/param-name

    param-valuevalue/param-value

    /init-param

    再在SetCharacterEncoding.java的定义一个private String encoding = null;

    在init函数中加一句this.encoding = filterConfig.getInitParameter(encoding);

    --

    /filter

    filter-mapping

    filter-namesetEncoding/filter-name!--这个名称和上面的要相同 --

    url-pattern/*/url-pattern!--所有文件 --

    /filter-mapping

    3/3

    配置完后运行一下项目就不再看到那烦人的乱码了!

    过滤器乱码
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_228809.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 22:39:10  耗时:0.023
    0.0234s