读书人

struts1 myeclipse tomcat 从页面失去

发布时间: 2012-09-18 16:21:42 作者: rapoo

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乱码处理~~

读书人网 >Java Web开发

热点推荐