请问注册页面给不出提示怎么解决0.0

请问注册页面给不出提示怎么解决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()">&nbsp;&nbsp;&nbsp;&nbsp;换一张</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

登陆购买课程后可参与讨论,去登陆

3回答
提问者 Daisy3924553 2019-04-28 09:24:07

问题已经解决。 是因为我的跳转方法存在逻辑死循环的问题。比如

    req.setAttribute("msg","用户名重复");
                      req.getRequestDispatcher(req.getContextPath()+"/RegistServlet").forward(req,resp);

应该是

req.getRequestDispatcher(req.getContextPath()+"/xxx.jsp").forward(req,resp);

否则就会出现死循环。

好帮手慕阿满 2019-04-25 15:25:10

同学你好,同学的Servlet中存在着一些问题,在servlet中重写了doPost()和doGet()方法,所有的逻辑代码应该在都doPost()或doGet()方法中,自定义的regist()方法就没有执行。所以这里建议同学将所有的逻辑代码都写在doGet()方法中再试试。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Daisy3924553 #1
    不是很懂,我不是都在doget方法中写的逻辑么。0.0 post方法内容直接是doget()啊0.0
    2019-04-25 16:21:41
  • 好帮手慕阿满 回复 提问者 Daisy3924553 #2
    同学的regist()方法的代码也应该写在doGet()方法中才能执行。建议同学servlet中除了doGet()和doPost()方法不要写其他的方法。祝:学习愉快~
    2019-04-25 16:57:58
  • 提问者 Daisy3924553 回复 好帮手慕阿满 #3
    好的,我先试试。谢谢老师
    2019-04-25 17:01:44
提问者 Daisy3924553 2019-04-25 07:54:18

http://img1.sycdn.imooc.com//climg/5cc0f6fb0001d78602030059.jpg

http://img1.sycdn.imooc.com//climg/5cc0f6fb00014e0e14791196.jpg

从图中可以看到报错信息是statu500  然后注册的错误提示没有显示。 但是后台查看是执行到了验证码不一致这一步的。 所以想知道该怎么办 谢谢老师

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师