请问注册页面给不出提示怎么解决0.0
//首先是JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>
<link rel="stylesheet" href="css/reg.css">
<script src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
function changeImg() {
$("#img").attr('src','kaptcha.jpg?' + new Date());
}
</script>
</head>
<body>
<div class="reg">
<div class="header">
<h1>
<a href="">登录</a>
<a href="${pageContext.request.contextPath}/RegistServlet">注册</a>
</h1>
<button></button>
</div>
<%
String msg="";
if(request.getAttribute("msg")!=null&&request.getAttribute("msg")!=""){
msg=(String)request.getAttribute("msg");
}
%>
<font color="red"><%=msg%></font>
<form action="${pageContext.request.contextPath}/RegistServlet?method=regist" method="post">
<div class="name">
<input type="text" id="name" name="name" placeholder="请输入用户名">
<p></p>
</div>
<div class="pwd">
<input type="password" id="pwd1" name="password" placeholder="6-16位密码,区分大小写,不能用空格">
<p></p>
</div>
<div class="confirm-pwd">
<input type="password1" id="pwd2" placeholder="确认密码">
<p></p>
</div>
<div class="idcode">
<input type="text" id="verificationCode" name="code" placeholder="请输入验证码">
<img id="img" src="kaptcha.jpg">
<a href='#' onclick="javascript:changeImg()"> 换一张</a>
<div class="clear"></div>
</div>
<div class="btn-red">
<input type="submit" value="注册" id="reg-btn">
</div>
</form>
</div>
</body>
</html>
//然后是SERVLET界面
package web.servlet;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import demo.User;
import service.UserService;
import service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 完成用户的注册,如果注册失败,则跳转注册页面;注册成功,则跳转到登录页进行登录
*/
@WebServlet("/RegistServlet")
public class RegistServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String methodName = req.getParameter("method");
req.getRequestDispatcher(req.getContextPath()+"/reg.jsp").forward(req,resp);
if("regist".equals(methodName)){
//执行注册的方法
System.out.println("注册方法执行了");
regist(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
/**
* 用户注册的方法
* @param req
* @param resp
*/
private void regist(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
//获取用户传递过来的验证码
String code = req.getParameter("code");
//获取验证码框架产生的验证码(会话中存储的验证码)
String sessionCode = (String)req.getSession().getAttribute("kcode");
if(code!=null&sessionCode!=null) {
//如果用户输入的验证码和产生在服务器端的验证码一致,就执行取出其他数据
if (code.equalsIgnoreCase(sessionCode)) {
String name= req.getParameter("name");
String passWord= req.getParameter("password");
String passWord1= req.getParameter("password1");
//如果密码和确认密码也一致,就封装数据
if(passWord.equals(passWord1)){
User user=new User();
user.setUserName(name);
user.setPassWord(passWord);
//调用service中的注册方法
UserService userService=new UserServiceImpl();
int i=userService.regist(user);
if(i>0){
req.setAttribute("msg","注册成功");
req.getRequestDispatcher(req.getContextPath()+"/登录SERVLET").forward(req,resp);
}else {
req.setAttribute("msg","用户名重复");
req.getRequestDispatcher(req.getContextPath()+"/RegistServlet").forward(req,resp);
}
}else {
req.setAttribute("msg","密码不相同");
req.getRequestDispatcher(req.getContextPath()+"/RegistServlet").forward(req,resp);
}
} else {
System.out.println("验证码不一致");
String msg="验证码不一致";
req.setAttribute("msg",msg);
req.getRequestDispatcher(req.getContextPath()+"/RegistServlet").forward(req,resp);
}
}
}
}
//至于DAO层和SERVICE层的方法我没有贴出来。 应该无关紧要。
//重点是在提交注册以后。我的MSG信息无法正确添加到JSP页面来显示。
//错误代码说是statu 500。 但是我找不出错的地方 请老师看看
正在回答 回答被采纳积分+1
问题已经解决。 是因为我的跳转方法存在逻辑死循环的问题。比如
req.setAttribute("msg","用户名重复");
req.getRequestDispatcher(req.getContextPath()+"/RegistServlet").forward(req,resp);
应该是
req.getRequestDispatcher(req.getContextPath()+"/xxx.jsp").forward(req,resp);
否则就会出现死循环。
从图中可以看到报错信息是statu500 然后注册的错误提示没有显示。 但是后台查看是执行到了验证码不一致这一步的。 所以想知道该怎么办 谢谢老师
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星