java web基础 --- URL重定向Filter

java web基础 --- URL重定向Filter

httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response);

服务器端转发,不改变浏览器端URL地址,常用

httpResponse.sendRedirect(uri);

浏览器端重定向,改变URL在浏览器地址栏

URLOverWriteFilter.java

 1 package com.web1.util;
 2
 3 import java.io.IOException;
 4
 5 import javax.print.attribute.standard.ReferenceUriSchemesSupported;
 6 import javax.servlet.Filter;
 7 import javax.servlet.FilterChain;
 8 import javax.servlet.FilterConfig;
 9 import javax.servlet.ServletException;
10 import javax.servlet.ServletRequest;
11 import javax.servlet.ServletResponse;
12 import javax.servlet.annotation.WebFilter;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15
16 /**
17  * Servlet Filter implementation class URLOverWriteFilter
18  */
19 @WebFilter("/URLOverWriteFilter")
20 public class URLOverWriteFilter implements Filter {
21
22     private FilterConfig config;
23     /**
24      * Default constructor.
25      */
26     public URLOverWriteFilter() {
27         // TODO Auto-generated constructor stub
28     }
29
30     /**
31      * @see Filter#destroy()
32      */
33     public void destroy() {
34         // TODO Auto-generated method stub
35     }
36
37     /**
38      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
39      */
40     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
41         //do something
42         String uri = "";
43         HttpServletRequest httpRequest = null;
44         if (request instanceof HttpServletRequest) {
45             httpRequest = (HttpServletRequest)request;
46             System.out.println("URL:" + httpRequest.getRequestURL().toString());
47             System.out.println("URI:" + httpRequest.getRequestURI().toString());
48             uri = httpRequest.getRequestURI();
49             uri = uri.replace("home.html", "helloWorld");
50         }
51         if (httpRequest.getRequestURI().indexOf("home.html") >= 0) {
52             /*if (response instanceof HttpServletResponse) {
53                 HttpServletResponse httpResponse = (HttpServletResponse)response;
54                 httpResponse.sendRedirect(uri);
55             }*/
56             httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response);
57         }
58         else{
59             //go to next Filter
60             chain.doFilter(request, response);
61         }
62     }
63
64     /**
65      * @see Filter#init(FilterConfig)
66      */
67     public void init(FilterConfig fConfig) throws ServletException {
68         this.config = fConfig;
69     }
70
71 }

web.xml

按照filter-mapping的顺序

<?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_3_0.xsd" metadata-complete="true" version="3.0">
  <description>
         Hello World Servlet
    </description>
  <display-name>Hello World Servlet</display-name>
  <filter>
    <filter-name>Encode Filter</filter-name>
    <filter-class>com.web1.util.RequestEncodeFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Encode Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <filter>
    <filter-name>URLOverFilter Filter</filter-name>
    <filter-class>com.web1.util.URLOverWriteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>URLOverFilter Filter</filter-name>
    <url-pattern>/home.html</url-pattern>
  </filter-mapping>

  <servlet>
    <servlet-name>helloWorld</servlet-name>
    <servlet-class>com.web1.hello.HelloWorldServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>helloWorld</servlet-name>
    <url-pattern>/helloWorld</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>helloImage</servlet-name>
    <servlet-class>com.web1.hello.ImageServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>helloImage</servlet-name>
    <url-pattern>/helloImage</url-pattern>
  </servlet-mapping>
</web-app>
时间: 2024-10-25 06:30:51

java web基础 --- URL重定向Filter的相关文章

Java Web基础知识之Filter:过滤一切你不想看到的事情

不要相信客户端, 所以做后端的人都应该铭记的事情.因为前端传过来的数据并不总是合法和有效的,所以后端是对访问资源的最后一道保护伞.之前我们在Spring中说到过AOP编程,AOP基础知识,它就可以在执行我们的方法之前进行一些预处理和验证来保护后端的资源.不难想到她的实现方式和本篇要说的过滤器的实现原理应该是相同的,都是通过Java的动态代理实现的(自己的理解). 在Java Web的开发中,过滤器用于拦截请求,并对ServletRequest对象进行处理,我们可以想到的,它可以用来验证权限.加密

