Javaweb登录功能优化及注销登录

登录功能优化

上篇登录功能代码在从数据库取出用户信息的代码中少写了取出用户姓名,现在将其加上user.setName(rs.getString("u_name"));
在这里插入图片描述

在登录成功后右上角会有一个xx用户,我们希望把用户名字显示在xx上,所以对其admin.jsp页面进行一些代码的调整
在LoginServlet中我们已经把从数据库中查出的用户信息保存在了session中
在这里插入图片描述
因此我们只需要再将用户信息中的用户姓名从session中取出来就可以了
将前台页面的xx修改成<%=((User)session.getAttribute(Constants.USER_SESSION)).getName()%>将用户名输出处理
在这里插入图片描述
,然后登录就可以看到用户姓名已经显示在前台页面了
在这里插入图片描述

注销登录

在上篇也讲到到过滤器来防止用户非法登录,但是我们却将主页面放在了webapp的根目录下,而在web.xml中非法访问的访问路径是view目录下的全部,所以我们将主页面重新放在view的根目录下
在这里插入图片描述

当我们点击右上角的退出后,我们希望可以退出用户登录然后跳转到登录界面,在我们没有写这个功能时点击退出他可以跳转到登录页面,但我们在浏览器的地址栏中输入/view/admin.jsp他还是可以正常进入,这并不符合我们已经退出登录了
要实现退出登录,我们就可以直接将此时的用户的session
然后写注销登录的servlet
LogoutServlet

package com.wx.servlte.user;

import com.wx.util.Constants;

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

public class LogoutServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //移除用户的登录状态
        req.getSession().removeAttribute(Constants.USER_SESSION);
        resp.sendRedirect("login.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

很简单就两行代码
然后在web.xml中注册这个servlet

 <servlet>
        <servlet-name>LogoutServlet</servlet-name>
        <servlet-class>com.wx.servlte.user.LogoutServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LogoutServlet</servlet-name>
        <url-pattern>/logout</url-pattern>
    </servlet-mapping>

然后在前台界面退出按钮那里的请求目标login.jsp替换成servlet的请求路径/logout
在这里插入图片描述
这时候我们点击退出然后再次在浏览器的地址栏中输入/view/admin.jsp,他就会因为非法访问过滤器跳转到错误页面。因为并没有用户session存在,如果我们让没有用户信息的用户非法进入系统,那样是不安全的
在这里插入图片描述

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值