servlet 重定向(八)

1.重定向是什么?

  这里说的重定向是由http协议规定的一种机制。其工作流程如下所述。

  (1)客户端发起http请求,访问服务器端组件。

  (2)服务器端返回一个状态代码为302的响应结果。该代码的意思是让浏览器再访问另一个组件,响应结果中包含着访问新组件的url地址。新的访问组件可能在同一个应用中也可能不在同一个应用中。

  (3)当浏览器接受到这种结果,会自动访问新的url.

  (4)浏览器端接受新的url返回结果。

2.实现

  重定向通过Servlet API 中HttpServletReponse接口提供的 sendRedirect(String location)方法完成。

3.重定向特点

  3.1 servlet源组件的响应结果不会返回到客户端。

  3.2  servlet源组件和目标组件不会共享同一个ServletRequest对象。

  3.3 如果源组件在进行重定向前提前提交响应结果,会报异常。

3.4 重定向的地址不必是同一个服务器的应用。

4.案例

Check1Servlet 第一次请求的类
package com.learn;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by Administrator on 2017/09/28.
 */
public class Check1Servlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String userName = req.getParameter("name");
        String message = "";

        if(userName == null){
            message = "please input your name";
        } else {
            message = userName;
        }
        req.setAttribute("mess",message);

        PrintWriter out = resp.getWriter();
        out.print("before redirect ");
        System.out.println("before redirect");

        resp.sendRedirect("out1?mess="+message);
        out.print("after redirect");
        System.out.println("after redirect");

        out.close();
    }
}
Out1Servlet 重定向的类
package com.learn;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by Administrator on 2017/09/28.
 */
public class Out1Servlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String mess = (String) req.getAttribute("mess");
        System.out.println("请求范围内的数据:"+mess);

        mess = req.getParameter("mess");
        System.out.println("请求参数中的:"+mess);

        PrintWriter out = resp.getWriter();
        out.write(mess);
        out.close();

    }
}

页面输出结果:

控制台输出结果:

 

  

时间: 2024-11-05 21:46:57

servlet 重定向(八)的相关文章

Java基础——Servlet(八)文件上传下载

一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 <% if(request.getParameter("flag")!=null){ SmartUpload su=new SmartUpload(); su.initialize(pageContext); su.upload(); su.save("/upload_file

Servlet重定向和请求转发

设置请求重定向 1.可以选择别的服务器端程序来处理请求 2.把请求重定向到一个完全不同的URL上 设置自动刷新和等待页 response.setHeader("Refresh","time;URL=url"); 客户端浏览器向服务器发送请求方式 1.浏览器输入URK网址(GET方法) 2.点击超链接(GET方法) 3.点击提交表单(GET或POST方法) get方法和post方法区别 一.提交数据类型 GET() 文本 POST() 文本.二进制文本 二.提交数据长

Servlet -- 重定向

重定向的两种方式: 1: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /** * 当响应状态码为302的时候,表示要重定义. * 浏览器会检测Location的值,去重新发起请求. */ // 设置响应状态码 302 表示重定向 response.setStatus(302); // 设置响应头 Locat

servlet重定向到jsp后样式无法正常显示

原因是在servlet中转发时css和图片的路径变成相对于这个servlet的相对路径而非相对于web项目的路径了. 解决办法:导入css样式和图片时把css写成动态绝对路径, 如用EL表达式表示: <link rel="stylesheet" href="${pageContext.request.contextPath }/css/main.css" type="text/css" /> <a href="inde

servlet随笔

一.servlet配置 <!-- 向服务器注册servlet --> <servlet> <!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! --> <servlet-name>AServlet</servlet-name> <!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例[对象] --> <servlet-

SpringMVC使用ModelAndView进行重定向

1.Servlet重定向forward与redirect: 使用servlet重定向有两种方式,一种是forward,另一种就是redirect.forward是服务器内部重定向,客户端并不知道服务器把你当前请求重定向到哪里去了,地址栏的url与你之前访问的url保持不变.redirect则是客户端重定向,是服务器将你当前请求返回,然后给个状态标示给你,告诉你应该去重新请求另外一个url,具体表现就是地址栏的url变成了新的url. 2.ModelAndView重定向: 使用SpringMVC通

spring MVC 使用 modelAndView.setViewName(&quot;forward:*.action&quot;) 发送重定向

1.Servlet重定向forward与redirect: 使用servlet重定向有两种方式,一种是forward,另一种就是redirect.forward是服务器内部重定向,客户端并不知道服务器把你当前请求重定向到哪里去了,地址栏的url与你之前访问的url保持不变.redirect则是客户端重定向,是服务器将你当前请求返回,然后给个状态标示给你,告诉你应该去重新请求另外一个url,具体表现就是地址栏的url变成了新的url. 2.ModelAndView重定向: 使用Spring MVC

什么是Servlet容器?

在本文中,我写了一些关于Web服务器.Servlet容器以及它与JVM的关系的基本概念.我想表达的是,Servlet容器也仅仅不过是一个Java程序. 1. 什么是Web服务器? 想要知道什么是Servlet容器,我们首先要知道什么是Web服务器. Web服务器使用HTTP协议来传输数据.最简单的一种情况是,用户在浏览器(客户端,client)中输入一个URL(如,www.programcreek.com/static.html),然后就能获取网页进行阅览.因此,服务器完成的工作就是发送网页至客

尝试用kotlin做一个app(八)

点击新闻列表进入详情页 使用WebView 1.准备工作 现在没有办法把整个网站前端都做出来,就先做一个新闻页面吧.新闻页面也要连接数据库,要使用之前写后台的JDBC类,所以我想可以在原来项目中增加一个“子项目”.那就要调整一下原来项目的结构. 调整后的项目结构是这样的 以下是遇到的问题和解决方法 idea项目重命名 如果出现错误javax.management.InstanceNotFoundException: Catalina:type=Server,查看artifacts下的是否还保留了