java--重定向/转发

来源:互联网 发布:python登录文件夹帐号 编辑:程序博客网 时间:2024/06/16 04:29

转发:这里写图片描述
共用req,resp,所以可以在里面封装数据
只能站内实现,无法站外实现
通过req
请求的地址:/jsps/result.jsp

重定向:
这里写图片描述
浏览器请求两次,服务器应答两次,两次的req,resp不同,无法共享
通常站外实现(站内实现共享则需要传参)
通过resp:
请求的地址:/helloWeb/jsps/result.jsp

主页index.xml

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html>  <head>    <title>第一个web项目的主页</title>  </head>  <body>    <h2>主页主页</h2>    <h2>湖南长沙</h2>    <h3>发布方式一......</h3>    <br/>        <h2>演示重定向/转发</h2>    <a href="jsps/result.jsp">超链接</a><!-- 后台控制不了 --><br/><br/>    <a href="redirect">重定向/转发</a><br/><br/>    </body></html>

RedirectServlet .java

package cn.hncu.servlet;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RedirectServlet extends HttpServlet {    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp)            throws ServletException, IOException {//      req.getHeader("Referer");        //转发--共享req,resp        req.setAttribute("name", "jack");//getAttribute获取        //重定向--两次的req不一样(用传参)用getParament获取        //下面resp.sendRedirect( "/helloWeb/jsps/result.jsp?name=jack");        //通过设置http协议的响应头实现重定向        //由服务器找到/helloWeb/jsps/result.jsp的位置,返回给浏览器,浏览器再次拿着这个目录再次请求        //方法一:底层的协议技术设置状态码//      resp.setStatus(302);//HttpServletResponse.SC_FOUND//      resp.setHeader("Location", "/helloWeb/jsps/result.jsp");        //方法二:用函数内部设置状态码//      resp.sendRedirect( "/helloWeb/jsps/result.jsp");//      resp.sendRedirect( "/helloWeb/jsps/result.jsp?name=jack");        //转发--分发器        //由服务器在当前项目下找到/jsps/result.jsp,再响应        RequestDispatcher rd=req.getRequestDispatcher("/jsps/result.jsp");        rd.forward(req, resp);    }}

注意:转发是由servlet帮忙转发的,在项目内部,所以请求地址只需要”/jsps/result.jsp”就可以了
但是重定向是servlet响应浏览器,再由浏览器向拿着响应回来的地址信息去向服务器进行第二次请求,所以请求地址要详细,否则浏览器找不到想要的信息”/helloWeb/jsps/result.jsp”
可以看出重定向和转发相差一个项目根目录

配置文件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_3_0.xsd" version="3.0">  <display-name></display-name>  <servlet>    <servlet-name>RedirectServlet</servlet-name>    <servlet-class>cn.hncu.servlet.RedirectServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>RedirectServlet</servlet-name>    <url-pattern>/redirect</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>
1 0
原创粉丝点击