HttpServletResponse、

summarize

在创建Servlet时,会覆盖service方法或doGet()/doPost(),这些方法都有俩参数,一个是请求request一个是响应response

响应行只能设置状态码

重定向特点:请求服务器两次,地址栏变化

location:

HttpServletResponse

设置响应行

package com.oracle.demo01;

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

/**
 * Servlet implementation class HeadServlet
 */
public class HeadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HeadServlet() {
        super();
    }
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置响应头中的状态码
        response.setStatus(404);        
    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

重定向

其实请求了两次 但客户端只做了一次请求

package com.oracle.demo01;

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

public class Servlet01 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*//        设置响应状态码
        response.setStatus(302);
//        设置响应头中的Location  
        response.setHeader("Location","/WEB05/Servlet02");*/
        
//        重定向 sendRedirect方法  下面这一句话就等于上面两句话
        response.sendRedirect("/WEB05/Servlet02");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
----------------------------------------------
package com.oracle.demo01;

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

public class Servlet02 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("Servlet02");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

通过response设置响应头

package com.oracle.demo01;

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

public class RefreshServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        设置定时刷新的头
        response.setHeader("Refresh","5;url=https://www.baidu.com");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

用JSP写一个重定向

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    window.onload=function(){
        //获取span元素
        var second=document.getElementById("second");
        //定义秒数
        var time=5;
        //设置定时器
        var timer=setInterval(function(){
            //获得元素里面的文本节点
            second.innerHTML=time;
            time--;
            if(time<0){
                clearInterval(timer);
                location.href="http://www.baidu.com";
            }
        },1000);
    }    
</script>
</head>
<body>
    恭喜你,注册成功!
    <span id="second" style="color:red">5</span>
    秒后跳转,如没跳转,请点击
    <a href="http://www.baidu.com">这里</a>
</body>
</html>

设置码表

package com.oracle.demo01;

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

public class BodyServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*//        设置缓冲区编码表
        response.setCharacterEncoding("UTF-8");
//        设置客户端浏览器使用的码表
        response.setHeader("Content-Type","text/html;charset=utf-8");*/
//        解决响应的中文乱码问题 用一个犯法就可以 代替上面两句话
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write("中国");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

猜你喜欢

转载自www.cnblogs.com/zs0322/p/11119782.html
今日推荐