JSP页面中文参数的传递(get和post方法分析)

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

◆URL方式

例如:

http://website/test1.jsp?act=add&type=苹果&param=%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=苹果&param=%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方法的分析对你的编程设计有帮助。

(0)

相关推荐

  • JSP之表单提交get和post的区别详解及实例

    JSP之表单提交get和post的详解及实例 一 get和post的区别 二 实战(post方式提交) 1.login.jsp <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" %> <% String path = request.getContextPath(); String basePath = req

  • JSP、Servlet中get请求和post请求的区别总结

    在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于Servlet中get请求和post请求的区别,现总结如下: 1:请求数据的大小不同. 因为get请求的数据是要追加到URL中,而URL的数据量一般不能超过2K,所以用get请求的方法对数据的大小有限制.而post请求方法是把数据放在消息体中,所以理论上对数据量没有限制.(但是实际操作中也不能能太大) 2:安

  • JSP页面中文参数的传递(get和post方法分析)

    在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如: http://website/test1.jsp?act=add&type=苹果&param=%20D%20B ◆FORM方式 例如: 复制代码 代码如下: ﹤form name=test   mehtod="post"﹥   ﹤input type=hidden name=text2 value="中文"﹥   ﹤input type=text na

  • php post json参数的传递和接收处理方法

    页面1 ,php传递json参数的页面: 1.php <? function http_post_data($url, $data_string) { $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHE

  • React将组件作为参数进行传递的3种方法实例

    目录 前言 方式一:直接传递 jsx 创建好的元素 方式二:直接传递组件本身 方式三:传递一个返回组件的函数 三种方案的对比 总结 前言 在日常的开发中,开发通用组件的机会其实并不多,尤其是在各种组件库已经遍地都是的情况下.而作为一个通用组件库的使用者,经常会看到把 React 组件作为参数传递下去的场景,每当这个时候,其实或多或少都会有一些疑问,比如:有些组件传递下去的是组件名,而有些组件传递下去的是一个箭头函数返回一个组件,而有些直接传递一个 jsx 创建好的元素,这些传递方案的适用场景如何

  • JSP页面的静态包含和动态包含使用方法

    JSP中有两种包含:静态包含:<%@include file="被包含页面"%>和动态包含:<jsp:include page="被包含页面"flush="true">.下面以一个例子来说明如何使用包含. 实例: 项目文件树: header.jsp文件中内容: <html> <head> <meta http-equiv="Content-Type" content=&qu

  • 从js向Action传中文参数出现乱码问题的解决方法

    做项目的时候,发现Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题:但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象.几经询问百度,上面说法很多. 经过实践发现下面的方法可以解决中文乱码问题: JSP的JS中:中文参数用encodeURI(encodeURI(中文参数)),经过两次转码.例如: 复制代码 代码如下: function show(next,id,realName){ document.forms['f2'].a

  • 一个JSP页面导致的tomcat内存溢出的解决方法

    今天新能测试组的同事找我看一个奇怪的现象.一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS).但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下: 复制代码 代码如下: <%@ page language="java" contentType="text/html

  • 微信小程序实现页面跳转传值以及获取值的方法分析

    本文实例讲述了微信小程序实现页面跳转传值以及获取值的方法.分享给大家供大家参考,具体如下: 在安卓中页面跳转传值都是通过bundle,现在研究一下小程序的列表跳转及页面传值. my.wxml <view class="container"> <view bindtap="bindViewTap" class="userinfo"> <image class="userinfo-avatar" sr

  • JSP页面中文传递参数使用escape编码

    今天在使用中文传递参数时,遇到死活编码转不过去,于是想到了用escape,在使用后 request.getParameter接收不到参数,于是想着怎么能够接收到参数. 经过试验,通过 复制代码 代码如下: zbtmp=escape(escape(zbtmp));//加密2次danielinbiti var params = "name="+zbtmp; window.open('showzsgraph.jsp?params); 然后可以通过request.getParameter获取到

  • C语言中二维数组作为函数参数来传递的三种方法

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char str[ ][5] ) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]); } void main() { char* p[3]; char str[][5] = {"abc&quo

  • ThinkPHP采用GET方式获取中文参数查询无结果的解决方法

    在用ThinkPHP做tags标签的时候,出现了一个问题,就是能获取到参数,但是查不出相应的结果.查看数据库发现数据是存在的.问题出在哪了呢? 形如http:/www.XXXX.com/tags/index/%E8%87%AA%E5%8A%A8%E9%AA%8C%E8%AF%81.html的调用 参数是经过urlencode()编码了的,使用urldecode()函数进行解码,再进行查询仍然没有结果. 紧接着测试转换编码iconv()函数,结果成功了. 浏览器默认的编码是GB2312的,而这个项

随机推荐