Get请求编码
遇到get请求中文编码的时候,有的人会采用在Tomcat/conf/server.xml中的如下添加一句:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
即:URIEncoding="utf-8"
但是这种方法不可采取!!!
为什么那?原因是:我们写的代码客户用的时候,不一定用Tomcat服务器,可能用webLogic等服务器,所以不可能让客户修改服务器,这是不可取的方法,牢记!!!
一般采用如下的方法:
String name=response.getParameter("username");
//因为服务器是iso编码格式的,所以我们反编译回来
byte[] bytes=name.getBytes("ISO-8859-1");
name=new String(bytes,"utf-8");
完整例子如下:
(1)form.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'form.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
</br>
<form action="OneServlet" method="post">
姓名:<input type="text" name="username" value="张三"/></br>
<input type="submit" name="提交"/><br/>
</form>
<a href="OneServlet?username=李四">点击</a>
</body>
</html>
(2)OneServlet如下:
package com.shujia;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class OneServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name=request.getParameter("username");
byte[] bytes=name.getBytes("iso-8859-1");
name=new String(bytes,"utf-8");
System.out.println("get name:"+name );
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//首先request.setCharacterEncoding("utf-8");防止中文乱码必须要在获取值之前添加
request.setCharacterEncoding("utf-8");
String name=request.getParameter("username");
System.out.println("name:"+name);
}
}
补充一点: URL编码:我们需要把超链接中的所有中文编码,防止信息泄露,被别人利用
String name="张三";
String s=URLEncoder.encode(name,"utf-8");//URL编码
String s=URLDecoder.decode(name,"utf-8");//URL解码
Get请求编码的更多相关文章
- 各种编码问题产生原因以及解决办法---------响应编码,请求编码,URL编码
响应编码 产生原因以及解决办法: 示例: package cn.yzu; import java.io.IOException; import javax.servlet.ServletExcept ...
- servlet请求编码与响应编码问题(编码不一致可能会导致乱码)
html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...
- 处理全站请求编码,无论是GET还是POST,默认是UTF-8
1.java类: import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;imp ...
- javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
乱码是一个经常出现的问题 请求中,参数传递的过程中也是经常出现乱码的问题 本文主要整理了请求乱码中的问题以及解决思路 先要理解一个概念前提: 编码就是把图形变成数值码所以说: 图形的字符 -- ...
- java 使用GET请求编码问题解决
java GET请求解决编码的有效代码前端: encodeURI(encodeURI("你好") 后端代码: String name = request.getParameter( ...
- GET&&POST请求编码过程
编码.解码 我们在开发过程中不可避免的一个话题就是编码和解码,那么什么是编码什么是解码呢?为什么要进行编码和解码呢?下面我们一一分析! 编码和解码的概念 编码是信息从一种形式或格式转换为另一种形式的过 ...
- JavaWeb之动态代理解决request请求编码问题
动态代理解决编码问题 1.设计模式 出现原因:软件开发过程中,遇到相似问题,将问题的解决方法抽取模型(套路) 常见设计模式:单例,工厂,适配器,装饰者,动态代理. 2.装饰者模式简单介绍 谷歌汽车开发 ...
- javaweb笔记5之请求编码问题
post提交: 设置实体内容的编码:request.setCharacterEncoding("utf-8"); 注意:一定要在获取所有参数之前设置,否则设置无效! get方式提交 ...
- 动态代理实现设置tomcat请求编码
1)htmlcode: <html> <head> <title>$Title$</title> </head> <body> ...
随机推荐
- 利用BMFont和NGUI制作字体集
Unity中常常需要制作字体,也算是Unity的基本优势吧!其实质就是BMFont和NGUI制作字体.这里把步骤介绍一下: 1.先下载BMFont这个工具 2.Font Settings 设置:(1 ...
- 161215、MySQL 查看表结构简单命令
一.简单描述表结构,字段类型desc tabl_name;显示表结构,字段类型,主键,是否为空等属性,但不显示外键.二.查询表中列的注释信息select * from information_sche ...
- json学习小记
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 规则引擎以及blaze 规则库的集成初探之三——Blaze规则引擎和SRL
原文地址:http://jefferson.iteye.com/blog/68604 在上面介绍利用JSR94的api使用的章节中,我们使用的具体引擎的实现是一个商业产品,如果想了解Drools的使用 ...
- 图论$\cdot$最短路问题
Dijkstra单源最短路径算法 Dijkstra可以计算出发点到每个点的最短路,及单源最短路径(SSSP).这一特点使得Dijkstra常常用来进行其他算法的预处理.用Dijkstra算法计算最短路 ...
- Python Locust性能测试框架实践
[本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...
- Linux 各文件夹介绍
http://www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命 ...
- gitlab open ssl
cd /home/git/gitlab/ sudo -u git -H vi config/gitlab.yml sudo -u git -H vi /home/git/gitlab-shell/co ...
- js继承之call,apply和prototype随谈
在js中,call,apply和prototype都可以实现对象的继承,下面我们看一个例子: function FatherObj1() { this.sayhello = "I am jo ...
- Linux下文件删除的原理
Linux文件删除的原理: Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除,一般来说每个文件都有2个link计数器:i_count和i_n ...