逻辑很简单,用一个if语句判断,前面的register.jsp是可以转到的,但后面的registerSuccess.jsp看不到,浏览器里一片空白。insert语句可以执行,数据库中也有显示,但为什么看不到这个应该显示registerSuccess.jsp内容的Servlet呢试着把registerSuccess.jsp和register.jsp掉换了一下,现在能看到registerSuccess.jsp,又看不到register.jsp了,也就是说只能重定向到前一个页面,奇怪!查了很多资料也没弄明白。
if (rs.next()) {
// 如果记录集为非空,表明有相匹配的用户名,注册失败:
result = "已经存在相同的用户名,请更换一个新用户名";
request.setAttribute("result", result);
request.setAttribute("user", user);
try {
request.getRequestDispatcher("/register.jsp").forward(
request, response);
} catch (Throwable t) {
getServletContext().log(t.getMessage());
}
} else {
// 否则(记录集为空),表明不存在该用户:
// sql语句:
sql = "insert into userinfo(UserName,UserPwd,RealName,"
+ "gender,telnumber,email,homepage) values('"
+ strUserName + "','" + strPassword + "','"
+ strRealName + "','" + intGender + "','" + strTel
+ "','" + strEmail + "','" + strHomePage + "')";
// 执行sql语句:
stmt.executeUpdate(sql);
request.setAttribute("user",user);
try {
request.getRequestDispatcher("/registerSuccess.jsp").forward(
request, response);
} catch (Throwable t) {
getServletContext().log(t.getMessage());
}
}
if (rs.next()) {
// 如果记录集为非空,表明有相匹配的用户名,注册失败:
result = "已经存在相同的用户名,请更换一个新用户名";
request.setAttribute("result", result);
request.setAttribute("user", user);
try {
request.getRequestDispatcher("/register.jsp").forward(
request, response);
} catch (Throwable t) {
getServletContext().log(t.getMessage());
}
} else {
// 否则(记录集为空),表明不存在该用户:
// sql语句:
sql = "insert into userinfo(UserName,UserPwd,RealName,"
+ "gender,telnumber,email,homepage) values('"
+ strUserName + "','" + strPassword + "','"
+ strRealName + "','" + intGender + "','" + strTel
+ "','" + strEmail + "','" + strHomePage + "')";
// 执行sql语句:
stmt.executeUpdate(sql);
request.setAttribute("user",user);
try {
request.getRequestDispatcher("/registerSuccess.jsp").forward(
request, response);
} catch (Throwable t) {
getServletContext().log(t.getMessage());
}
}
request, response);就可以了,无必要在两个地方都写这个,如果你有N各地方需要判断,这句是不是要写N次呢?
然后用response.sendRedirect代替request.getRequestDispatcher().forward()
转到相应页面后,再从session中getAttribute()