前言

这一篇是接着上一篇的继续

页面跳转与重定向(之一)

在上一篇中, 介绍了在html,js 和JSP中如何跳转和重定向。

基本是在页面层级进行页面的跳转, 进入一个页面后跳入另一个页面。

这一篇将从项目和服务端来看看有可能在实际的项目中使用到的状况。

旧的地址跳转到新的地址

在系统开发过程中, 新旧系统并存是一种常见的处理方法,新旧系统有着各自独立的域名地址。 、

当新系统开发完成的时候,就需要把旧地址的域名导到新地址中了。

方法之一 就是进行DNS 修改映射了。

如果系统没有域名, 只有IP, 或是不想修改DNS 的话, 就可以在旧系统中修改主页面。最简单的就是类似:

<TITLE>New System</TITLE>
<META name="description" content="New System Forward">
<META name="keywords" content="New System">
<META name="robots" content="index,follow,all">
<meta http-equiv="refresh" content="0; URL=http://newurl">

当然也可以使用上一篇中提到的其他方式。

Tomcat 中的地址设定

Tomcat 默认安装的状况下(port:8080), 项目部署在webapps 目录下。

举例: 这里的域名myweb ,这里的项目名 myproject ,

本地的访问地址就是 :  http://IP:8080/myproject.

域名映射后地址就是: http://myweb:8080/myproject

1.  如何去除端口?

方法一: 在安装是设置成 80 端口

方法二: 如果已经安装完成, 可以修改conf\server.xml 的下面配置

修改成 80 就可以了。

这样就可以通过以下方式访问了:

http://myweb/myproject

2. 如何去除项目名称。

最方便的访问方式应该就是直接输入 域名就进入了。

http://myweb

方法一: 修改 conf\server.xml 配置

在host 中添加如下Context 的配置:

方法二: 如果不使用方法一的话, 默认状况上面的地址, 会进入 webapps\ROOT\index.html 这个文件。

所以使用以上的方法修改这个页面的跳转应该就能达到所需要的效果了。

二级域名的重定向

新系统虽然已开发完成, 但是还是想有些旧的模块功能使用旧的系统。

这样的话, 访问新系统的某些url 的时候,重定向到旧的页面地址中去。

以访问  http://myweb/old 的方式访问旧的地址(比如旧的地址就是http://www.csdn.net)

方法一:  增加 filter

步骤一: 新增 Filter 的java 文件, 文件名  UrlRewriteFilter.java, 内容如下

/** @author: oscar999* @Date:2014-5-29* Copyright (c) oscar999. All rights reserved.*/
package com.oscar999;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;/** <description> *  * @see  * @see  * * @version  0.1,  2014-5-29* @author   oscar999 * @since    JDK1.5 */
public class UrlRewriteFilter implements Filter{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {// TODO Auto-generated method stubHttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;String requestPath = httpRequest.getRequestURI();if(requestPath.indexOf("/old")>0){//request.getRequestDispatcher("/redirect.html").forward(request, response);httpResponse.sendRedirect("http://www.csdn.net"); return;}        chain.doFilter(request, response);}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}

步骤二:  在web.xml 中 添加filter 的定义

 <filter><filter-name>UrlRewriteFilter</filter-name><filter-class>com.oscar999.UrlRewriteFilter</filter-class></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/old</url-pattern></filter-mapping>      

说明:

1. 在Java 中,满足转向的状况, 一定要return 。 否则会报 IllegalStateException错误

2. 可以比较一下, forward 和 redirect 的使用差别 ?

1)  调用的对象不同(request , response)

2)  使用的场景不同(是否是本项目中的文件)

3)  url 的地址的变化

3. 转向的逻辑的可以通过init-param 配置在filter 的 xml 中

    <init-param><param-name></param-name><param-value></param-value></init-param>  

在filter 的init方法 中,通过 Enumeration<?> e = filterConfig.getInitParameterNames(); 读到。

这样的话, 就可以灵活配置转向的逻辑了。

方法二:  直接使用 urlwrite 组件

其实上面的方式, 已经有共用的组件可以用了。

组件的介绍地址 :

http://tuckey.org/urlrewrite/

目前最新版的下载地址:

http://urlrewritefilter.googlecode.com/files/urlrewritefilter-4.0.3.jar

也可以到:

https://onedrive.live.com/redir?resid=5B4EDBCD9EF1AB6B!192&authkey=!AI-dKU740gOo29I&ithint=file%2c.jar

下载

有了方法一的介绍, 这个组件的使用就很容易了。

1. 下载jar , 放入项目路径中

2. 配置 web.xml

<filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

3. 在web.xml 的同路径下,添加 urlrewrite.xml 文件, 内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<urlrewrite><rule><from>/old</from><to type="redirect">http://www.csdn.net</to></rule>
</urlrewrite>

这里可以配置很多的转向逻辑,不过有上下层级关系时,也就是既有二级域名又有三级域名的话, 配置起来会有一些问题。

