最近在做一个同学录管理方面的东西, 数据库采用mysql5.0, 通过jsp页面获取的登录用户名和密码同对应servlet提交请求, servlet中调用了一个Bean写的函数logon用于验证用户是否可以登录系统, 函数申明如下:
public static UserInfo logon(String username, String password)
{
Connection conn = null;
ResultSet rs = null;
PreparedStatement ps = null;
UserInfo user = null;
try
{
conn = DataBaseBean.getConnection(); String queryString = "select * from tongxunlulist where loginname=? and password=?";
ps = conn.prepareStatement(queryString);
ps.setString(1, username);    //
ps.setString(2, password);
rs = ps.executeQuery(); while(rs.next())
{
//进行相应操作
return user;
}
rs.close();
ps.close();
}
catch(SQLException e)
{
//错误处理
}
finally
{
//关闭连接
}
return null;
}
       当servlet 中获取到jsp传入的用户名(中文)和密码后调用logon会出错, 我也想到了编码方面的问题, 做过了很多测试, 比如将
上面的语句:
       ps.setString(1, "小明");    //username直接赋值为"小明", 程序正常运行,但是如果在servlet传递参数方式就出错, 如果不用中文参数传递程序可以完好运行, 如果说是编码的问题, 那么为什么我在执行数据插入时采用ps.setString(1,中文)中文传递到数据库后中文又是正常显示的, 搞得现在的系统都只能要求用户名不能为英文, 不然会出现无法登录的情况, 如果有哪位可以解答, 感谢之极 

解决方案 »

  1.   

    1、在表单递交的时候,表单form的method选择post
    2、然后在servlet的处理方法中第一行写编码处理,即加:request.setCharacterEncoding("gbk");
    这样就可以了。
      

  2.   

    我为了处理用户提交的中文信息, 在servlet中已经这样做了, 用户注册界面中有很多信息是中文的, 可以正常添加进数据库, 但是一旦用:
    sql = "select * from para=?";
    ps.setString(1, para1);//当调用时, para1为中文就出错,其它都OK