struts1 myeclipse tomcat 从页面得到乱码
我在页面的下拉列表中显示数据库(sqlserver)的中文数据,能正常显示。但选中下拉列表的值,通过action的处理,再跳转到下一个页面显示这个中文时,是乱码。怎么办啊。。。
第一个页面,能显示从数据库得到的值
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.ResultSet"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'ddWmz.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<style type="text/css">
<!--
.button1 {border:1px solid #999999;
font-size:12px;
font-family:Tahoma;
background-color:#ffffcc
}
.style1 {color: #006699;
font-weight: bold;
font-family: "黑体";
font-size: 12px;
}
.style10 {font-size: 12px; color: #006699; font-family: "黑体"; }
.style14 {font-size: 12px; color: #FFFFFF; font-family: "黑体"; font-weight: bold; }
.style15 {color: #006699; font-weight: bold;
font-size:16px;
font-family: "楷体";
}
.style20 {color: #000000; font-size: 12px; font-family: "黑体"; }
.style26 {color: #FF3300}
a:link {
color: #009977;
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #003366;
}
a:hover {
text-decoration: underline;
color: #006699;
}
a:active {
text-decoration: none;
color: #006699;
}
-->
</style>
<script type="text/javascript">
function next()
{
document.form1.action="Ccxs.do";
document.form1.submit();
}
function onchange2()
{
document.form1.action="xxxx.jsp";
document.form1.submit();
}
</script>
</head>
<body>
<form name="form1" method="post" >
<table width="760" border="0" align="center" cellspacing="0">
<tr>
<td colspan="3"><span class="style1">订票</span></td>
</tr>
<tr>
<td colspan="3"><hr size="1" /></td>
</tr>
<tr>
<td width="50"> </td>
<td align="center" valign="middle" class="style15"> </td>
<td width="50"> </td>
</tr>
<tr>
<td width="50"> </td>
<td width="660" align="center" valign="middle" class="style15">
<%
ResultSet rs1 = (ResultSet)session.getAttribute("tjz");
String number ="";
%>
<tr class="style15">
<td width="200" align="right" bgcolor="#ffffff">出 发 站:</td>
<td class="style15" align="left" bgcolor="#ffffff">
<select name="cfz">
<option value="no"></option>
<%
if(rs1!=null){
while(rs1.next()){
String s = rs1.getString("tjz");
out.print("<option value=");
out.print(s);
out.print(">"+s); // 这里会从数据库中得到中文 镇江
out.print("</option>");
}
rs1.beforeFirst();
}%>
</select>
</td>
</tr>
<tr>
<td class="style15" align="right" bgcolor="#ffffff">到 达 站:</td>
<td class="style15" align="left" bgcolor="#ffffff">
<select name="ddz">
<option value="no"></option>
<%
if(rs1!=null){
while(rs1.next()){
String s = rs1.getString("tjz");
out.print("<option value=");
out.print(s);
out.print(">"+s);
out.print("</option>");
}
}%>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>
然后跳转到下一个 页面,有action 和actionform,如下
Action:
package com.train.struts;
import java.sql.ResultSet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.train.model.CcgmM;
public class CcgmAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
request.setCharacterEncoding("utf-8");
CcgmActionForm ccgmaf = (CcgmActionForm)form;
String cfz = ccgmaf.getCfz();
request.setAttribute("cfz", cfz);
String ddz = ccgmaf.getDdz();
request.setAttribute("ddz", ddz);
String zwdj = ccgmaf.getZwdj();
request.setAttribute("zwdj", zwdj);
String number = request.getParameter("number");
request.setAttribute("number", number);
String gmzs = ccgmaf.getGmzs();
CcgmM ccgm = new CcgmM();
ResultSet price = ccgm.price(cfz,ddz,zwdj,number,gmzs);
request.setAttribute("price", price);
return mapping.findForward("success");
}
}
actionForm:
package com.train.struts;
import org.apache.struts.action.ActionForm;
public class CcgmActionForm extends ActionForm {
private String cfz;
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getCfz() {
return cfz;
}
public void setCfz(String cfz) {
this.cfz = cfz;
}
public String getDdz() {
return ddz;
}
public void setDdz(String ddz) {
this.ddz = ddz;
}
public String getZwdj() {
return zwdj;
}
public void setZwdj(String zwdj) {
this.zwdj = zwdj;
}
public String getGmzs() {
return gmzs;
}
public void setGmzs(String gmzs) {
this.gmzs = gmzs;
}
private String ddz;
private String zwdj;
private String gmzs;
}
这里在action中得到的上一个页面的值都是乱码。。。。
[解决办法]
代码太长,直接回答吧:
1·保证所有文件编码格式一致
2·针对post请求,写一个拦截器
3·针对Get请求,在tomcat的Server.xml中的connector标签下添加URIEncoding="UTF-8"
[解决办法]
加个Filter,过滤编码
[解决办法]
百度之 jsp乱码处理~~