JSP页面中文参数传递get和post方法分析
原文 http://developer.51cto.com/art/200907/133499.htm
在项目中,我们经常遇到需要在JSP页面切换中传递中文字符。这主要有两种方式。
◆URL方式
例如:
- http://website/test1.jsp?act=add&type=苹果¶m=%20D%20B
◆FORM方式
例如:
- ﹤form name=test mehtod="post"﹥
- ﹤input type=hidden name=text2 value="中文"﹥
- ﹤input type=text name=text1﹥
- ﹤input type=submit value=submit﹥
- ﹤/form﹥
我们将针对这两种情况,分别提供中文正确传递的解决方法。
JSP页面中文参数传递之情况1:URL方式
例如:
- http://website/test1.jsp?act=add&type=苹果¶m=%20D%20B
一般来说我们很少直接在URL里面把参数写成中文,如例子中的"type=苹果"这样传递。如果出现这种情况,在我们的接收参数的页面我们只需要做个简单的转换就可以了。
JSP页面中文参数传递实现之代码test1.jsp:(主要部分)
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- ﹤%
- String type = request.getParameter("type");
- String result = new String(type.getBytes("iso-8859-1"), "gb2312");
- out.println(result);
- %﹥
更普遍的做法,就是对URL中的中文字符进行编码,变成类似type=%20D%20B这样的字符。
JSP页面中文参数传递实现之代码MyJsp1.jsp:
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- ﹤%@ page import="java.net.*" %﹥
- ﹤a href='./MyJsp2.jsp?act=﹤%=URLEncoder.encode("中国人 非常好 =-")%﹥'﹥test﹤/a﹥
JSP页面中文参数传递实现之代码MyJsp2.jsp
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- ﹤%@ page import="java.net.*" %﹥
- String tempVal = URLDecoder.decode(request.getParameter("act"));
- out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));
JSP页面中文参数传递之情况2:FORM方式
请注意,我们只是讨论在﹤form enctype="application/x-www-form-urlencoded" ﹥这种形式的中文情况,因为在enctype="multipart/form-data"的时候通过解析出来中文也可以运用这种方法进行字符转化,所以 不再重复讨论。
◆﹤form method=post﹥这种情况最简单。
JSP页面中文参数传递实现之代码MyJsp1.jsp:
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- ﹤form action="./MyJsp2.jsp" method="post" enctype="application/x-www-form-urlencoded" ﹥
- ﹤input type=hidden name=act value=动作 /﹥
- ﹤input type=submit value=ok﹥
- ﹤/form﹥
JSP页面中文参数传递实现之代码MyJsp2.jsp:
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- request.setCharacterEncoding("gb2312");
- out.println(request.getParameter("act"));
或者
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- String tempVal = request.getParameter("act");
- out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));
◆﹤form method=get﹥情况。
JSP页面中文参数传递实现之代码MyJsp1.jsp:
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- ﹤form action="./MyJsp2.jsp" method="get" enctype="application/x-www-form-urlencoded" ﹥
- ﹤input type=hidden name=act value=动作 /﹥
- ﹤input type=submit value=ok﹥
- ﹤/form﹥
JSP页面中文参数传递实现之代码MyJsp2.jsp:
- ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
- String tempVal = request.getParameter("act");
- out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));
以上就是关于JSP页面中文参数传递get和post方法分析,但是本文不讨论针对URL进行加密的操作,只是针对URL中文的基本编码处理。另 外,在Javascript中可以运用escape(),encodeURI(),encodeURICompoent()进行相关的URL编码;可以作 为JavaScript中文编码的参考解决方案。希望通过这样简单的对JSP页面中文参数传递get和post方法的分析对你的编程设计有帮助。
JSP页面中文参数传递get和post方法分析的更多相关文章
- 如何彻底解决jsp页面中文乱码及数据库乱码
最近自己闲做一个小项目,搭建环境框架SSH+MySQL数据库,遇到一个问题:jsp页面中文显示乱码,数据库插入数据和更新数据时中文也显示乱码,后来在网上找了许多解决方法,还是折腾了两天才把问题解决,下 ...
- jsp页面中文乱码解决方案
一.JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码. 先看一个JSP程序: <%@ page language=&q ...
- JSP页面的五种跳转方法
①RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Se ...
- JSP页面中文乱码问题
$.get()方法到服务器端中文乱码 在jsp页面使用encodeURI(“中文”),在服务器端进行解码 String name = req.getParameter("name" ...
- 解决JSP页面中文乱码插入到数据库的问题
在JSP页面使用表单注册一个用户名的时候,查看到数据库里面的表中文显示乱码的情况有两种: 1.JSP页面传进来的参数中文就是乱码,则是前台的问题,这个时候写一个过滤器就好了,可以写如下的一个过滤器 p ...
- MyEclipse JSP页面中文字符不能保存
问题: 就是写HTML+JSP代码时有些中文,保存时提示sava could not be completed. Reason: some characters cannot be mapped ...
- 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决
1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("paramete ...
- 1、spring mvc jsp页面中文乱码
jsp 页面头部 的page标签中加个 contentType="text/html;charset=utf-8"
- eclipse中jsp页面Invalid location of tag 解决办法分析小结
在jsp页面使用标签过程中有时候不注意规则的话,eclipse会提示一些错误,下面针对这些错误提出相应的解决办法: <form></form>标签 1. Invalid loc ...
随机推荐
- 关于group by
<pre name="code" class="sql">关于group by 排序问题 10g 以前sort group by 需要排序 10g ...
- BZOJ1116: [POI2008]CLO
1116: [POI2008]CLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 565 Solved: 303[Submit][Status] ...
- Mac下配置phpredis扩展
最近把开发环境从windows转到Mac下,所有的环境都要重新来配置.由于Mac是基于unix系统的不太熟悉,所以遇到了很多问题. 安装phpredis扩展: 首先,大家先下载phpredis的扩展包 ...
- Corrupted MAC on input
Corrupted MAC on input Incorrect MAC received on packet
- redis 学习笔记二 (简单动态字符串)
redis的基本数据结构是动态数组 一.c语言动态数组 先看下一般的动态数组结构 struct MyData { int nLen; char data[0]; }; 这是个广泛使用的常见技巧,常用来 ...
- poj 3176 Cow Bowling(dp基础)
Description The cows don't use actual bowling balls when they go bowling. They each take a number (i ...
- stardict词典(星际译王)
sudo apt-get install stardict 下载词库: http://abloz.com/huzheng/stardict-dic/zh_CN/ 把下载的压缩包解压,以a为例cd /u ...
- 基于css制作轮播图的部分效果
在轮播图中,我们可以通过鼠标在特定位置上的滑动来实现元素背景的改变.通常在制作轮播图时,我们首先想到的是js中的交互.可是,如果我们无法使用js,只能单纯的靠css又该如何实现这一效果呢?下面,本人将 ...
- 自定义seekbar中,thumb被覆盖掉一部分问题
- HDOJ 4937 Lucky Number
当进制转换后所剩下的为数较少时(2位.3位),相应的base都比較大.能够用数学的方法计算出来. 预处理掉转换后位数为3位后,base就小于n的3次方了,能够暴力计算. . .. Lucky Numb ...