站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题急! JSP与Servlet的联接出现中文乱码的问题

急! JSP与Servlet的联接出现中文乱码的问题

摘要: 急! JSP与Servlet的联接出现中文乱码的问题


JSP与Servlet的联接出现中文乱码的问题
系统:Windows Server 2003,Eclipse+Tomcat5
程序:从JSP页面提交一个中文字符串到Servlet,Servlet接收后再将这个字符串返回给JSP页面显示。
问题:这样一去一来,返回到JSP页面中文字符串显示是乱码。
DyListAction.java中的26行调试代码显示也是乱码。去掉24行的代码注释“//”,执行代码,26行显示正常,JSP页面接收返回数据也可以正

常显示。
疑问:是不是JSP传到Servlet的编码有问题呢?因为执行24行的代码,可以正常的返回到JSP

急,请大家帮帮忙
==============================================================
dyList.jsp (JSP页面)
-----------
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<head>

</head>
<script language="javascript">
var XMLHttpReq=false;//创建XMLHttpRequest对象
function createXMLHttpRequest(){
if(window.XMLHttpRequest) { //Mozilla 浏览器
XMLHttpReq = new XMLHttpRequest();
}
else if (window.ActiveXObject) { // IE浏览器
try{
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e) {
try {
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e) {}
}
}
}
function sendRequest(url){
createXMLHttpRequest();
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
XMLHttpReq.send(null); //发送请求
}
function processResponse(){
if (XMLHttpReq.readyState == 4) {
if (XMLHttpReq.status == 200) { //信息已经成功返回,开始处理信息
var res=XMLHttpReq.responseText;
window.alert(res);
}else{
window.alert("您所请求的页面有异常。");
}
}
}
//==============================================
function refreshList(){
var sort="李小王";
var url="dyList?sort="+sort;
sendRequest(url);
}
</script>

<body>
<input type="Button" value="发送" onclick="refreshList()">
</body>

=======================================================================

DyListAction.java (Servlet)
------------------
1 package classmate;
2 import java.io.IOException;
3 import java.io.PrintWriter;
4 import java.sql.ResultSet;
5 import java.sql.SQLException;
6
7 import javax.servlet.ServletConfig;
8 import javax.servlet.ServletException;
9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 public class DyListAction extends HttpServlet {
14
15 public void init(ServletConfig config) throws ServletException{
16}
17
18public void doGet(HttpServletRequest request, HttpServletResponse response)
19throws ServletException, IOException {
20//设置接收信息的字符集
21request.setCharacterEncoding("UTF-8");
22//接收浏览器端提交的信
23String sort=request.getParameter("sort");
24//sort="李小王";
25
26System.out.println(sort);
27//设置输出信息的格式及字符
28response.setContentType("text/xml;charset=UTF-8");
29response.setHeader("Cache-Control","no-cache");
30//创建输出流对
31PrintWriter out=response.getWriter();
32out.println(sort);
33out.close();
34}
35 }

=======================================================================




(4)如果是通过"a.jsp?param=中文"传递参数,则需要:
a.在传参数之前先把参数进行转码:java.net.URLEncoder.encode(param);
取值用java.net.URLDncoder.dncode(param);再转回中文
b.在你的Tomcat目录conf目录server.xml里找出这段:

port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"


↑返回目录
前一篇: FileDialog 实现文件多选?
后一篇: 给个思想,和建议投骰子游戏应用程序