1. 首先,看看没有解决乱码的效果,新建两个jsp页面(a.jsp跳转到b.jsp)。

         <form action="b.jsp" method="post">
    <input type="text" name="testarea">
    <input type="submit" value="提交">
    </form>
       <%
    String data = request.getParameter("testarea");
    %>
    接收到的结果是:<%=data %>

    运行效果图如下(b.jsp)中出现乱码:

    

  2.现在建一个过滤器来解决乱码问题。

    右键src新建servlet,取个名字(如,EncodingServlet),实现servlet中的Filter接口,确定后,添加未实现的方法。代码如下:

 import java.io.IOException;
import java.io.PrintWriter; 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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class EncodingServlet extends HttpServlet implements Filter { public void destroy() {
super.destroy();
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if(httpRequest.getMethod().toUpperCase().equals("POST")){
httpRequest.setCharacterEncoding("utf-8");
chain.doFilter(httpRequest, httpResponse);
}else
chain.doFilter(httpRequest, httpResponse);
} @Override
public void init(FilterConfig filterConfig) throws ServletException { } }

    代码解释:

    23-24行:将ServletRequest和ServletResponse对象强转为HttpServletRequest和HttpServletResponse对象;

    25行:将得到的传输方法得到并转为大写再与POST比较

    26行:设置字符编码为UTF-8,因为setCharacterEncoding方法在HttpServletRequest中才有,所以才有23-24行的强转操作;

    27行:chain.doFilter(httpRequest, httpResponse);相当于放行,通过过滤器。

    需要配置web.xml文件,如下:

   <filter>
<filter-name>EncodingServlet</filter-name>
<filter-class>cn.cqvie.filter.EncodingServlet</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingServlet</filter-name>
<url-pattern>/*</url-pattern><!--作用范围为本项目中的所有页面-->
</filter-mapping>

现在重启服务器(最好重新部署一下项目),再次访问a.jsp页面和b.jap页面,就没有乱码了。

初学者,见笑!

  13:35:36 2016-11-20

java servlet之过滤器1(解决jsp之间POST方式数据传递乱码)的更多相关文章

  1. .net利用SQLBulkCopy进行数据库之间的大批量数据传递

    SQLBulkCopy,用于数据库之间大批量的数据传递.通常用于新,旧数据库之间数据的更新.即使表结构完全不同,也可以通过字段间的对应关系,顺利的将数据导过来. 首先,SQLBulkCopy需要2个连 ...

  2. Web jsp开发学习——终极解决jsp中request和response中文乱码的问题(加个过滤器)

    中文乱码真的很烦人的.而且每次都要写,可麻烦了,而且有时候写了还不一定管用,所以我们可以试试过滤器 1.每个jsp头上当然要写上utf8啦 <%@ page language="jav ...

  3. 《Java从入门到放弃》入门篇:springMVC数据传递

    springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...

  4. jsp之间url传值出现中文乱码

    示例: T1.jsp http://localhost:8080/test/Test.action?site=北京 T2.jsp ..... <%@ page language="ja ...

  5. 解决SpringMvc后台接收json数据中文乱码问题

    原因分析 使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码 其实乱码问题出现的原因,就是由于默认的tomcat配置,接收请求是以ISO-8859-1来转码,导致中文出 ...

  6. (Android数据传递)Service和Activity之间-- 借助BroadcastReceiver--的数据传递

    实现逻辑如下: 左侧为Activity中的执行逻辑,右侧为Service中的执行逻辑: /** * <功能描述> Service和Activity之间的数据交互:具体表现为: 1. 从Se ...

  7. 解决jdbc向数据库存入数据出现乱码的情况

    解决办法 1.修改项目的编码,建议统一使用utf-8来实现,这样整个项目就是utf-8. 2.jdbc:mysql://locathost:3306/数据库名称?useUnicode=true& ...

  8. MFC学习之对话框---对话框之间的domodle 数据传递

    if(IDOK==data.DoModal()){tx->m_gao=data.m_he;tx->m_kuan=data.m_wi;tx->m_jiao=data.m_jiaoju; ...

  9. Centos 安装字体库 以及解决confluence 旧文档数据的乱码

    首先,第一步我们需要执行以下的命令来安装字体管理工具:  yum install -y fontconfig mkfontscale 然后我们到(Windows系统)“c:/windows/fonts ...

随机推荐

  1. 打造 html5 文件上传组件,实现进度显示及拖拽上传,支持秒传+分片上传+断点续传,兼容IE6+及其它标准浏览器

    老早就注册了博客园帐号,昨天才发现,连博客都没开,Github也是一样,深觉惭愧,赶紧潜个水压压惊`(*∩_∩*)′ 言归正传.大概许多人都会用到文件上传的功能,上传的库貌似也不少,比如(jQuery ...

  2. 关于MVC中View使用自定义方法

    今天学习到了在MVC的View中使用自定义方法,很简单,下面分享一下. 1.首先在项目下面建立一个文件夹,用于存我们写的自定义方法. 2.在新建文件夹中新增一个类,命名随便取(最好还是和自定义方法关联 ...

  3. [Notes] AWS Automation using script and AWS CLI

    (c) 2014 Amazon Web Services, Inc. and its afflialtes, All rights reserved. The content in this file ...

  4. 隐藏weibview里面的部分h5

    private void initWebView(String url) { twoCode.loadUrl(url); WebSettings settings = twoCode.getSetti ...

  5. tmp

    Hello 大家好,这次给大家带来的是Gear VR4代,首先我得感谢下我们的虎友Hide兄弟友情提供Gear给我们测评,感谢 感谢.之前我录的前哨战也说过,这次Gear VR 4代较3代变化并不是很 ...

  6. WIN2003使用IP安全策略只允许指定IP远程桌面连接

    一,新建IP安全策略 WIN+R打开运行对话框,输入gpedit.msc进入组策略编辑器. 依次打开“本地计算机”策略--计算机配置--Windows设置--安全设置--IP安全策略,在 本地计算机上 ...

  7. iOSview整体上移下移(点击键盘)

    首先创建一个textFiled 并实现起代理方法 - (void)textFieldDidBeginEditing:(UITextField *)textField { //设置动画的名字 [UIVi ...

  8. 通过反射及注解的运用获取SQL语句

    import java.lang.reflect.*; public class BeanUtil { //这是拼接查询SQL语句的方法(getDelectSQL) public static Str ...

  9. hdu 5976 Detachment

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  10. 四川软件人才网:打造四川最专业的IT人才招聘平台

    四川软件人才网(www.tfsp.net),原名:天府软件人才网:为了更好的发展和拓展的业务需要,更名为:四川软件人才网,强力打造四川最专业的IT人才的招聘平台. 网站依托四川软件人才社区,微博,微信 ...