小弟最近初学jsp,学习书籍是《JSP实用案例教程》 清华大学出版社,冯燕奎写的,在做一个投票系统的案例。我代码中所有的编码方式都是utf-8,包括文件编码也是utf-8。
tomcat 里的web.xml 设置的也是utf-8<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
<jsp-config>
    <jsp-property-group>  
        <description>     
            Special property group for JSP Configuration JSP example.  
        </description>  
        <display-name>JSPConfiguration</display-name>  
        <url-pattern>*.jsp</url-pattern>  
        <el-ignored>true</el-ignored>  
        <page-encoding>UTF-8</page-encoding>  
        <scripting-invalid>false</scripting-invalid>  
        <include-prelude></include-prelude>  
        <include-coda></include-coda>  
       
   <description>     
            Special property group for JSP Configuration JSP example.  
        </description>  
        <display-name>JSPConfiguration</display-name>  
        <url-pattern>*.html</url-pattern>  
        <el-ignored>true</el-ignored>  
        <page-encoding>UTF-8</page-encoding>  
        <scripting-invalid>false</scripting-invalid>  
        <include-prelude></include-prelude>  
        <include-coda></include-coda>
     </jsp-property-group>
</jsp-config>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>我又两个问题想请教大家。第一个,增加项目提交form表单时中文乱码;
第二个,增加项目、删除项目之后details.jsp,admin.jsp页面需要刷新一次才能显示更改后的数据。数据库是用书上的例子实用Access数据库,数据库连接正常,各种操作也正常。下面是代码:
后台管理页面
admin.jsp<%@page contentType="text/html;charset=UTF-8"%>
<%@page language="java" import="java.sql.*"%>
<jsp:useBean id="connDbBean" scope="page" class="vote.VoteConn"/>
<script language="JavaScript">
       window.location.reload();
</script>  
<html>
<head>
<title>后台</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#ffffff">
<div align="center">
<p><font color="#990000" size="+2"><u>调查系统维护中心</u></font></p>
<%
ResultSet tempRs=connDbBean.executeQuery("select id,note from vote order by id");
%>
<table width="80%" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="10%" class="text1" bgcolor="#99ccff">
<div align="center">序号<div>
</td>
<td width="80%" class="text1" bgcolor="#99ccff">
<div align="center">内容<div>
</td>
<td width="10%" class="text1" bgcolor="#99ccff">
<div align="center">^_^<div>
</td>
</tr>
<%
int i =1;
while(tempRs.next())
{%>

<tr>
<td><div align="center"><%=i%></div></td>
<td align="center"><%=tempRs.getString("note")%></td>
<td><div align="center"><a href="delvote.jsp?id=<%=tempRs.getInt("id")%>" >删除</a></div></td>
</tr>
<%
i=i+1;
}
%>
<tr>
<td colspan="3">
<hr width="100%" size="1">
</td>
</tr>
<tr>
<td class="text1"><div align="center"></div>
</td>
<td class="text1" colspan="2">&nbsp;</td>
</tr>
<tr>
<td class="text1" colspan="3" bgcolor="#99ccff">增加项目
</td>
</tr>
<tr>
<td class="text1" colspan="3">
<form method ="post" action="addvote.jsp">
<p>内容
<input type="text" name="note" size="50" maxlength="50">
</p>
<p>
<input type="submit" name="Submit" value="提交"">
<input type="reset" name="Submit2" value="重置">
</p>
<p>&nbsp;</p>
</form>
</td>
</tr>
</table>
<%
tempRs.close();
%>
</body>
</html>
增加项目的页面:
addvote.jsp<%@page contentType="text/html;charset=UTF-8"%>
<%@page language="java" import="java.sql.*"%>
<jsp:useBean id="connDbBean" scope="page" class="vote.VoteConn"/>
<%
String nn=request.getParameter("note");
if(nn!=null&&nn.length()>0)
{
ResultSet tmpRs=connDbBean.executeQuery("select max(id) as maxid from vote");
tmpRs.next();
int max_id =tmpRs.getInt("maxid")+1;
tmpRs.close();
String sql="insert into vote values("+max_id+",'";
sql+=nn+"',0);";
System.out.println(sql);
connDbBean.executeUpdate(sql);
}
response.sendRedirect("admin.jsp");
        //我从<jsp:forward page="admin.jsp">换成response.sendRedirect("admin.jsp")还是需要刷新一次才能正常显示
%>
delvote.jsp
删除项目<%@page contentType="text/html;charset=UTF-8"%>
<%@page language="java" import="java.sql.*"%>
<jsp:useBean id="connDbBean" scope="page" class="vote.VoteConn"/>
<%
String d_id=request.getParameter("id");
if(d_id!=null&&d_id.length()>0){
connDbBean.executeUpdate("delete from vote where id="+d_id);
System.out.println("delete from vote where id="+d_id);
}
response.sendRedirect("admin.jsp");//同样的问题
%>

解决方案 »

  1.   

    http://blog.csdn.net/lip009/article/details/1192022JSP中文乱码问题总结 
      

  2.   

    JSP的乱码问题可以归结为客户端向服务端发送和服务端想客户端发送,request和respnose两个对象正确编码,最好使用过滤器Filter来完成编码问题,可以参考一下jsp编码问题:http://www.docin.com/p-67846166.html
      

  3.   

    谢谢楼上几位的解答,我添加了过滤器解决了乱码问题了。还有admin.jsp页面需要刷新才能显示修改后的数据,这个问题还没解决?不知几位大哥有什么高见。
      

  4.   

    我在大量查阅网上资料后,都得不出解决方案。终于找到一个帖子,不知道是不是这个原因大家帮忙看一看。http://topic.csdn.net/t/20040928/17/3416648.html
      

  5.   

    问题解决了,把解决方案弄出来:用javascript设置一个判断,就能重新刷新。选好位置很重要,我放在tmpRs.close();之后刷新。还有针对浏览器缓存问题,在<head></head>标签中加入<meta http-equiv="Expires" CONTENT="0">
    <meta http-equiv="Cache-Control" CONTENT="no-cache">
    <meta http-equiv="Pragma" CONTENT="no-cache"> <script>
    if(window.name != "bencalie"){
       location.reload();
         window.name = "bencalie";
    }
    else{
       window.name = "";
    }
    </script>