不难理解三级在二级的基础上又换了一次, 导致url 会不对。

另外, 如果项目使用的是 http://myweb/myproject 这种通过项目名访问的话,

映射旧的地址可以在 tomcat/webapps 中放入一个旧项目同名的项目,里面没什么内容,专门用来做重定向。

页面跳转与重定向(之二)相关推荐

  1. Android:页面跳转传参方式一,页面跳转传参方式二

     一.页面跳转传参方式一 跳转的过程如何传参:也就是页面之间如何传递参数,有点像函数调用如何传参,页面跳转也要传参. 复制一个工程 你要跳转,(现在的代码如下),intent 既然能设置跳转到哪个页面 ...

  2. 页面跳转与重定向(之一)

    前言 html ,js 可以实现页面跳转. jsp , asp, php 也有各自页面跳转与重定向的方式. 下文针对js 和jsp 的页面跳转实现方式进行一个总结. html 页面跳转方式 可以使用h ...

  3. [UWP小白日记-9]页面跳转过度动画(二)

    [UWP小白日记-9]页面跳转过度动画(二) 原文:[UWP小白日记-9]页面跳转过度动画(二) 又打算动手写了 [UWP小白日记-6]页面跳转过度动画 上次写的,这次随着学习的进度使用新的玩法. 最 ...

  4. springboot 直接转发调用_springboot-过滤器的页面跳转【重定向与请求转发】-异常报错...

    springboot中,增加过滤器后,页面重定向跳转与请求转发跳转,都出现报错. 求大佬帮忙解答,谢谢! 一.页面跳转代码: 1.重定向代码: response.sendRedirect(" ...

  5. TP5的页面跳转与重定向

    1.页面跳转的目标有哪些? 调用方法: $this->success('提示','地址'); $this->error('提示','地址'); index.php文件内容: <?ph ...

  6. js页面跳转或重定向

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 页面重定向推荐的4种方式: <!DOCTYPE html> <html>< ...

  7. flask重定向生成html,Flask实战第5天:页面跳转和重定向

    GET和POST请求 在网络请求中有许多请求方式,比如GET, POST, DELETE, PUT等,最常用的就是GET和POST GET 只会在服务器上获取资源,不会更改服务器的状态,这种请求方式推 ...

  8. 【Python】Flask框架系列(一):安装、页面跳转/重定向、模板、逻辑语句、过滤器、继承/使用block、url链接/加载静态资源

    从下载安装开始的所有笔记. 其实 Flask 的示例程序算是 MVC 模式的. Model 是 ORM, V 是 Template, C 是 url route 和 request handler. ...

  9. JavaWeb之页面跳转数据库连接

    开发web项目必不可少的操作:页面跳转和数据库连接,想学的来看哦~♥♥♥ 渴求知识的你 目录 页面跳转 转发 重定向 转发与重定向的区别 数据库连接 JDBC JSP中连接数据库 页面跳转 转发 对应 ...

最新文章

  1. JSP学习笔记(五):日期处理、页面重定向、点击量统计、自动刷新和发送邮件...
  2. RTP timestamp与帧率及时钟频率的关系
  3. 存储的学习:freenas使用记录
  4. 独家 | 大数据与AI技术在金融科技的应用
  5. SQLite 简介(http://www.w3cschool.cc/sqlite/sqlite-intro.html)
  6. python编译原理_编译原理实战课 带你吃透编译技术核心概念与算法
  7. 太阳能板如何串联_光伏板清洁专用的清洁毛刷
  8. Blackboard Fibonacci(CF-217B)
  9. go语言switch语句用法
  10. bzoj4974: [Lydsy1708月赛]字符串大师
  11. css3的一些知识点
  12. java file.listFiles()按文件名称、日期、大小排序
  13. WI-FI密码破解-奶瓶
  14. nordic 52832 键盘
  15. AXD 调试经验,使用及问题
  16. 如何解决chrome浏览器地址栏变黑色(chrome搜索栏变黑)(mac电脑)
  17. 计算机与手机联网,手机与电脑无线连接怎么实现
  18. html 实时统计字数,记一次前端 input、textarea输入框实时 统计字数(真实字数)...
  19. 蚂蚁聚宝虫洞,数据传输的桥梁
  20. 基于单层决策树的adaBoost算法思想分析和源代码解析

热门文章

  1. 幕客better-scroll
  2. 将ERF格式转换成PCAP格式
  3. php基础01~命名、传值问题
  4. MONO Jexus部署最佳体验
  5. 使用GDI+绘制高质量图和字体(2)
  6. Diino - 具有自动数据备份功能的国外2G免费网络硬盘
  7. activiti驳回、沟通、转办的解决方法
  8. ELK + kafka 分布式日志解决方案
  9. 问题:使用pandas中的DataFrame写入csv文件多出一行unnamed,如何解决呢??
  10. React 开发常见报错解决方法