我的jsp下:
    <form id="form1" name="form1" method="get" action="RegisterServlet" onSubmit="return mycheck()">
用户名:<input type="text" name="username" id="textfield" /><br><br>
密码:   <input type="password" name="password" />
          <input type="submit" name="button" id="button" value="注册" />
          <input type="reset" name="reset" id="button2" value="重置" />
</form>
通过此jsp调用RegisterServlet,RegisterServlet程序如下:
package ServletPackeg;import DBConnectionPackeg.DBConnection;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class RegisterServlet extends HttpServlet {

public RegisterServlet() {
super();
}
public void destroy() {
super.destroy(); 
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
        
DBConnection conn=new DBConnection();
String username=request.getParameter("username");
byte[]   tmpbyte=username.getBytes("ISO8859_1");   
        username=new   String(tmpbyte);  
        HttpSession session = request.getSession(true);    
        session.setAttribute("user",username);     
String password=request.getParameter("password");
String sqlselect="select * from register";
String sqlupdate="insert into register(username,password)values('"+username+"','"+password+"')";
ResultSet rs=(ResultSet)conn.executeQuery(sqlselect);
try{
while(rs.next()){
if(request.getParameter("username")==rs.getString("username")){
out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');"); 
out.print("history.go(-1); </script>");
}
}
}catch(SQLException e){}
    int i=conn.executeUpdate(sqlupdate);
    if(i!=0){
      String url ="registersuccess.jsp?id="+username;   
      response.sendRedirect(url);   
    }     
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
          doGet(request,response);
}
public void init() throws ServletException {

}}
但是只能执行插入操作,为什么不能先从数据库里读出来和用户名比较后再插进去呢,请教各位了,就是这段语句执行不了:
ResultSet rs=(ResultSet)conn.executeQuery(sqlselect);
try{
while(rs.next()){
if(request.getParameter("username")==rs.getString("username")){
out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');"); 
out.print("history.go(-1); </script>");
}
}
}catch(SQLException e){}
谢谢各位,这问题困了我很长时间,请各位多多帮忙

解决方案 »

  1.   

    request.getParameter("username")==rs.getString("username")字符串比较不是用==而是equals
      

  2.   

    楼主得多看看练练基础string比较用equals,sql语句可以直接查询username
      

  3.   

    我将"=="改为equals后,为什么
    out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');"); 
    out.print("history.go(-1); </script>");
    又执行不了呢请帮助
      

  4.   

    <form id="form1" name="form1" method="get" action="RegisterServlet" onSubmit="return mycheck()"> 
    我感觉是这里有问题看一下你的web.xml
    action的属性应该是该文件servlet的映射地址
      

  5.   

    这里是对了,其它的都能执行,如果输入的名字和数据库中的用户名字段的某个值相等已不能插进数据库,如果不相等则能插进去,问题是不能插进数据库时我要提醒用户此用户名已存在,但是
    if(request.getParameter("username")==rs.getString("username")){ 
    out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');"); 
    out.print("history.go(-1); </script>"); 
    } 这里面的提示信息输不出呀,请你们帮帮忙哦,谢谢
      

  6.   

    本质问题是out.print和sendredirect是矛盾的,既是直接在response输出,又是重定向
      

  7.   

    还是没用呀,我把response这条语句注释后还是执行不了if中的语句,求求各位了
      

  8.   

    if(request.getParameter("username")==rs.getString("username")){ 
    out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');"); 
    out.print("history.go(-1); </script>");
     return ; 

    在if判断语句结束之后加return,如果用户名存在就返回,不执行下面的语句.
    如果不加的话程序就继续向下执行,所以if里的语句执行了你也看不到效果.
      

  9.   

    String name1 = request.getParameter("username");
    String name2 = rs.getString("username");System.out.println(name1+"\n"+name2);if(name1.equals(name2)){
    out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');"); 
    out.print("history.go(-1); </script>"); 
    }我刚刚试过这个,是好用的。
    如果还不行的话就看看是不是你获取的数据有问题
    看一下打印结果。