原文 http://developer.51cto.com/art/200907/133499.htm

在项目中,我们经常遇到需要在JSP页面切换中传递中文字符。这主要有两种方式。

◆URL方式

例如:

  1. http://website/test1.jsp?act=add&type=苹果&param=%20D%20B

◆FORM方式

例如:

  1. ﹤form name=test   mehtod="post"﹥
  2. ﹤input type=hidden name=text2 value="中文"﹥
  3. ﹤input type=text name=text1﹥
  4. ﹤input type=submit value=submit﹥
  5. ﹤/form﹥

我们将针对这两种情况,分别提供中文正确传递的解决方法。

JSP页面中文参数传递之情况1:URL方式

例如:

  1. http://website/test1.jsp?act=add&type=苹果&param=%20D%20B

一般来说我们很少直接在URL里面把参数写成中文,如例子中的"type=苹果"这样传递。如果出现这种情况,在我们的接收参数的页面我们只需要做个简单的转换就可以了。

JSP页面中文参数传递实现之代码test1.jsp:(主要部分)

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. ﹤%
  3. String type = request.getParameter("type");
  4. String result = new String(type.getBytes("iso-8859-1"), "gb2312");
  5. out.println(result);
  6. %﹥

更普遍的做法,就是对URL中的中文字符进行编码,变成类似type=%20D%20B这样的字符。

JSP页面中文参数传递实现之代码MyJsp1.jsp:

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. ﹤%@ page import="java.net.*" %﹥
  3. ﹤a href='./MyJsp2.jsp?act=﹤%=URLEncoder.encode("中国人 非常好 =-")%﹥'﹥test﹤/a﹥

JSP页面中文参数传递实现之代码MyJsp2.jsp

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. ﹤%@ page import="java.net.*" %﹥
  3. String tempVal = URLDecoder.decode(request.getParameter("act"));
  4. 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:

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. ﹤form action="./MyJsp2.jsp" method="post" enctype="application/x-www-form-urlencoded" ﹥
  3. ﹤input type=hidden name=act value=动作 /﹥
  4. ﹤input type=submit value=ok﹥
  5. ﹤/form﹥

JSP页面中文参数传递实现之代码MyJsp2.jsp:

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. request.setCharacterEncoding("gb2312");
  3. out.println(request.getParameter("act"));

或者

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. String tempVal = request.getParameter("act");
  3. out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));

◆﹤form method=get﹥情况。

JSP页面中文参数传递实现之代码MyJsp1.jsp:

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. ﹤form action="./MyJsp2.jsp" method="get" enctype="application/x-www-form-urlencoded" ﹥
  3. ﹤input type=hidden name=act value=动作 /﹥
  4. ﹤input type=submit value=ok﹥
  5. ﹤/form﹥

JSP页面中文参数传递实现之代码MyJsp2.jsp:

  1. ﹤%@ page language="java" import="java.util.*" pageEncoding="gb2312"%﹥
  2. String tempVal = request.getParameter("act");
  3. 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方法分析的更多相关文章

  1. 如何彻底解决jsp页面中文乱码及数据库乱码

    最近自己闲做一个小项目,搭建环境框架SSH+MySQL数据库,遇到一个问题:jsp页面中文显示乱码,数据库插入数据和更新数据时中文也显示乱码,后来在网上找了许多解决方法,还是折腾了两天才把问题解决,下 ...

  2. jsp页面中文乱码解决方案

    一.JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码. 先看一个JSP程序: <%@ page language=&q ...

  3. JSP页面的五种跳转方法

    ①RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Se ...

  4. JSP页面中文乱码问题

    $.get()方法到服务器端中文乱码 在jsp页面使用encodeURI(“中文”),在服务器端进行解码 String name = req.getParameter("name" ...

  5. 解决JSP页面中文乱码插入到数据库的问题

    在JSP页面使用表单注册一个用户名的时候,查看到数据库里面的表中文显示乱码的情况有两种: 1.JSP页面传进来的参数中文就是乱码,则是前台的问题,这个时候写一个过滤器就好了,可以写如下的一个过滤器 p ...

  6. MyEclipse JSP页面中文字符不能保存

      问题: 就是写HTML+JSP代码时有些中文,保存时提示sava could not be completed. Reason: some characters cannot be mapped ...

  7. 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决

    1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("paramete ...

  8. 1、spring mvc jsp页面中文乱码

    jsp 页面头部 的page标签中加个 contentType="text/html;charset=utf-8"

  9. eclipse中jsp页面Invalid location of tag 解决办法分析小结

    在jsp页面使用标签过程中有时候不注意规则的话,eclipse会提示一些错误,下面针对这些错误提出相应的解决办法: <form></form>标签 1. Invalid loc ...

随机推荐

  1. docker_openwrt

    http://wiki.openwrt.org/doc/howto/docker_openwrt_image https://www.baidu.com/s?wd=lxc%20docker&r ...

  2. SRM 598 DIV1

    A 只有3种情况:200以上的单独装,3个100的装一起,某两个u,v装一起且u+v<=300, 所以做法是从大到小判断每个大小的最大能与它装一起的是谁,最后剩下100的特判. B 第一轮如果未 ...

  3. 自制USB wifi信号放大天线

    这是我的usb wifi天线第一个版本,灵感来自: http://www.instructables.com/id/EQARE4I72GEPUCHTHU/ http://www.usbwifi.orc ...

  4. Spring 的优秀工具类盘点第 1 部分

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  5. 如何在 Android 手机上实现抓包?

    如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...

  6. AllocConsole

    #include<iostream> using namespace std; AllocConsole(); freopen("CONIN$", "r+t& ...

  7. 利用libevent的timer实现定时器interval

    在不怎么了解libevent的情况下,看到timer这个关键字想到可以用来做定时任务,官方资料也不齐全,就从代码里看到了TIMEOUT字样,这么说来应该是支持timeout了,那interval呢,貌 ...

  8. Laravel-表单篇-controller

    (慕课网_轻松学会Laravel-表单篇_天秤vs永恒老师_http://www.imooc.com/learn/699) Controller 1.Controller-Request //Requ ...

  9. Hacker(24)----防范密码被轻易破解

    无论什么类型密码,用户在设置时都有非常小心,防止自己设置的密码被他人轻易破解.为保护重要的文件和资料,可采用加密工具进行加密,即可选择Win7系统自带的BitLocker,也可使用Internet中很 ...

  10. CoreText中坐标转换的一些理解

    引言 学习CoreText,最初的想法是写一个杂志类的应用,因为对网易和zarca应用一些技术的疑问,所以,自己有了很强的兴趣欲和钻研欲,开始这段有点不顺的学习过程. 难题 1.对CGContextR ...