JavaWeb实战之Response重定向运用以及原理详解
Posted 上进小菜猪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb实战之Response重定向运用以及原理详解相关的知识,希望对你有一定的参考价值。
@[toc]
一.实现重定向
重定向是一个非常广泛的概念,即通过各种方法将各种网络请求重定向到其他位置,如网页重定向、域名重定向、数据包重定向等。
如上图,A为客户端,A向服务端B请求一个资源,B返回告诉A去访问C,然后A去请求C,从而获取资源的过程为重定向。
常见的使用场景:登录操作。
1.1 重定向实战
1。我们先看一下重定向的方法函数,sendRedirect。
void sendRedirect(String var1) throws IOException;
2.新建一个类,类名为:Redirectservlet。
3.继承HttpServlet类,重写doGet。
4.写重定向,resp.sendRedirect,指向img的url。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
resp.sendRedirect("/Response/img");
5.注册url,添加映射:
<servlet>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.gowork.servlet.Redirectservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/red</url-pattern>
</servlet-mapping>
6.启动项目,访问localhost:8080/Response/red。
7.结果如下:
访问red路径,瞬间会重定向到img。
我们打开f12,查看网络,可以看到red的状态代码为302,为重定向。
1.2 笔试题目
请你谈谈重定向与转发的区别?
相同点:
- 页面都会实现跳转
不同点:
- 请求转发的时候,url不会发生变化。
- 重定向的时候,url会发生变化。
如下图的区别:
二 重定向实例
1.我们新建立一个类,类名为:requesttext,继续基础继承HttpServlet类,重写doGet。
public class requesttext extends HttpServlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
System.out.println("现在已经进入这个请求了!");
如果我们进入过这个重定向页面就会输出:现在已经进入这个请求了。
2.注册url,映射url:
<servlet>
<servlet-name>newRedirect</servlet-name>
<servlet-class>com.gowork.servlet.requesttext</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>newRedirect</servlet-name>
<url-pattern>/loign</url-pattern>
</servlet-mapping>
如果我们访问/rednew,就会向后端的com.gowork.servlet.requesttext发出请求。
3.到项目的主页面:index.jsp。
4.这提交的路径,需要寻找到项目的路径。
我们搜索jsp maven,进入maven官网,找到jsp
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
<scope>provided</scope>
</dependency>
我们进入pom.xml,导入上面的jsp。
导入成功,我们可以明显的看到:
5.我们启动项目,访问主页,得到如下:
因为客户端编码问题,暂时显示了乱码,不过这不影响我们的查看,第一个是用户名,下面的是密码。我们在俩列里填完之后,我们点击提交:
因为中文太长了,我测试写了1234和143314,提交之后,url就会显示出来,因为是get传输。
6.处理请求。我们在B里处理拿到需要的数据,然后再重定向。
String name =req.getParameter("username");
String pass =req.getParameter("password");
System.out.println(name+":"+pass);
resp.sendRedirect("");
重定向要注意路径问题,否则容易404问题。
到了这里对应重定向需求就已经完成了。
以上是关于JavaWeb实战之Response重定向运用以及原理详解的主要内容,如果未能解决你的问题,请参考以下文章
javaWeb中request请求转发和response重定向
20160322 javaweb 学习笔记--response 重定向
java WEB如何创建response,从而进行页面重定向
javaweb中重定向和请求转发(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)