Javaweb-Filter实现拦截权限问题

Filter实现拦截权限问题

1. 编写注册表

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
<form action="/servlet/login" method="post">
    <input type="text" name="username">
    <input type="submit">
</form>
</body>
</html>

2.servletlogin编写来判断是否注册成功,分别重定向到成功和失败页面

package com.wang.servlet;

import javax.servlet.Filter;
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 servletlogin extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //得到jsp里的username
        String username = req.getParameter("username");
        if(username.equals("admin"))
        {
            req.getSession().setAttribute("USERNAME",req.getSession().getId());
            resp.sendRedirect("/fikter/succsee.jsp");
        }
        else {
            resp.sendRedirect("/fikter/fail.jsp");
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

3.编写servletloginout注销用户session,重新注册

package com.wang.servlet;

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 servletloginout extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Object username = req.getSession().getAttribute("USERNAME");
        if(username!=null)
        {
            req.getSession().removeAttribute("USERNAME");
            resp.sendRedirect("/fikter/login.jsp");
        }
        else {
            resp.sendRedirect("/fikter/login.jsp");
        }
    }

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

4.编写success和fail的JSP页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>success</title>
</head>
<body>
<h1>succsee</h1>
<h3><a href="/servlet/loginout">注销</a></h3>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>fail</title>
</head>
<body>
<h1>fail</h1>
<h3><a href="login.jsp">返回登录页面</a></h3>
</body>
</html>

5.编写映射

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>servlet</servlet-name>
        <servlet-class>com.wang.servlet.showservlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servlet</servlet-name>
        <url-pattern>/servlet/show</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>servlet</servlet-name>
        <url-pattern>/show</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>login</servlet-name>
        <servlet-class>com.wang.servlet.servletlogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/servlet/login</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>loginout</servlet-name>
        <servlet-class>com.wang.servlet.servletloginout</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginout</servlet-name>
        <url-pattern>/servlet/loginout</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>fiter</filter-name>
        <filter-class>com.wang.fiter.chfiter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>fiter</filter-name>
        <url-pattern>/servlet/*</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>com.wang.listener.onlinelistener</listener-class>
    </listener>
    <filter>
        <filter-name>fikter</filter-name>
        <filter-class>com.wang.fiter.servletfilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>fikter</filter-name>
        <url-pattern>/fikter/succsee.jsp</url-pattern>
    </filter-mapping>

</web-app>

6.过滤器编写
目的是过滤掉用户名错误的用户,重新注册,与JSP分离

package com.wang.fiter;

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

public class servletfilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest) servletRequest;
        HttpServletResponse response=(HttpServletResponse) servletResponse;
        Object username = request.getSession().getAttribute("USERNAME");
        if(username==null)
        {
            response.sendRedirect("/fikter/fail.jsp");
        }
        filterChain.doFilter(servletRequest,servletResponse);
    }
}
posted @   jinnice  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示