转发与重定向自我总结
来源:互联网 发布:windows经典桌面壁纸 编辑:程序博客网 时间:2024/06/06 00:25
在jsp的学习中,转发与重定向的区别是一个难点。
//重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。 与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用。
上述内容通过搜索得知。重定向的过程中无法再使用request
代码
使用重定向跳转页面,用于重定向的request无法保存所以需要使用session
所以FirstServlet
package com.demo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
/**
* Servlet implementation class FirstServlet
*/
@WebServlet("/FirstServlet")
public class FirstServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FirstServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求转发
//String sno=request.getParameter("sno");
//RequestDispatcher requestDispatcher=request.getRequestDispatcher("SecondServlet");
//requestDispatcher.forward(request, response);
//请求重定向
//向session中保存Student对象
//response.sendRedirect("SecondServlet");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
// 给该session放入属性
String name=request.getParameter("name");
String sno=request.getParameter("sno");
Student student=new Student();
student.setName(name);
student.setSno(sno);
session.setAttribute("name", name);
session.setAttribute("sno", sno);
response.sendRedirect("SecondServlet");
}
}
实现过程中发现程序必须在doGet中才能显示,所以使用了doPost(request,response);
SecondServlet
package com.demo;
import java.io.IOException;
import java.io.PrintWriter;
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 javax.servlet.http.HttpSession;
/**
* Servlet implementation class SecondServlet
*/
@WebServlet("/SecondServlet")
public class SecondServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SecondServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");
String sno = (String) session.getAttribute("sno");
out.println("name:"+name+"sno:"+sno);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//out.println("sno:"+request.getParameter("sno"));
//out.println("name:"+request.getParameter("name"));
//out.println("dopost");
//response.setContentType("text/html;charset=utf-8");
//PrintWriter out = response.getWriter();
// HttpSession session = request.getSession();
// String name = (String) session.getAttribute("name");
// String sno = (String) session.getAttribute("sno");
//out.println("name:"+name+"sno:"+sno);
doPost(request,response);
}
}
运行程序发现页面已跳转到servlet2
若不使用重定向使用转发的话页面会继续保持在servlet1- 转发与重定向自我总结
- 转发 与 重定向
- 重定向与转发
- 重定向与转发
- 重定向与转发
- 转发与重定向
- 重定向与转发
- 重定向与转发
- 转发与重定向
- 转发与重定向
- 转发与重定向
- 转发与重定向
- 转发与重定向
- 重定向与转发
- 转发与重定向
- 转发与重定向
- 转发与重定向
- 转发与重定向
- Android 实现多图分享到微信朋友圈
- 14 个你可能不知道的 JavaScript 调试技巧
- UVA 10391 Compound Words
- 强撸Tomcat核心组件:NIO Connector
- [DFS] HDU 2181
- 转发与重定向自我总结
- 笔记整理目录
- 2017-11-9 白银,油,铜 分析
- centos7—交换分区
- 11 个简单的 Java 性能调优技巧
- LightOJ
- 紫书第一章程序设计入门笔记
- 共享快递柜方案有哪些开发要多久
- [BFS] HDU 3533