<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import="java.sql.*"%>
<%!
public static final String DRIVER="com.mysql.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/sms?useUnicode=true&characterEncoding=GBK";
public static final String USER="root";
public static final String PWD="bush";
%>
<%
Connection conn=null;
PreparedStatement pst=null;
ResultSet rs=null;
boolean flag=false;
String name=request.getParameter("username");
String pwd=request.getParameter("userpass");
String sql="select uid from user where uname=? and upwd=?";
try{
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,USER,PWD);
pst=conn.prepareStatement(sql);
pst.setString(1,name);
pst.setString(2,pwd);
rs=pst.executeQuery();
while(rs.next()){
int i=rs.getInt("uid");
out.println("<h1>"+i+"</h1>");
}
if(rs.next()){
flag=true;
session.setAttribute("uname",name);
}
}catch(Exception e){

}finally{
try{
rs.close();
pst.close();
conn.close();
}catch(Exception e){
}
}
if(flag){
%>
<jsp:forward page="main.jsp"/>
<%
}else{
%>
<jsp:forward page="fail.html"/>
<%
}
%>我也刚开始练习jsp,写了个登陆操作,用户名如果是英文的话可以,但是换成中文就总是验证失败啊!
mysql数据库的编码是GBK,所有的页面编码也都是GBK。
那位大神给支个招?小弟菜鸟一名,求教了!

解决方案 »

  1.   

    我打印了,没个用户有个id,英文名称的话有结果,就是用户id,如果是中文名字的话就没结果,连id都打印不出来
      

  2.   

    1.String name=request.getParameter("username");
    打印name
    2.String sql="select uname,upwd from user";
    打印uname,和upwd
      

  3.   

    加入多个System.out.println语句,验证是否有乱码。
      

  4.   

    啊!那个那么打印出来时乱码,可是我的表单页的编码和jsp页,以及浏览器的都一样啊!这个是什么问题呢?
      

  5.   

    试试这个jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
      

  6.   


    我的这个jdbc:mysql://localhost:3306/sms?useUnicode=true&characterEncoding=GBK
      

  7.   


    jdbc:mysql://localhost:3306/sms?useUnicode=true&characterEncoding=GBK
      

  8.   

    打开你的网页,右键,编码,看看是不是gbk编码
      

  9.   

    还有在String name=request.getParameter("username");
    之前加入 request.setEncoding("GBK");
      

  10.   


    页面编码就是gbk,但是在String name=request.getParameter("username")
    前加request.setEncoding("gbk");出错了,说request对象没有这个方法。
      

  11.   


    终于搞定了!!加个reques.setCharacterEncoding("gbk");就好了!谢谢啊!
    我自己还是学艺不精啊!