我的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){}
谢谢各位,这问题困了我很长时间,请各位多多帮忙
<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){}
谢谢各位,这问题困了我很长时间,请各位多多帮忙
out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');");
out.print("history.go(-1); </script>");
又执行不了呢请帮助
我感觉是这里有问题看一下你的web.xml
action的属性应该是该文件servlet的映射地址
if(request.getParameter("username")==rs.getString("username")){
out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');");
out.print("history.go(-1); </script>");
} 这里面的提示信息输不出呀,请你们帮帮忙哦,谢谢
out.print(" <script language=javascript>alert('此用户名已存在,请换个用户名重试');");
out.print("history.go(-1); </script>");
return ;
}
在if判断语句结束之后加return,如果用户名存在就返回,不执行下面的语句.
如果不加的话程序就继续向下执行,所以if里的语句执行了你也看不到效果.
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>");
}我刚刚试过这个,是好用的。
如果还不行的话就看看是不是你获取的数据有问题
看一下打印结果。