ajax+jsp连接mysql验证用户名是否存在的问题 100
publicstaticfinalStringDBDRIVER="com.mysql.jdbc.Driver";publicstaticfinalStringDBURL=...
public static final String DBDRIVER="com.mysql.jdbc.Driver";
public static final String DBURL="jdbc:mysql://localhost:8889/username";
public static final String DBUSER="root";
public static final String DBPASS="root";
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
request.setCharacterEncoding("gbk");
response.setContentType("text/html");
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
PrintWriter out=response.getWriter();
String userid=request.getParameter("userid");//接受验证的用户名
try{
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
String sql=" select * from name where username=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,userid);
rs=pstmt.executeQuery();
if(rs.next()){
if(rs.getString("username")==userid){ ///这一行应该有问题,怎么改????
out.println("true");
}else{out.println("false");
}
}
out.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
数据库表为username,有三个人名
check.jsp 下面是两个函数
无论我输入的人名是否在数据库,它都提示此用户ID可以注册,说明request.responseText 永远不返回true。到底哪里出问题了? 展开
public static final String DBURL="jdbc:mysql://localhost:8889/username";
public static final String DBUSER="root";
public static final String DBPASS="root";
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
request.setCharacterEncoding("gbk");
response.setContentType("text/html");
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
PrintWriter out=response.getWriter();
String userid=request.getParameter("userid");//接受验证的用户名
try{
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
String sql=" select * from name where username=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,userid);
rs=pstmt.executeQuery();
if(rs.next()){
if(rs.getString("username")==userid){ ///这一行应该有问题,怎么改????
out.println("true");
}else{out.println("false");
}
}
out.close();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
数据库表为username,有三个人名
check.jsp 下面是两个函数
无论我输入的人名是否在数据库,它都提示此用户ID可以注册,说明request.responseText 永远不返回true。到底哪里出问题了? 展开
3个回答
展开全部
if(rs.next()){
if(rs.getString("username")==userid){ ///这一行应该有问题,怎么改????
out.println("true");
}else{out.println("false");
}
}
out.close();
改成
if(rs.next()){
if(rs.getString("username")==userid){ ///这一行应该有问题,怎么改????
out.println("true");
}else{out.println("false");
}
}
out.flush(); //清空缓存
out.close();
看看。
java流输出需要先强制清空缓存区把内容发送出去再关闭流。直接关闭有时可能没有把内容发送出去。最好先用浏览器打开确认下Servlet页面是否有内容输出了。
if(rs.getString("username")==userid){ ///这一行应该有问题,怎么改????
out.println("true");
}else{out.println("false");
}
}
out.close();
改成
if(rs.next()){
if(rs.getString("username")==userid){ ///这一行应该有问题,怎么改????
out.println("true");
}else{out.println("false");
}
}
out.flush(); //清空缓存
out.close();
看看。
java流输出需要先强制清空缓存区把内容发送出去再关闭流。直接关闭有时可能没有把内容发送出去。最好先用浏览器打开确认下Servlet页面是否有内容输出了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学会找原因,调试一下看看你的Servlet获取传来的userid时得到的是什么值。或者你在这里直接给userid一个默认值,测试能否成功。
追问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
rs.getString("username")==userid
字符串用equals比较试试
字符串用equals比较试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询