关于servlet中的请求转发与重定向的区别

来源:互联网 发布:电子版通讯录制作软件 编辑:程序博客网 时间:2024/05/22 08:19
/*关于servlet中的请求转发与重定向请求转发是在一个Servlet需要请求其他servlet时,会将请求转发给其他的Servlet去处理在Servlet中使用request.getRequestDispatcher(url)来处理的所以就理解定义而言,是将请求转发,,将请求,在这里我们需要注意所以他是在一个请求中的,当我们使用request.setAttribute();在转发的servlet是可以通过request.getAttribute()来拿到的但是如果使用重定向,就是通过对客户端进行相应,要求客户端重新定向新的地址这是会生成新的request对象。http是没有记忆能力的,不会记得上一个请求有属性,如果再上一个界面setAttribute(),你以为你会在下个界面通过request.getAttribute(),会发现什么也没有。写个例子先来客户端*/<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><a href="/test1/TestResponse?user=admin&password=123456">点击</a></body></html>再看处理请求的servletpackage com.test1;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class TestResponse */@WebServlet("/TestResponse")public class TestResponse extends HttpServlet {    private static final long serialVersionUID = 1L;    /**     * @see HttpServlet#HttpServlet()     */    public TestResponse() {        super();        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub    String userString=request.getParameter("user");    String passwordString=request.getParameter("password");    System.out.println("转发前"+userString);    System.out.println("转发前"+passwordString);    request.setAttribute("user",userString);    request.setAttribute("password",passwordString);    //response.sendRedirect("/test1/Redirect");    request.getRequestDispatcher("/Redirect").forward(request,response);    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub    }}/*注意一下文章的注释部分,转发可以使用相对路径,不需要使用环境路径,因为就在服务器里面进行的重定向就要写环境路径了,是对客户端进行相应,要求客户端进行重定向接下来是转发或重定向的servlet*/package com.test1;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class Redirect */@WebServlet("/Redirect")public class Redirect extends HttpServlet {    private static final long serialVersionUID = 1L;    /**     * @see HttpServlet#HttpServlet()     */    public Redirect() {        super();        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        String userString=(String) request.getAttribute("user");        String passwordString=(String) request.getAttribute("password");        System.out.println(userString);        System.out.println(passwordString);        response.setCharacterEncoding("utf-8");           OutputStream outputStream=response.getOutputStream();           outputStream.write(userString.getBytes());           outputStream.write(passwordString.getBytes());    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub    }}/*测试结果是会在浏览器输出admin和123456但是当打开重定向,关闭转发,你这程序会崩溃转发界面找不到属性。*/
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胃疼可以喝酒吗 喝酒就拉肚子 体检前喝酒有什么影响 尿道炎能喝酒吗 喝酒喝多了头疼怎么办 喝酒前吃什么 喝酒喝到胃出血怎么办 甲状腺能喝酒吗 拔牙能喝酒吗 咳嗽能喝酒吗 喝酒后关节痛 鼻炎可以喝酒吗 失眠能喝酒吗 心绞痛能喝酒吗 为什么喝酒会拉肚子 一喝酒就胃疼 胃病能喝酒吗 喝酒对高血压的危害 感冒可以喝酒吗 喝啤酒的好处和坏处 喝白酒 饮酒陶渊明原文 饮酒陶渊明 饮酒古诗 饮酒其五陶渊明 陶渊明的饮酒 饮酒陶渊明赏析 饮酒赏析 陶渊明饮酒 陶渊明 饮酒 饮酒诗陶渊明 饮酒其五赏析 饮酒 陶渊明 陶渊明饮酒其五 吃罗红霉素能喝酒吗 血糖高的人能喝酒吗 拔火罐后可以喝酒吗 身上有伤口能喝酒吗 椎间盘突出能喝酒吗 神经性皮炎能喝酒吗 腰间盘突出可以喝酒吗