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

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

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

httpResponse.sendRedirect(uri);

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

URLOverWriteFilter.java

 package com.web1.util;

 import java.io.IOException;

 import javax.print.attribute.standard.ReferenceUriSchemesSupported;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet Filter implementation class URLOverWriteFilter
*/
@WebFilter("/URLOverWriteFilter")
public class URLOverWriteFilter implements Filter { private FilterConfig config;
/**
* Default constructor.
*/
public URLOverWriteFilter() {
// TODO Auto-generated constructor stub
} /**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
} /**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//do something
String uri = "";
HttpServletRequest httpRequest = null;
if (request instanceof HttpServletRequest) {
httpRequest = (HttpServletRequest)request;
System.out.println("URL:" + httpRequest.getRequestURL().toString());
System.out.println("URI:" + httpRequest.getRequestURI().toString());
uri = httpRequest.getRequestURI();
uri = uri.replace("home.html", "helloWorld");
}
if (httpRequest.getRequestURI().indexOf("home.html") >= 0) {
/*if (response instanceof HttpServletResponse) {
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.sendRedirect(uri);
}*/
httpRequest.getRequestDispatcher("/helloWorld").forward(httpRequest, response);
}
else{
//go to next Filter
chain.doFilter(request, response);
}
} /**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
this.config = fConfig;
} }

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>

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

  1. Java Web之过滤器(Filter)

    转: Java Web之过滤器(Filter) 2018年07月31日 16:58:40 喻志强 阅读数 13705更多 所属专栏: Java Web入门   版权声明:本文为博主原创文章, 转载请注 ...

  2. Java Web基础 --- Servlet 综述(理论篇)

    摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Ser ...

  3. java web基础环境搭建

    java web基础环境包括:(1)servlet容器也即tomcat(2)jre即java程序运行环境 环境变量配置:分别下载jdk和tomcat安装包. jdk环境变量配置: 第一步:系统环境变量 ...

  4. java web基础第一次作业

    JAVA WEB基础 一.B/S架构 1.B/S架构简介: B是英文单词“Browser”的首字母,即浏览器的意思:S是英文单词“Server”的首字母,即服务器的意思.B/S就是“Browser/S ...

  5. Java Web基础入门

    前言 语言都是相通的,只要搞清楚概念后就可以编写代码了.而概念是需要学习成本的. Java基础 不用看<编程思想>,基础语法看 http://www.runoob.com/java/jav ...

  6. java web基础之mvc模式设计(一)--使用httpservlet实现mvc分层设计,DAO层使用的是dbutils实现与数据库的链接

    一:1.最终的实现效果图: 2.案例的目录结构: 3.案例中使用到的jar包: 二:案例的链接数据库的层次结构关系:数据库是:mysql ,数据库名字:dsm,表格名字:customers 数据库表格 ...

  7. java web基础

    WEB基础 C/S:即服务器-客服机(Client-Server)结构.C/S结构通常采用两层结构,服务器负责数据的管理,客户机负责完成与用户的交互任务.客户通过局域网与服务器相连,接受用户的请求,并 ...

  8. tomcat 与 java web中url路径的配置以及使用规则详情(长期更新)

    首先我们看一下在myeclipse中建立的java web项目的结构 在这里我们需要注意这个webroot也就是我们在tomcat里的webapp里面的应用 之所以每一个项目都有这个webroot,是 ...

  9. Java Web组件Servlet、Filter、Listener

    一.Servlet 类javax.servlet.http.HttpServlet; 1.是单例模式,一个web容器中只有一个实例.服务器调用它的service方法进行请求处理, service方法又 ...

随机推荐

  1. Python -- Web -- WSGI

    WSGI:Web Server Gateway Interface 只要求Web开发者实现一个函数,就可以响应HTTP请求. # hello.py def application(environ, s ...

  2. AS-->如何更高效的使用 Gradle, 快速build apk

    版权声明:欢迎转载,转载请注明出处;http://blog.csdn.net/angcyo 看本文之前,推荐先看我之前写的一篇文章: 传送门 日前Android Stuido 已经更新到 2.0.0 ...

  3. spring,hibernate配置事务

    1. 新建java project 2. 引入jar 3. src下新建package:com.web.model, com.web.dao, com.web.service, bean.xml 4. ...

  4. POJ2096 概率dp 入门

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118282#problem/B 挺好的一个题目: 不过刚开始嘛,看别人题解长知识.这个人写 ...

  5. Android编程之SparseArray<E>详解

    最近编程时,发现一个针对HashMap<Integer, E>的一个提示: 翻译过来就是:用SparseArray<E>来代替会有更好性能.那我们就来看看源码中SparseAr ...

  6. C#入门经典第九章定义类-1

    1.C#中使用class关键字来定义类 class MyClass { //代码部分 } 定义了类之后,就可以在项目中能访问该定义的其他位置对该类进行实例化.默认情况下,类的声明是内部的,即只有当前项 ...

  7. PowerDesigner设置线风格(直线,折线。。。)

    PowerDesigner中的绘图功能真是不敢恭维. 1.修改显示设置 Tools-->Display Preferences 这里有很多表现设置,我们需要的在Format菜单下. 点Modif ...

  8. Mysql数据备份与恢复命令

    转载:原文地址 一.备份常用操作基本命令 1.备份命令mysqldump格式 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sq ...

  9. 转 android客户端版本检测更新,服务下载,通知栏显示

    看图, 只要点击取消或是下载完毕 通知才会消失!      代码是大部分是借用别人的,再自己修改,达到自己所需要的效果 xml文件 update.xml <?xml version=" ...

  10. Android学习笔记之Broadcast Receiver

    可程序间通信 注册通信,注销通信,发送消息 package com.jiahemeikang.helloandroid; import com.jiahemikang.service.EchoServ ...