登陆、注销

目标:利用session实现登陆和注销的功能
1、业务实现流程图
这里写图片描述

2、使用ServletContextListener ,HttpSessionListener对容器状态和session进行监听

public class MyListencer implements ServletContextListener ,HttpSessionListener,ServletRequestListener{

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        sce.getServletContext().setAttribute("count", 0);
        sce.getServletContext().setAttribute("httpSessions", new Vector<HttpSession>());

    }

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {


    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {


    }

    @Override
    public void sessionCreated(HttpSessionEvent hse) {

        ServletContext sc=hse.getSession().getServletContext();
        int count=(int) sc.getAttribute("count");
        count++;
        sc.setAttribute("count", count);

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent hse) {
        HttpSession hs=hse.getSession();
        Vector httpSessions=(Vector)hse.getSession().getServletContext().getAttribute("httpSessions");
        httpSessions.remove(hs);
    }

}

3、登陆页面

public class RegiserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;



    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String msg="请输入注册信息";
        request.setAttribute("msg", msg);
        request.getRequestDispatcher("/WEB-INF/login/registerUI.jsp").forward(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

registerUI.jsp

${msg }<br>
<hr>
    <form action="${pageContext.servletContext.contextPath }/chat/loginIN" method="post">
        <input type="text" name="userName" /><br>
        <br>
        <input type="password" name="pwd"/><br>
        <br>
        <input type="password" name="pwd"/><br>
        <br>
        <input type="submit" >
    </form>

4、loginIN

public class LoginINServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String userName=request.getParameter("userName");
        String[] userPwd=request.getParameterValues("pwd");
        String msg="密码不可为空";
        if((userPwd[0].trim()).equals("") || (userPwd[1].trim()).equals("")){
            request.setAttribute("msg", msg);
            request.getRequestDispatcher("/WEB-INF/login/registerUI.jsp").forward(request, response);
            return;
        }
        if(!userPwd[0].equals(userPwd[1])){
            msg="密码输入请保持一致";
            request.setAttribute("msg", msg);
            request.getRequestDispatcher("/WEB-INF/login/registerUI.jsp").forward(request, response);
            return;
        }
        if((userName.trim()).equals("")){
            msg="用户名不可为空";
            request.setAttribute("msg", msg);
            request.getRequestDispatcher("/WEB-INF/login/registerUI.jsp").forward(request, response);
            return;
        }

        if(UserDao.getInstance().findByName(userName)!=null){
            msg="用户名已存在";
            request.setAttribute("msg", msg);
            request.getRequestDispatcher("/WEB-INF/login/registerUI.jsp").forward(request, response);
            return;
        }
        User user=new User(userName,userPwd[0]);
        UserDao.getInstance().addUser(user);
        HttpSession session=request.getSession();
        session.setAttribute("user", user);
        Vector<HttpSession> httpSessions=(Vector<HttpSession>) getServletContext().getAttribute("httpSessions");
        httpSessions.add(session);


        response.sendRedirect(request.getContextPath()+"/chat/info");


    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

5、展示注册的用户以及当前在线用户

<a href="${pageContext.servletContext.contextPath }/chat/loginoff">注销</a>

    ${msg}<br>
    注册用户:${showInfo}<br>
    <hr>
    在线用户:
    <c:forEach items="${applicationScope.httpSessions}" var="userSession">
        <% HttpSession httpSession=(HttpSession)pageContext.findAttribute("userSession"); %>
        <%=((User)httpSession.getAttribute("user")).getName() %><br>
    </c:forEach>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值