过滤器Filter(拦截jsp页面的跳转)案例:

创建一个 Filter , class类: 其继承于 接口 Filte(接口导包:import javax.servlet.Filter;)

在 web.xml 文件中配置并映射该 Filter. 其中 url-pattern 指定该 Filter 可以拦截哪些资源, 即可以通过哪些 url 访问到该 Filter,并进行拦截;

案例:username=Tom,password=1234,设计Filter类,及jsp页面实现,输入username和password是否等于Tom和1234,不等拦截index.jsp页面跳转到hello.jsp页面,等的或,在在hello,显示;

1.建立UserNameFilter类:继承于接口Filter(接口导包:import javax.servlet.Filter;)

package com.lanqiao.javatest;

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 org.apache.catalina.connector.Request;

public class UserNameFilter implements Filter{

    //构造方法
    public UserNameFilter(){

    }
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        String initUser=filterConfig.getInitParameter("username");
        String username=request.getParameter("username");

        if(!initUser.equals(username)){
            request.setAttribute("message", "用户名不正确!!!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
            return ;
        }
        chain.doFilter(request, response);

    }

    private FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig=filterConfig;

    }

}

2.建立PasswordFilter类:继承于接口Filter(接口导包:import javax.servlet.Filter;)

package com.lanqiao.javatest;

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 PasswordFilter implements Filter {

    public PasswordFilter() {
        // TODO Auto-generated constructor stub
    }
    @Override
    public void destroy() {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        String initPassword=filterConfig.getServletContext().getInitParameter("password");
        String password=request.getParameter("password");
        if(!initPassword.equals(password)){
            request.setAttribute("message", "密码不正确!!!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
            return ;
        }
        chain.doFilter(request, response);

    }

    private FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig=filterConfig;

    }

}

3.在WEB-FIN下的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>day-12</display-name>

  <filter>
      <filter-name>UserNameFilter</filter-name>
      <filter-class>com.lanqiao.javatest.UserNameFilter</filter-class>
      <init-param>
          <param-name>username</param-name>
          <param-value>Tom</param-value>
      </init-param>
  </filter>

  <filter-mapping>
      <filter-name>UserNameFilter</filter-name>
      <url-pattern>/hello.jsp</url-pattern>
  </filter-mapping>

  <filter>
      <filter-name>password</filter-name>
      <filter-class>com.lanqiao.javatest.PasswordFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>password</filter-name>
      <url-pattern>/hello.jsp</url-pattern>
  </filter-mapping>
  <context-param>
      <param-name>password</param-name>
      <param-value>1234</param-value>
  </context-param>

</web-app>

4.index.jsp页面:输入username和password;

<%@ 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>
    <font color="red">${message }</font>
    <br><br>
    <form action="hello.jsp" method="post">
        username:<input type="text" name="username" /><br>
        password:<input type="password" name="password"/><br>
        <input type="submit" value="Submit"/>
    </form>

</body>
</html>

5.hello.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>
    Hello:${param.username }
</body>
</html>

  

时间: 2024-10-20 11:02:25

过滤器Filter(拦截jsp页面的跳转)案例:的相关文章

jsp页面的跳转方法另类总结

在Jsp页面中除了可以使用超链接跳转页面以外,还可以使用表单的方法跳转页面,例如下面的例子,test2页面跳转到test1页面: test2.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getSch

JSP页面的跳转及传值

1.response.sendRedirct("跳转到页面的URL"); 该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容. request无法传值过去. 执行完该页所有代码,然后再跳转到页面. 跳转地址栏改变. 传值: sendredirect()中的URL是可以带参数 eg sendredirect("url?name="+name);可用request.getParameter("name"

JavaEE---过滤器Filter ,过滤器Filter的实现与部署,编码案例+权限案例

过滤器是一种Web组件,用于对客户端发送的请求信息和返回给客户端的响应信息进行处理.  过滤器Filter的工作原理 ---通过使用过滤器,可以拦截客户端的请求和响应,查看 .提取或者以某种方式操作正在客户端和服务器之间进行交换的数据. ---通过使用过滤器,可以对Web组件的前期处理和后期处理进行控制. ---过滤器可以有多个,以构成一个过滤器链.Servlet容器会根据过滤器的配置情况来决定过滤器的调用次序. 过滤器Filter的实现和部署 ---必须实现接口javax.serclet.Fi

j2ee中如何拦截jsp页面?

加filter: public class RightFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOExcep

JSP页面后台跳转

1.通过response传参response.sendRedirect(path);一方面sendRedirect的请求中,?后面的参数必须手动进行URLEncoding.如: String message = URLEncoder.encode("输入成功", "UTF-8"); response.sendRedirect("A.jsp?message=" + message);另一方面,A.jsp接收到的message需要进行一定的处理.如

springmvc 拦截器,不拦截jsp文件

spring mvc的拦截器只拦截controller不拦截jsp文件,如果不拦截jsp文件也会给系统带安全性问题. 解决方案有两种: 1.将所有的jsp文件放入到WEB-INF文件夹下,这样用户是直接不能访问WEB-INF文件下的jsp文件的.spring mvc的理念也是通过controller里的@RequestMapping来请求相关jsp页面,而非用户直接访问jsp页面. 接下去写相关的配置 在springmvc.xml中加入 <mvc:interceptors> <mvc:i

有个奇怪的问题,配置成/system/index,jsp页面时没有经过过滤器进行拦截,而配置成redirectAction时是可以直接跳转刀片loginJsp.action

但是我直接访问/system/index.jsp页面是可以被SystemFilter拦截的,而经过action跳转到的访问/system/index.jsp页面时不被SystemFilter拦截的

servlet和jsp页面过滤器Filter的作用及配置

刚刚有个朋友问我,Servlet的过滤器有什么作用? 现在发个帖子说明一下,            过滤器是一个对象,可以传输请求或修改响应.它可以在请求到达Servlet/JSP之前对其进行预处理,而且能够在响应离开Servlet /JSP之后对其进行后处理.所以如果你有几个Servlet/JSP需要执行同样的数据转换或页面处理的话,你就可以写一个过滤器类,然后在部署描述文 件(web.xml)中把该过滤器与对应的Servlet/JSP联系起来.你可以一个过滤器以作用于一个或一组servlet

以过滤器(filter)为例,实现不同登录情况下的页面跳转

以过滤器(filter)为例,实现不同登录情况下的页面跳转 登录登录账户正确,进入主页. 登录账户错误,跳转到错误页面. 用户注销之后,用登录成功的网址再次登录,提示没有登录权限. 用户登录之后向Session中放入用户的数据 进入主页的时候要判断用户是否已经登陆:要求:在过滤器中实现 补充:还用到了一个提出常量的方法. 原文地址:https://www.cnblogs.com/WZ-BeiHang/p/12616949.html