Java web基础总结七之—— Filter与Listener

Java web基础总结七之-- Filter与Listener 一.Filter 1. Filter简介 Filter是Servlet体系中非常重要的一个技术.Filter的意思是过滤器,那么它过滤的是什么呢?就是web服务器管理的所有web资源.例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.它的代码逻辑执行在访问这些资源之前,从而进行一些特殊的操作.例如实现权限访问控制.编码和词汇的过滤等一些高级功能. Servlet API中提供了一

Java Web 基础 --- Filter 综述

摘要: 伴随J2EE一起发布的Servlet规范中还包括一个重要的组件--过滤器(Filter).过滤器可以认为是Servlet的一种加强版,它主要用于对用户请求进行预处理以及对服务器响应进行后处理,是个典型的处理链.Servlet规范使用了三个接口对过滤器进行了抽象,即Filter是对具体过滤器的抽象,FilterChain是基于AOP理念对责任链方面的抽象,FilterConfig则是对Filter配置的抽象.本文概述了Filter的提出动机.工作原理.使用流程和应用实例,并指出Java W

从Java Web 基础看SSH架构

Java Web开发现在已然成为大型Wed项目的标准,之前一直盲目的使用框架,往往知其然不知其所以然.在经过一段时间的学习与开发,大概掌握了其脉络的基础上,对其做一定总结. 一.Java Web 基础 一个典型的Java Web项目往往包含这些元素:Jsp页面.Servlet.Listener.Filter,以及配置文件web.xml.其中: Jsp和Servlet基本是一回事,主要用来响应客户端的请求.当然Jsp中可以直接嵌入HTML标签,主要还是负责展现. Listener则是负责监听Web

Java Web基础 --- Servlet 综述(实践篇)

摘要: 伴随 J2EE 6一起发布的Servlet 3.0规范是Servlet规范历史上最重要的变革之一,它的许多新的特性都极大的简化了 Java Web 应用的开发.本文从一个简单的 Servlet 例子开始,说明了如何开发.配置一个 Servlet.此外,还重点叙述了Servlet的一些新特性,包括Servlet 异步处理.Servlet 非阻塞IO 以及 Servlet 文件上传等内容,以便我们对Servlet有一个更全面的了解. 本篇主要介绍 Servlet 实践方面的知识,更多关注于S

Java web基础总结五之—— HttpServletRequest与HttpServletResponse

Java web基础总结五之-- HttpServletRequest与HttpServletResponse 在前面总结过,每当客户端给Web服务器发送一个http请求,web服务器就会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象就代表请求和响应,所以我们可以通过request对象获得请求相关的数据和操作.通过response对象进行对响应相关的数据封装和一些其他的操作. 一.HttpServletRequ

Java web基础总结二之—— http协议

Java web基础总结之二--http协议 由于java web是基于B/S的,所以http协议是java web 最基础,也非常重要的知识.HTTP协议用于定义客户端与web服务器之间进行通信的格式.从web服务器中获得某个web资源或者web 服务器接受客户端的请求都需要遵守一定的通讯格式,就是http协议. 一.HTTP协议是什么? HTTP协议是学习java web的基石,同时也是管理和维护一些复杂的WEB站点的必备的基础,如果你想要深入的理解java web的服务器的实现,就更需要掌

Java Web基础 - Servlet

Java Web基础学习---Servlet 1.什么是servlet jsp的前生就是servlet,servlet就是在服务器端上运行的小程序,一个servlet就是一个java类,并且可以通过"请求-响应",编程模型来访问这个驻留在服务器内存里的servlet程序 2. 手工编写第一个Servlet Servlet层级关系: Servlet(接口)-->GenericServlet(抽象类,与协议无关的Servlet)-->HttpServlet(抽象类,实现了Htt

Java Web总结十九Filter过滤器

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,Web开发人员通过Filter技术,对Web服务器管理的所有Web资源:例如Jsp,Servlet,静态图片文件或静态HTML文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.自动登录.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发Web应用时,如果编写的Java类实现了这个接口,则把这个Java类称之为过滤器Filter.通过