熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Jsp傳遞中文參數詳解

2013-11-15 12:02:06  來源: JSP教程 

  目前在jsp頁面中傳遞中文參數主要有兩種方式

  URL方式例如桔子&param=%D%B
     FORM方式例如
        <form name=test   mehtod="post">
        <input type=hidden name=text value="中文">
        <input type=text name=text>
        <input type=submit value=submit>
       </form>
     下面針對這兩種情況分別提供中文正確傳遞的解決方法

  方式URL方式
例如桔子&param=%D%B
一般來說我們很少直接在URL裡面把參數寫成中文如例子中的"type=桔子"這樣傳遞如果出現這種情況在我們的接收參數的頁面我們只需要做個簡單的轉換就可以了

  代碼testjsp(主要部分)
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
<%
 String type = requestgetParameter("type");
 String result = new String(typegetBytes("iso") "gb");      
 outprintln(result);   
%>

  還有更普遍的做法是對url中的中文字符進行編碼變成類似type=%D%B這樣的字符

  代碼MyJspjsp
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
<%@ page import="javanet*" %>
<a href=’/MyJspjsp?act=<%=URLEncoderencode("北京人 非常好 =")%>’>test</a>

  代碼MyJspjsp:
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
<%@ page import="javanet*" %>
String tempVal = URLDecoderdecode(requestgetParameter("act"));
outprintln(new String(tempValgetBytes("ISO") "gb"));

  方式FORM方式
     注意我們只是討論在<form enctype="application/xwwwformurlencoded" >這種形式的中文情況因為在enctype="multipart/formdata"的時候通過解析出來中文也可以運用這種方法進行字符轉化所以不再重復討論

  <form method=post>這種情況最簡單
代碼MyJspjsp:
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
<form action="/MyJspjsp" method="post" enctype="application/xwwwformurlencoded" >
<input type=hidden name=act value=動作 />
<input type=submit value=ok>
</form>

  代碼MyJspjsp:

  <%@ page language="java" import="javautil*" pageEncoding="gb"%>
requestsetCharacterEncoding("gb");
outprintln(requestgetParameter("act"));
或者
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
String tempVal = requestgetParameter("act");
outprintln(new String(tempValgetBytes("ISO") "gb"));
<form method=get>情況 代碼MyJspjsp:
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
<form action="/MyJspjsp" method="get" enctype="application/xwwwformurlencoded" >
<input type=hidden name=act value=動作 />
<input type=submit value=ok>
</form>

  代碼MyJspjsp:
<%@ page language="java" import="javautil*" pageEncoding="gb"%>
String tempVal = requestgetParameter("act");
outprintln(new String(tempValgetBytes("ISO") "gb"));

  另
      本文不討論針對URL進行加密的操作只是針對URL中文的基本編碼處理另外在Javascript中可以運用escape()encodeURI()encodeURICompoent()進行相關的URL編碼可以作為Javascript中文編碼的參考解決方案


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20129.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.