zoukankan      html  css  js  c++  java
  • servlet串行拦截器实现例子

    至于串行过滤器有什么作用,我实在不知。我的理解是它只是说明 过滤器的串行运行方式

    需求:当用户没有登录访问更新页面的时候,跳转到登录页面

    1.登录页面:login.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <form action="UserLoginServlet" method="post">
        username:<input type="text" value="<%=null == request.getAttribute("username")?"" : request.getAttribute("username") %>" name="username"><br>
        password:<input type="text" name="password"><br>
        
        authority:<select  name="authority">
        
            <option value="1" <%="1".equals(request.getAttribute("authority"))?"selected = selected" : "" %>>common user</option>
            <option value="2" <%="2".equals(request.getAttribute("authority"))?"selected = selected" : "" %>>adminstrator</option>
        </select>
        <br>
        <input type="submit">
    </form>
    
    </body>
    </html>
    login.jsp

    2.登录页面的servet容器

    package com.filter;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import com.javabean.User;
    
    public class UserLoginServlet extends HttpServlet
    {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException
        {
    
            String username = (String)req.getParameter("username");
            String password = (String)req.getParameter("password");
            String authority = (String)req.getParameter("authority");
            
            if("1".equals(authority) && "zhangsan".equals(username) && "123".equals(password))
            {
                User user = new User();
                user.setUsername(username);
                user.setPassword(password);
                user.setAuthority(authority);
                
                HttpSession session = req.getSession();
                
                session.setAttribute("user",user);
                
                req.getRequestDispatcher("index.jsp").forward(req, resp);
                
                return ;
            }
            if("2".equals(authority) && "lisi".equals(username) && "456".equals(password))
            {
                User user = new User();
                user.setUsername(username);
                user.setPassword(password);
                user.setAuthority(authority);
                
                HttpSession session = req.getSession();
                
                session.setAttribute("user",user);
                
                req.getRequestDispatcher("index.jsp").forward(req, resp);
                
                return ;
            }
            
            System.out.println("meiyou denglu");
            
            resp.sendRedirect("login.jsp?error=true&username="+username+"&authority="+authority);
            
        }
        
    }
    UserLoginServlet

    3.主页面index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ page import="com.javabean.User" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <a href="QueryServletFilter">query</a><br>
    <% 
    User user = (User)session.getAttribute("user");
    if(null == user)
    {
        response.sendRedirect("login.jsp");
        return;
    }
        if("2".equals(((User)session.getAttribute("user")).getAuthority())){
                
    %>
    <a href="UpdateServletFilter">update</a>
    
    <%} %>
    </body>
    </html>
    index.jsp

    4.查询servlet. QueryServletFilter

    package com.filter;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class QueryServletFilter extends HttpServlet
    {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException
        {
            System.out.println("QueryServletFilter run");
        }
    }
    View Code

    5.更新servlet容器. UpdateServletFilter

    package com.filter;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class UpdateServletFilter extends HttpServlet
    {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException
        {
            System.out.println("UpdateServletFilter run");
        }
    }
    UpdateServletFilter

    6.web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>filter</display-name>
      
     <servlet>
         <servlet-name>UserLoginServlet</servlet-name>
         <servlet-class>com.filter.UserLoginServlet</servlet-class>
     </servlet>
     
     
      <servlet-mapping>
         <servlet-name>UserLoginServlet</servlet-name>
         <url-pattern>/filter/UserLoginServlet</url-pattern>
     </servlet-mapping>
    
     
     <servlet>
         <servlet-name>QueryServletFilter</servlet-name>
         <servlet-class>com.filter.QueryServletFilter</servlet-class>
     </servlet>
     
     <servlet-mapping>
         <servlet-name>QueryServletFilter</servlet-name>
         <url-pattern>/filter/QueryServletFilter</url-pattern>
     </servlet-mapping>
     
     <servlet>
         <servlet-name>UpdateServletFilter</servlet-name>
         <servlet-class>com.filter.UpdateServletFilter</servlet-class>
     </servlet>
     
     <servlet-mapping>
         <servlet-name>UpdateServletFilter</servlet-name>
         <url-pattern>/filter/UpdateServletFilter</url-pattern>
     </servlet-mapping>
      <!-- filter start -->
      <filter>
          <description>this is the servlet filter example</description>
          <filter-name>userLoginServletFilter1</filter-name>
          <filter-class>com.filter.UserLoginServletFilter</filter-class>
      </filter>
      
        <!-- 演示过滤器串行运行 -->
      <filter>
          <description>this is the servlet filter example</description>
          <filter-name>userLoginServletFilter2</filter-name>
          <filter-class>com.filter.UserLoginServletFilter2</filter-class>
      </filter>
      
      <!-- url-pattern表示只过滤 UpdateServletFilter这一个servlet容器-->
      <filter-mapping>
          <filter-name>userLoginServletFilter1</filter-name>
          <url-pattern>/filter/UpdateServletFilter</url-pattern>
      </filter-mapping>
      
    
      <!-- url-pattern表示只过滤 UpdateServletFilter这一个servlet容器-->
      <filter-mapping>
          <filter-name>userLoginServletFilter2</filter-name>
          <url-pattern>/filter/UpdateServletFilter</url-pattern>
      </filter-mapping>
      
      <!-- filter end -->
    </web-app>
    web.xml

     7.filter拦截器 UserLoginServletFilter

    package com.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    
    public class UserLoginServletFilter implements Filter
    {
    
        @Override
        public void destroy()
        {
          System.out.println("destroy");
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain filterChain) throws IOException, ServletException
        {
    
            HttpServletRequest req = (HttpServletRequest)request;
            HttpSession s = req.getSession();
            
            if(req.getRequestURI().endsWith("login.jsp") || req.getRequestURI().endsWith("UserLoginServlet"))
            {
                System.out.println("Filter1 start");
                filterChain.doFilter(request, response);
                System.out.println("filter1 end");
                return ;
            }
            
            if(null ==  s.getAttribute("user"))
            {
                System.out.println("Filter1 start..");
                ((HttpServletResponse)response).sendRedirect("login.jsp");
                return;
            }
            else
            {
                System.out.println("Filter1 start....");
                filterChain.doFilter(request, response);
               
            }
            
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException
        {
           System.out.println("init");
        }
        
    }
    UserLoginServletFilter

    8.filter拦截器2 UserLoginServletFilter2

    package com.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class UserLoginServletFilter2 implements Filter
    {
    
        @Override
        public void destroy()
        {
           System.out.println("destory2");
            
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain filterChain) throws IOException, ServletException
        {
           System.out.println("doFilter2 start");
           filterChain.doFilter(request, response);
           System.out.println("doFilter2 end");
            
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException
        {
            System.out.println("init2");
        }
        
    }
    UserLoginServletFilter2

    web.xml中url-pattern属性值表示访问的路径。

  • 相关阅读:
    php安装xcache (5.4)
    nginx博客系统(内含nginx图片缩略图处理代码,不错)
    一个mysql开启多个端口
    mysql源码重启
    ecshop支付时减库存方法
    n阶幻方问题
    codeforces 710A King Moves(水)
    关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
    codeforces 701C. They Are Everywhere(尺取法)
    codeforces 701 B. Cells Not Under Attack
  • 原文地址:https://www.cnblogs.com/feiguo/p/3804019.html
Copyright © 2011-2022 走看看