栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java Web之过滤器的简单创建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Web之过滤器的简单创建

Java Web开发中 的过滤器 ( filter ) 是 从Servlet 2.3规范开始增加 的 功能 , 并在Servlet 2.4规范中得到增强。 对Web应用来说 ,过滤器是 一个驻留在服务器端 的 Web组件 , 它可以截取客户端和服务器之间 的 请求与响应信息 , 并对这些信息进行过滤。

下面是创建一个基本过滤器的过程

首先创建一个类,并且实现Filter接口,这里要注意的是需要导入的是javax.servlet包 

并且在类上加上注解@WebFilter(urlPatterns = "/*") urlPatterns指拦截的路径,/*表示所有路径

@WebFilter的常用属性

然后实现Filter接口的init(),doFilter(),destroy()方法

init()方法:初始化方法,加载时调用

destroy()方法:销毁时调用的方法

doFilter()方法:过滤方法

        其中filterChain.doFilter(servletRequest,servletResponse);代码是放行的意思,进入下一个过滤器或Servlet。

一个过滤器的基本创建已经完成,下面是用过滤器实现的一个基本登录验证功能

JSP页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  
    登陆界面
  
  
  
请输入账号:
请输入密码:

 

LoginServlet页面代码

package xz.servlet;

import xz.service.accountInfoService;
import xz.service.impl.accountServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name=request.getParameter("name");//获取用户名
        String pwd=request.getParameter("pwd");//获取密码
        if(name.equals("admin")&&pwd.equals("admin")){//登录成功
            request.getSession().setAttribute("name",name);//将用户名存入Session中
            response.sendRedirect("index.jsp");//重定向
        }else{//登录失败
            request.setAttribute("err","用户名或密码错误!");//提示用户
            request.getRequestDispatcher("Login.jsp").forward(request,response);//转发
        }
    }
}

LoginFilter过滤器页面

package xz.filter;

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

@WebFilter("/*")
public class LoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        String path=request.getServletPath();//获得请求路径
        Object name = request.getSession().getAttribute("name");//获取用户名
        if(path.indexOf("Login.jsp")==-1){//用户没有通过登录直接进入LoginServlet
            if(name==null){//判断是否登录
                out.print("");//提示用户并返回登录页面
            }
        }
        //用户通过登录界面进入LoginServlet,则放行,进入LoginServlet
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("销毁");
    }
}

执行效果:

        用户没有登录直接访问index主页,进入过滤器doFilter()方法进行处理


如果你觉得本文对你有帮助,麻烦动动手指顶一下,可以帮助到更多的开发者,如果文中有什么错误的地方,还望指正,转载请注明转自 AnWen03的博客,谢谢!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/848372.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号