JSP中Forward和Redirect之间的区别
来源:互联网 发布:java实现md5加密算法 编辑:程序博客网 时间:2024/05/22 13:55
为了说明JSP中Forward和Redirect之间的区别,写了一个测试web工程
index.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>index</title></head><body><form action='search' method='post'>Key Word<input id='keyWord' name='keyWord' value=''/><input type="submit" value='Search'/></form></body></html>
result.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>result</title></head><body>Key Word:<%= request.getParameter("keyWord")%><br/>The key Word can not be null or have * within it.</body></html>
web.xml:
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>JSP</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>test</servlet-name> <servlet-class>com.sean.test</servlet-class> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/search/*</url-pattern> </servlet-mapping></web-app>
test.java:
package com.sean;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class test extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String keyWord = req.getParameter("keyWord");if(keyWord == null || keyWord.equals("") || keyWord.contains("*")){req.getRequestDispatcher("result.jsp").forward(req, resp);}else{//use baidu to search the keywordresp.sendRedirect("http://www.baidu.com/s?wd=" + keyWord);}} }一,Forward
访问测试web工程主页,并在输入框中输入*
点击Search按钮,最终结果如下:
虽然最终显示了result.jsp页面,但是地址栏中的地址是http://127.0.0.1:8080/JSP/search,并不是http://127.0.0.1:8080/JSP/result.jsp
可以判断出Forward属于服务器内部的跳转,浏览器只是发送了请求,显示服务端响应,并不知道请求在服务器端进行了跳转,请求处理流程如下:
可以看到浏览器只发送了一条请求
由于是服务器内部跳转,所以只能跳转至服务器内部已经存在的JSP或servlet,并不能跳转至诸如http://www.baidu.com这样的外部地址
二,Redirect
访问测试web工程主页,并在输入框中输入JSP
点击Search按钮,最终结果如下:
显示了百度搜索结果页面,地址栏中的地址并不是http://127.0.0.1:8080/JSP/search,而是http://www.baidu.com/s?wd=jsp
由于浏览器地址栏的地址发生了变化,可以判断出Redirect属于浏览器端跳转,浏览器在接收到服务器响应后,再次向新的地址发起了请求,请求处理流程如下:
可以看到浏览器发送了2条请求,第一条请求的请求地址为http://127.0.0.1:8080/JSP/search,第二条请求的请求地址为http://www.baidu.com/s?wd=jsp,正是servlet中设置的redirect地址
看一下第一条请求的HTTP响应
可以看到状态码是302,Location是http://www.baidu.com/s?wd=jsp,是不是很清楚了?
- JSP中Forward和Redirect之间的区别
- JSP中Forward和Redirect之间的区别
- Jsp中Forward和Redirect的区别。
- JSP中forward和redirect的区别
- Jsp中Forward和Redirect的区别
- jsp中forward和redirect的区别
- jsp中redirect和forward的区别
- jsp中forward和redirect的区别
- jsp中redirect和forward的区别
- jsp中forward和redirect的区别
- jsp中forward和redirect的区别
- JSP中forward和redirect的区别
- jsp中forward和redirect的区别
- jsp中redirect和forward的区别
- jsp中redirect和forward的区别
- jsp/servlet中 forward, include, reDirect 之间的区别
- jsp/servlet中 forward, include, reDirect 之间的区别
- jsp中forward和redirect区别
- J2EE项目异常处理
- 远程线程注入引出的问题
- Android AndroidManifest属性
- Android Material Design之Toolbar与Palette实践
- linux压缩解压文件
- JSP中Forward和Redirect之间的区别
- 初始化一个数组
- C语言与C#下的动态数组
- 厦门商业贷款转公积金攻略
- 用dbforge调试procedure
- 事务
- 厦门拍婚纱的一些经验
- Qt和SQlLite
- Android音频录制MediaRecorder之简易的录音软件实现代码