登录servlet成功拿到后台返回的0登录成功状态,但是无法跳转到server.jsp页面

登录servlet成功拿到后台返回的0登录成功状态,但是无法跳转到server.jsp页面

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import service.CourseService;
import service.CourseServiceImpl;


public class LoginServlet extends HttpServlet {

    /**
     *
     */
    private static final long serialVersionUID = 1L;
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        String checkCode = request.getParameter("checkCode");
        String msg="";
        CourseService csi = new CourseServiceImpl();
        int loginStatus = csi.login(name, password);
        String kaptchaExpected = (String)request.getSession() .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);  
        System.out.println(kaptchaExpected);
        if(loginStatus==0&&checkCode!=null&&checkCode.equals(kaptchaExpected)) {
            request.getServletContext().setAttribute("name", name);
            msg="{loginStatus:'0',msg:'登录成功'}";
            System.out.println("登录成功");
            response.getWriter().print(msg);
            
            request.getRequestDispatcher("/classm/jsp/server.jsp").forward(request, response);
        }else {
            if(loginStatus==1) {
                msg="{loginStatus:'1',msg:'您的用户名或密码不正确!'}";
                response.getWriter().print(msg);        
            }else {
                msg="{loginStatus:'-1',msg:'验证码错误!'}";
                response.getWriter().print(msg);    
            }
        }
    }
}


正在回答 回答被采纳积分+1

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

6回答
好帮手慕阿满 2019-12-21 16:20:30

同学是使用的Ajax提交的数据吗?如果是Ajax提交的数据,是不能使用request.getRequestDispather().forward()进行转发。在我们的课程中,注册登录都是使用的表单提交数据,然后转发对应的页面。如果同学使用的是Ajax,建议同学在页面中,使用window.location.href进行跳转即可。

祝:学习愉快~

好帮手慕阿满 2019-12-20 17:42:56

同学你好,由于某些限制,这边并不能下载网盘中内容。

在如下代码中,建议同学删除如下的response.getWriter.print();再试试。

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

如果classm是项目名,在进行转发时,将classm去掉。

另外建议同学解决一下浏览器控制台的报错,同学的项目中是没有LoginSer的映射吗?

祝:学习愉快~

  • 提问者 陈梁君 #1
    老师你好,我这边已经解决了跳转的问题,我在网上查询说如果页面使用ajax提交请求的话servlet就不能使用request.getRequestDispatcher进行跳转,需要在页面用window.location.href跳转, 这个好像跟我们的视频教程有些不一样哦
    2019-12-21 13:25:14
提问者 陈梁君 2019-12-20 15:01:00

百度网盘链接老师,我上传了我的作业项目,麻烦你帮我看看什么问题,登录成功后无法跳转到指定的页面

  • 提问者 陈梁君 #1
    提取码:5e6x
    2019-12-20 15:01:30
提问者 陈梁君 2019-12-20 14:43:40
好帮手慕阿满 2019-12-20 11:05:20

同学你好,问一下同学是否写了登陆判断的过滤器,过滤器中是怎么判断的?另外在同学的截图中发现有404的报错,如:

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

建议同学查看一下路径是否正确,LoginSer映射是否存在。

祝:学习愉快~

  • 提问者 陈梁君 #1
    你好,我没有写过滤器的,在servlet中已经进入到第一个if了 只是无法跳转这句话 request.getRequestDispatcher("/classm/jsp/server.jsp").forward(request, response); 这句前面已经打印了“登录成功”
    2019-12-20 14:43:17
提问者 陈梁君 2019-12-19 21:35:38
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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