首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

struts1 myeclipse tomcat 从页面失去乱码

2012-09-18 
struts1 myeclipse tomcat 从页面得到乱码我在页面的下拉列表中显示数据库(sqlserver)的中文数据,能正常显

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">&nbsp;</td>
  <td align="center" valign="middle" class="style15">&nbsp;</td>
  <td width="50">&nbsp;</td>
  </tr>
   
   
   
   
  <tr>
  <td width="50">&nbsp;</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乱码处理~~

热点排行