例如:
package com.lcz.controller;
import com.lcz.pojo.User;
import com.lcz.service.UserService;
import com.lcz.util.IOCUtil;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "/Login.do", value = "/Login.do")
public class LoginController extends HttpServlet {
//无论哪种提交方式,总是会访问service方法
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("userName");
String userPassword = request.getParameter("userPassword");
String id = request.getSession().getId();
request.getSession().setAttribute("cookId", id);
UserService service = IOCUtil.getService(UserService.class, request);
User user = service.Login(userName, userPassword);
if (user != null) {//登录成功
//把user的cookid存入数据库
Boolean aBoolean = service.updateUserCookId(user.getUserId(), id);
request.getSession().setAttribute("userId", user.getUserId());
System.out.println("用户的cookid更新结果:" + aBoolean);
//控制器在页面输出内容
response.getWriter().write("<script>alert('登录成功!');location.href = '/LoginForWeb/login/index.jsp';</script>");
//要想在控制器弹窗,就要在控制器写js,那么导航链接的方式也需要使用js的方式(不可以再使用请求的转发或者是重定向),例如location.href,否则弹窗则不生效
/* request.getRequestDispatcher("/login/index.jsp").forward(request, response);*/
} else {
System.out.println("登录失败!");
//js中的history.back();----->返回上一页
response.getWriter().write("<script>alert('登录失败!');history.back();</script>");
//不可以再使用重定向或者是请求的转发
/*response.sendRedirect(request.getContextPath() + "/login.jsp");*/
}
}
//以下是指定的提交方式
/*@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}*/
}
核心代码:
//控制器在页面输出内容
response.getWriter().write("<script>alert('登录成功!');location.href = '/LoginForWeb/login/index.jsp';</script>");
//要想在控制器弹窗,就要在控制器写js,那么导航链接的方式也需要使用js的方式(不可以再使用请求的转发或者是重定向),例如location.href,否则弹窗则不生效
/*request.getRequestDispatcher("/login/index.jsp").forward(request, response);*/
要想在控制器弹窗,就要在控制器写js,那么导航链接的方式也需要使用js的方式(不可以再使用请求的转发或者是重定向),例如location.href,否则弹窗则不生效
response.getWriter().write("<script>alert('登录成功!');location.href = '/LoginForWeb/login/index.jsp';</script>");
这里的<script></script>和前端页面上面的js代码一样,也可以正常在这里写js的代码:判断、导航、弹窗.....