大家好,今天分享一下重定向的概述以及使用
我们要知道,重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置
同时,重定向有好几类
1.网页
重定向、
2.域名
的重定向、
3.路由
选择
4. Linux上的文件
重定向操作
就是要知道,这几个方面都有重定向的操作
我们今天分享的是基于web的重定向(就是指网页重定向)
一个场景,看我画的图:
你作为一个用户
,你使用浏览器访问一个网站
,你访问的网站资源放在了服务器当中,你是通过URL(理解成一个资源路径地址)访问到一个资源的 ,如果你使用原生的代码去写项目,会使用到servlet这个技术,就会知道,我们作为开发者是可以人为调度服务器资源位置的,但是如果这个位置的一个普通访问者通过URL搜索到的资源不存在或者将地址搞错了,在这种情况下,可能会发生两件事
- 页面会直接报错
- 搜索到的网页不是你想看见的那个,地址栏中的地址自动的变成了另一个地址
这个情况一旦发生,服务器就会向浏览器发出302的响应状态码
(里面有资源的目标地址)
这就是重定向,
使用大白话去讲,就是,服务器告诉浏览器给某个地址发送请求
做个案例
选择webapp
起一个项目名
设置maven
搭建完成
导入jar包
、
<dependencies>
<!--加入servlet依赖(servlet的jar)-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--jsp的依赖(jsp相关的jar加进来)-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
</dependency>
</dependencies>
截图
看一下项目结构:
写一个类(就是业务,也是servlet程序)
写第一个类AddServlet (就是相对于一个网页,路径为/add)
package shuaige.com;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/add")
// 这里我们使用了注解的方式
public class AddServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
System.out.println("添加完成");
//就是简单输出了一句话
}
}
截图:
写另一个网页(路径为/data)
package shuaige.com;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/data")
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("展示数据");
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().println("下面是数据");
}
}
截图:
改第一个网页的代码,设置让它自动跳转到第二个网页
就这一条核心的代码,意思就是让用户通过浏览器访问/add(第一个网页)的时候,自动跳到第二个网页/data
resp.sendRedirect("data");
package shuaige.com;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/add")
public class AddServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
System.out.println("添加完成");
// 在这里配置自动跳转到TestServlet 这个页面,并将对应的内容返回给用户看
// 使用重定向的技术来做这个
// 返回302,重定向url
resp.sendRedirect("data");
}
}
截图:
设置Tomcat连接
就这样点击就行
照做
开启Tomcat服务器
服务器启动之后,初始页面会出现在你的眼前
输入/data 发现就是它自身的页面(就是第二个网页)
它的后台部分
输入/add (第一个页面的路径,这个时候还没有点击回车
)
点击回车(看见路径变成了/data , 其内容也是第二个网页的)
这就是重定向的操作
看一下后台
到这里,我们基于web的重定向就可以了,但是有几个特点要注意:
- 在进行重定向, servlet容器会将response对象上存放的数据全部清空,以免对其他的网络请求造成干扰
- 重定向的地址是随意的
- 重定向之后,浏览器地址栏里的地址会发生改变
好了,有关于重定向的操作以及概述就到这里了,谢谢大家