(jsp六)项目实例功能实现补充:会话及移除会话

会话:重定向不可以用request绑定数据,request又叫一次请求,重定向之前会将request中的数据全部清空,所以如果想要在重定向之后使用数据,则需要用到session对象来进行数据绑定。什么是session?session又叫会话,我们所打开的一个页面,即一个会话,而会话的范围要大于request,因为只要会话存在,那么session对象就一直存在,绑定在其之上的数据就会一直存在,不会当页面跳转时被清空数据。并且在本实例中,主页面引用了框架集,如果使用request绑定数据的话,绑定的数据只能在main.jsp页面接收到,而其中包含的index.jsp和top.jsp页面则无法使用,也就无法实现页面上显示用户名的功能。所以在此处使用重定向及session对象进行数据绑定更为适合。Session使用方法如代码所示。从数据库获取数据等方法实现即entity、dao、daoImpl、DBUtil包及类略,此处仅列举关键代码

login1.jsp部分代码

<form action="UserServlet" method="post">

        <ul>

            <li><input name="uname" type="text" class="loginuser" value="admin" onclick="JavaScript:this.value=''"/></li>

            <li><input name="upwd" type="text" class="loginpwd" value="密码" onclick="JavaScript:this.value=''"/></li>

            <li><input name="" type="submit" class="loginbtn" value="登录"  /><label>

            <input name="" type="checkbox" value="" checked="checked" />记住密码</label><label><a href="#">忘记密码?</a></label></li>

            <li><span style="color:red">${login_error}</span></li>

        </ul>

    </form>

UserServlet doPost方法代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

        String uname=request.getParameter("uname");

        String upwd=request.getParameter("upwd");

        IUserDAO dao=new UserDAOImpl();

        User user=dao.findUserBySnameAndSpwd(uname, upwd);

        if(user==null){

            request.setAttribute("login_error","用户名或密码错误");

            request.getRequestDispatcher("login1.jsp").forward(request,response);

        }else{

            //1.获取session

            HttpSession session=request.getSession();

            //2.将数据绑定到session

            session.setAttribute("user",user);

            response.sendRedirect("main.jsp");

        }

    }

index.jsp部分代码

<b>${user.uname}早上好,欢迎使用信息管理系统</b>(${user.uname}@uimaker.com)

top.jsp部分代码

<span>${user.uname}</span>

效果图:

 

移除会话:在该页面有退出功能,现在需要对退出功能进行编程。退出一定是在已经登录的情况下才能点击退出,但是此时会话已经绑定了一个值,点击退出的话需要重新会到login1.jsp页面,返回该页面又要重新登录,那么session则又保存了另外一个信息。这种情况不是不可以,但是不建议在session上绑定重名的值,所以我们为了解决该问题,可以在点击退出时先不直接跳转至login1.jsp,先跳转至LogoutServlet,在该servlet中将会话上绑定的数据清空,清空后再进行跳转。

top.jsp部分代码

<li><a href="LogoutServlet" target="_parent">退出</a></li>

LogoutServlet doPost方法代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.获取会话

        HttpSession session=request.getSession();

        //2.移除session绑定名为user的对象

        session.removeAttribute("user");

        //3.使session失效

        session.invalidate();

        //4.重新跳转到登录页面

        response.sendRedirect("login.jsp");

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值