javaweb-32:smbms注销及权限过滤

本文档详细介绍了如何实现登录注销功能,并通过过滤器进行登录拦截优化。注销功能通过移除session并重定向至登录页面实现,登录拦截过滤器检查用户session,未登录则重定向至错误页面。测试表明登录、注销及权限控制均运行正常。
摘要由CSDN通过智能技术生成

登录功能优化

  • 注销功能:

思路:移除session,返回登录页面

1.写注销Servlet

package com.gongyi.servlet.user;


import com.gongyi.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 {
        //移除用户的Constants.USER_SESSION
        req.getSession().removeAttribute(Constants.USER_SESSION);
        resp.sendRedirect(req.getContextPath()+"/login.jsp");//返回登录页面
    }

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

2.注册web.xml

<servlet>
    <servlet-name>LogoutServlet</servlet-name>
    <servlet-class>com.gongyi.servlet.user.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/jsp/logout.do</url-pattern>
</servlet-mapping>
  • 登录拦截优化

1.编写一个过滤器并注册

过滤器:

package com.gongyi.filter;

import com.gongyi.pojo.User;
import com.gongyi.util.Constants;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


public class SysFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        //过滤器,从session中获取用户
        User user = (User) request.getSession().getAttribute(Constants.USER_SESSION);
        if (user == null) {//已经被移除或者注销了,或者未登录
            response.sendRedirect(request.getContextPath() + "/error.jsp");
        } else {
            chain.doFilter(req, resp);
        }

    }

    @Override
    public void destroy() {

    }
}

注册web.xml

<!--用户登录过滤器-->
<filter>
    <filter-name>SysFilter</filter-name>
    <filter-class>com.gongyi.filter.SysFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SysFilter</filter-name>
    <url-pattern>/jsp/*</url-pattern>
</filter-mapping>

error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>请登录后再访问该页面</h1>
        <a href="${pageContext.request.contextPath }/login.jsp">返回</a>
    </body>
</html>

2.测试登录,注销,权限都要保证ok

效果图:

登录后自动跳转到http://localhost:8080/smbms_war/jsp/frame.jsp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sJYclsbL-1635131115492)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025110335624.png)]

注销后,再次访问:http://localhost:8080/smbms_war/jsp/frame.jsp

重定向到了:http://localhost:8080/smbms_war/error.jsp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EEAPtQSr-1635131115502)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025110409025.png)]

彩蛋

1.web.xml中配置servlet-class,输入类名回车即可补全全路径

在这里插入图片描述

2.idea实现接口没有@Override关键字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVM5HSHt-1635131115511)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025104449987.png)]

图形化界面重写方法ok:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcnUfLTl-1635131115513)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025104524278.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZoTo1Ol-1635131115514)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025104547543.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vx2wnjGC-1635131115516)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025104559202.png)]

解决:注解是JDK1.5之后的特性

修改idea的module中的language level大于5【默认是5】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHgjlPVK-1635131115517)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025104904087.png)]

3.发布tomcat编译报错:【未涉及到具体业务代码】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1FVdOslV-1635131115518)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025105851567.png)]

参考

思路:jdk版本 设置一致

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BmlrDJ5L-1635131115519)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025110020982.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LgaELFAW-1635131115521)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025110036192.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ultxz98t-1635131115522)(C:\Users\Administrator\Desktop\学习笔记\javaweb\javaweb-32:smbms注销及权限过滤.assets\image-20211025110227994.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值