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的顺序

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <description>
  4. Hello World Servlet
  5. </description>
  6. <display-name>Hello World Servlet</display-name>
  7. <filter>
  8. <filter-name>Encode Filter</filter-name>
  9. <filter-class>com.web1.util.RequestEncodeFilter</filter-class>
  10. </filter>
  11. <filter-mapping>
  12. <filter-name>Encode Filter</filter-name>
  13. <url-pattern>/*</url-pattern>
  14. </filter-mapping>
  15.  
  16. <filter>
  17. <filter-name>URLOverFilter Filter</filter-name>
  18. <filter-class>com.web1.util.URLOverWriteFilter</filter-class>
  19. </filter>
  20. <filter-mapping>
  21. <filter-name>URLOverFilter Filter</filter-name>
  22. <url-pattern>/home.html</url-pattern>
  23. </filter-mapping>
  24.  
  25. <servlet>
  26. <servlet-name>helloWorld</servlet-name>
  27. <servlet-class>com.web1.hello.HelloWorldServlet</servlet-class>
  28. </servlet>
  29. <servlet-mapping>
  30. <servlet-name>helloWorld</servlet-name>
  31. <url-pattern>/helloWorld</url-pattern>
  32. </servlet-mapping>
  33. <servlet>
  34. <servlet-name>helloImage</servlet-name>
  35. <servlet-class>com.web1.hello.ImageServlet</servlet-class>
  36. </servlet>
  37. <servlet-mapping>
  38. <servlet-name>helloImage</servlet-name>
  39. <url-pattern>/helloImage</url-pattern>
  40. </servlet-mapping>
  41. </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. 快学scala-第七章 包和引入

    知识点: 1. Scala.Java.C++的包的目的都是为了管理大型程序中的名称.与对象或类的定义不同,同一个包可以定义在多个文件当中.或者在同一个文件中,为多个包贡献内容. 2. Scala的包和 ...

  2. 微信小程序 问题收集

    1. Q: 想知道微信小程序这些证书的具体要求在哪儿能查到? 就比如说,他要求有卫生和计划生育委员会批文 我想知道是需要省级还是市级的 但是官网查不到 A:市级省级的我也不是特清楚 [/ak] 应该是 ...

  3. ASP.NET Cache 类

    在查找资料的过程中.原来园子里面已经有过分析了.nopCommerce架构分析系列(二)数据Cache. 接下来是一些学习补充. 1.Nop中没有System.Web.Caching.Cache的实现 ...

  4. 剑指offer 整数中1 出现的次数

    给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  5. Android, BaseAdapter 处理大数据量时的优化

    Android优化 最常见的就是ListView, Gallery, GridView, ViewPager 的大数据优化  图片优化  访问网络的优化优化的原则: 数据延迟加载  分批加载  本地缓 ...

  6. textbox文本键盘全选

    private void textBox1_KeyDown(object sender, KeyEventArgs e)        {            if (e.Modifiers == ...

  7. FLASH和EEPROM的最大区别

    源:http://www.cnblogs.com/bingoo/p/3551753.html FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储 ...

  8. C#入门经典-第15章Windows 编程

    在使用Windows窗体时,就是使用System.Windows.Forms名称空间. .NET中的大多数控件都派生于System.Windows.Forms.Control类.

  9. Android-----获取屏幕分辨率DisplayMetrics简介 .

    引自:http://blog.csdn.net/zhangqijie001/article/details/5894872 Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人 ...

  10. 总结自己的Git常用命令

    总结自己的Git常用命令 使用git也有一段时间了,把自己常用的命令用自己的描述记录起来,方便自己备忘也方便其他人参考. 目录: 最基本的命令: git clone 拷贝并跟踪远程的master分支. ...