zoukankan      html  css  js  c++  java
  • 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:浏览器的地址栏变化。转发地址栏不会发生变化。重定向会发生变化。


  • 相关阅读:
    forEach
    Apache localhost和局域网ip地址访问
    数据库基础知识(必读)
    设计模式其他常见面试题
    设计模式学习
    简历书写注意事项
    计算机网络常见面试题二
    计算机网络常见面试题一
    分布式系统中的CAP 理论
    多线程常见面试题一
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/8412178.html
Copyright © 2011-2022 走看看