`
Supanccy2013
  • 浏览: 213287 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

处理web请求与响应的编码方式统一

阅读更多
    统一处理web请求与响应的编码方式即使防止出现乱码问题的要求,也是实施输入校验,输出编码等安全管控的措施。建议统一采用UTF-9字符编码。

实现方案:
1,设置tomcat,使得tomcat在处理Get请求参数的时候用UTF-8编码。编辑tomcat的配置文件server.xml 设置<conector>URLEncoding属性为"UTF-8"。
 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" 
               URLEncoding="UFT-8"
             />
              <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"    
               URIEncoding="UTF-8"/>

注意:最好是把所有的connector的编码属性都设置成utf-8的。


2,用filter来设置处理post请求参数的编码方式为UTF-8

package com.supan.framework.filter;
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;

public class EncodingFilter implements Filter
{
	private String encoding = "utf-8";

	public void init(FilterConfig filterConfig) throws ServletException
	{
		String encodingParam = filterConfig.getInitParameter("encoding");
		if (null != encodingParam)
		{
			encoding = encodingParam;
		}
	}

	/**
	 * <读取filter配置的默认编码方式>
	 */
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain filterChin) throws IOException, ServletException
	{
		request.setCharacterEncoding(encoding);
		filterChin.doFilter(request, response);
	}

	public void destroy()
	{
	}
}


	<filter>
	     <filter-name>EncodingFilter</filter-name>
	     <filter-class>com.supan.framework.filter.EncodingFilter</filter-class>
	     <init-param>
	         <param-name>encoding</param-name>
	         <param-value>UTF-8</param-value>
	     </init-param>
	</filter>
	<filter-mapping>
	     <filter-name>EncodingFilter</filter-name>
	     <url-pattern>/*</url-pattern>
	</filter-mapping>



3,处理完get,post请求的参数编码之后,为每个jsp页面加入page指令,设置相应页面的编码方式为UTF-8,

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
或者直接在代码中设置相应的编码方式:
response.setCharacterEncoding("UTF-8");


至此系统统一编码处理,已经处理完毕,在所有地方都不能设置request,respon的编码格式也能正常显示中文字符。
下面是个实例:
登陆页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  
  <script type="text/javascript">
     function clearUserNameAndPassword()
     {
    	 document.getElementById("userName").value = "";
    	 document.getElementById("password").value = "";
     }
  </script>
  
  <body onload="clearUserNameAndPassword();">
    This is my JSP page. <br>
    <form action="dealLogin.jsp" method="get" autocomplete="false">
      <input type="text" name="userName" id="userName" autocomplete="false"/>
      <input type="password" name="password" id="password" autocomplete="false"/>
      <input type="submit" name="登陆"/>  
    </form>
  </body>
</html>


登陆处理页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <body>
      <%
         String userName = request.getParameter("userName");
         String password = request.getParameter("password");
      %>
      <%= userName %>
      <%= password %>
  </body>
</html>



注意:如果读取数据库数据,则需要把数据库编码统一设置成utf-8的编码

分享到:
评论

相关推荐

    web程序开发中的URL乱码解决方案

    在服务器端/后台/后台程序中设置请求流和响应流的编码方式和页面上的编码方式一致:request().setCharacterEncoding("utf-8");response().setCharacterEncoding("ut f-8");response().setContentType("text/html;...

    PHP和MySQL Web开发第4版pdf以及源码

    2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的...

    决战Nginx系统卷:高性能Web服务器详解与运维第一部分(保证能用)

    第17章 Nginx与编码 第18章 网页压缩传输 第19章 控制Nginx如何记录日志 第20章 map模块的使用 第21章 Nginx预防应用层DDoS攻击 第22章 为Nginx添加、清除或改写响应头 第23章 重写URI 第24章 Nginx与服务器...

    决战Nginx系统卷:高性能Web服务器详解与运维第二部分(保证能用)

    第17章 Nginx与编码 第18章 网页压缩传输 第19章 控制Nginx如何记录日志 第20章 map模块的使用 第21章 Nginx预防应用层DDoS攻击 第22章 为Nginx添加、清除或改写响应头 第23章 重写URI 第24章 Nginx与服务器...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维第三部分(保证能用)

    第17章 Nginx与编码 第18章 网页压缩传输 第19章 控制Nginx如何记录日志 第20章 map模块的使用 第21章 Nginx预防应用层DDoS攻击 第22章 为Nginx添加、清除或改写响应头 第23章 重写URI 第24章 Nginx与服务器...

    PHP和MySQL WEB开发(第4版)

    2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的初始化 ...

    hi web服务器源码

    一个 Web 浏览器,例如 Firefox或 Internet Explorer,用于请求一个特定的页面,并且以人类可读的方式显示从另一... 一个 Web 服务器,通常是在远程机器上,负责对页面请求作出响应,返回 HTML 编码的或类似的数据流。

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    4.9 以编程方式对时间值进行编码 80 4.10 解码ASP.NET的视图状态 81 4.11 解码多重编码 83 第5章 篡改输入 85 5.1 截获和修改POST请求 86 5.2 绕过输入限制 89 5.3 篡改URL 90 5.4 自动篡改URL 93 5.5 测试对URL...

    PHP和MySQL Web开发第4版

    2.10 更好的方式:数据库管理系统 2.10.1 使用普通文件的几个问题 2.10.2 RDBMS是如何解决这些问题的 2.11 进一步学习 2.12 下一章 第3章 使用数组 3.1 什么是数组 3.2 数字索引数组 3.2.1 数字索引数组的...

    WEB安全测试

    4.9 以编程方式对时间值进行编码 80 4.10 解码ASP.NET的视图状态 81 4.11 解码多重编码 83 第5章 篡改输入 85 5.1 截获和修改POST请求 86 5.2 绕过输入限制 89 5.3 篡改URL 90 5.4 自动篡改URL 93 5.5 测试对URL...

    JSONRPC2:一组用于编码/解码 JSON RPC 消息的类:用于解析和序列化 JSON-RPC 2.0 请求/响应的类。 通过方法访问消息部分。-matlab开发

    背景---------- JSON... RPC 数据包通常传递一个相关 id 以匹配对原始调用的响应、标识应发送响应的消息队列的响应队列名称,以及保存一个或多个支持协议格式的消息的值(这里我们处理的是JSONRPC协议)。 JSON

    ssh(structs,spring,hibernate)框架中的上传下载

    这样,我们就再没有必要通过硬编码的方式,先insert然后再update来完成Blob类型数据的持久化,这个原来难伺候的老爷终于被平民化了。关于lobHandler的配置请见本文后面的内容。  此外lazy="true"说明地返回整个...

    Ajax课件学习(免费)

    简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。 XMLHttpRequest是XMLHTTP组件的对象,通过这个对象,AJAX可以像桌面应用程序一样只同服务器进行数据层面的交换,而...

    ASP《信息论与编码》在线考试系统(源代码+thesis).zip

    异步编程:我们将使用ASP.NET提供的异步编程模型来处理并发请求和长时间运行的任务。这将提高应用程序的并发能力和响应性能,确保用户在高负载情况下仍然能够流畅地使用应用程序。 性能优化:我们将使用一系列性能...

    JMeter操作手册大全.docx

    请求响应时间 从客户端发出请求到得到响应的整个时间 一般包括网络响应时间+server的响应时间。 用户接受准则: 例如2-5-10原则,即按照正常用户体验,如果用户能够在2秒内得到响应,会感觉速度很快,如果2-5秒...

    Servlet与JSP核心编程第2版

    第4章 客户请求的处理:表单数据 4.1 表单数据的作用 4.2 在servlet中读取表单数据 4.3 示例:读取3个参数 4.4 示例:读取所有参数 4.5 参数缺失或异常时默认值的应用 4.6 过滤字符串中的html特殊字符 ...

    ASP.NET4高级程序设计(第4版) 3/3

    2.4.3 事件如何与事件处理程序连接 46 2.5 Web项目 47 2.5.1 基于项目的开发 47 2.5.2 创建Web项目 48 2.5.3 迁移旧版Visual Studio创建的网站 49 2.6 Visual Studio调试 51 2.6.1 单步调试 52 2.6.2 ...

    JSP动态网站开发基础教程与实验指导(从基础到应用)光盘

    8.2.3 Servlet请求和响应相关 182 8.2.4 配置相关 186 8.2.5 会话跟踪 188 8.2.6 Servlet异常相关 192 8.3 Servlet配置选项 192 8.3.1 元素及其子元素 192 8.3.2 元素及其子元素 194 8.4 用Servlet生成动态图片 195 ...

    基于AJAX技术的电子商城系统的设计与开发

    其中AJAX技术运用于浏览器中,以向服务器索取网页的部分信息为主,提高整个页面的刷新效率,更好实现动态显示和交互,使用户请求和服务器响应异步化;Struts是一个基于J2EE平台的经典MVC框架,主要采用Servlet和JSP...

    【卷一/共两卷】AJAX实战pdf高清版90M

    6.2.1 处理自己请求的响应 6.2.2 处理其他用户提交的更新 6.3 为Ajax设计通知系统 6.3.1 对通知建模 6.3.2 定义用户界面需求 6.4 实现通知框架 6.4.1 显示状态栏图标 6.4.2 显示详细的通知信息 6.4.3 集成 6.5 用...

Global site tag (gtag.js) - Google Analytics