Jsp重定向(response.sendRedirect())和转发(request.getRequestDispatcher().forward(request,r)的差别
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="sun.awt.RepaintArea"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'check_login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String uname = request.getParameter("username");
String pwd = request.getParameter("password");
if("sa".equals(uname) && "123".equals(pwd)){
//response.sendRedirect("welcome.jsp");
request.getRequestDispatcher("welcome.jsp").forward(request,response);
}else{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
差别1:request.getRequestDispatcher().forward()是转发。是在同一个请求里。response.sendRedirect()是重定向,因此放在request里的数据不会被传过去。
差别2:浏览器的地址栏变化。转发地址栏不会发生变化。重定向会发生变化。
浙公网安备 33010602011771号