<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ page import="java.sql.*" %>
<%@   page   contentType="text/html;charset=gbk"   %>    
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
int id=Integer.parseInt(request.getParameter("id"));
int rootid=Integer.parseInt(request.getParameter("rootid"));
%>
<html>
<head>
<title>回复帖子内容</title>
</head>
  
<body>  <form action="ReplyOK.jsp" mothed="post" name="aa"> 
<input type="hidden" name="id" value="<%=id %>">
<input type="hidden" name="rootid" value="<%=rootid %>">
<table>
<tr>
<td>
<input type="text" name="title" size="81">
</td>
</tr>
<tr>
<td>
<textarea cols="80" rows="12" name="cont"></textarea>
</td>
</tr>
<tr>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>

</body>
</html>
以上是写的页面。接下来是处理页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=GBK"   %>    
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
request.setCharacterEncoding("GBK");

int id=Integer.parseInt(request.getParameter("id"));
int rootid=Integer.parseInt(request.getParameter("rootid"));
String title=request.getParameter("title");
String cont=request.getParameter("cont");
Class.forName("com.mysql.jdbc.Driver");
 //   String url="jdbc:mysql://localhost/bbs2?user=root&password=root";
  String url="jdbc:mysql://localhost/bbs2?useUnicode=true&characterEncoding=gbk&user=root&password=root"; 
    Connection conn=DriverManager.getConnection(url);
    conn.setAutoCommit(false);
    
    String sql="insert into article values (null,?,?,?,?,now(),0)";
    PreparedStatement pstmt=conn.prepareStatement(sql);
    Statement stmt=conn.createStatement();
    
    pstmt.setInt(1,id);
    pstmt.setInt(2,rootid);
    pstmt.setString(3,title);
    pstmt.setString(4,cont);
    pstmt.executeUpdate();
 //   stmt.executeUpdate("insert into article values(null,"+rootid+","+'"title"'+","'"cont"'",now(),0"+")")
   // stmt.executeUpdate("insert into article values(null,19,'women','neirong',now(),0)");
    stmt.executeUpdate("update article set isleaf = 1 where id="+id);
    conn.commit();
    conn.setAutoCommit(true);
    pstmt.close();
    stmt.close();
    conn.close();
%>
<html>
<head>
<title>回复成功</title></head>
  
<body>   
<%System.out.println(title); %> //测试
<%response.sendRedirect("ShowArticleTree.jsp") ;%>
</body>
</html>
经过测试知道是接收参数出了问题该做的都做了 不知道怎么解决啊。。谢谢了

解决方案 »

  1.   

    中文乱码问题,我以前是用段话搞定的,下面是一段有关对SQL语句转换的方法public String convert(String str) {
            byte newstr[]=new byte[str.length()];
            for (int i = 0; i < str.length(); i++) {
            newstr[i]=(byte)str.charAt(i);
            }
            return new String(newstr);
       }
      

  2.   

       最安全的办法就是加个过滤器,你的tomcate是不是版本5的啊?
      

  3.   

    xml中加个中文过滤器项目中所有的中文都不用管了
      

  4.   

    String title=request.getParameter("title"); 
    这个时候title是乱码吗?
      

  5.   

    你的web.xml里有没有配置其他的过滤器?
      

  6.   

    过滤器,可以自己写,也可以用web.xml里面配置,简单的,自己找
      

  7.   

    * 解决乱码问题的过滤器类 

    * @author coombe 
    */ 
    public class SetCharacterEncodingFilter implements Filter { 
    /** 字符编码 */ 
    protected String encoding = null; 
    /** 过滤器配置器,init初始化过滤器方法中使用它取得web.xml中的配置参数 */ 
    protected FilterConfig filterConfig = null; /** 
    * 初始化过滤器方法 
    * @param filterConfig FilterConfig对象,系统初始化本类的实例时调用该方法 
    * 并传递它,用于读取web.xml中的配置参数。..........
      

  8.   

    加个过滤器一、MyFilter
    package com.wq.common;
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;public class MyFilter implements Filter {

    private String encoding="";
    private boolean enable=false;
    public void destroy() {
    }
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    arg0.setCharacterEncoding("utf-8");
    arg2.doFilter(arg0, arg1);
    } public void init(FilterConfig config) throws ServletException {
    }
    }
    二、在web.xml中配置  <filter>
       <filter-name>MyFilter</filter-name>
       <filter-class>com.wq.common.MyFilter</filter-class>
      </filter>
      <filter-mapping>
       <filter-name>MyFilter</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  9.   

    通过字符构造方法如下:
    String title=new String(request.getParameter("title").getBytes("8859_1"),"gb2312");
    你可以测试下.
      

  10.   

    用过滤器,所有提交的数据都过滤,或者:String title=new String(request.getParameter("title").getBytes("8859-1"),"UTF-8");这样,是把页面的name='title'的值的编码改成“UTF-8”编码。
     
      

  11.   

    request.setCharacterEncoding("gbk");
    加上这句
      

  12.   

    加一个过滤器
    request.setCharacterEncoding("utf-8");