读取头信息和响应头信息

1.典型的请求头信息

GET/servlet/Request?keywords=servlets+jsp HTTP/1.1

Accept:image/gif.image/jpg.*/*

Accept-Encoding:gzip

Connection:Keep-Alive

Cookie:userID=id456578

Host:www.somegbookstore.com

Referer:http://www.somebookstore.com/findbooks.html

User-Agent:Mozilla/4.0(compatible:MSIE 6.0:Windows NT 5.0)

2.读取HTTP请球头

使用HttpServletRequest中的方法

一般方法

getHeader(header名称不区分大小写)

getHeaders

getHeaderNames

专门方法

getCookies

getAuthType

getRemoteUser

getContentLength

getContentType

getDateHeader

getIntHeader

相关信息

getMethod

getRequestURL

getQueryString

getProtocol

3.使用表格显示有请求头信息

实例

package com.geek99.demo;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HeaderServlet
 */
public class HeaderServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HeaderServlet() {
        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
		Enumeration<String> enum1=request.getHeaderNames();
		while(enum1.hasMoreElements())
		{
			String name = enum1.nextElement();
			String value=request.getHeader(name);
			System.out.println(name+":"+value);
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

理解各种请求头的含义

Accept

标识浏览器能处理MIME类型

能发送不同的内容的客户端,例如PNG文件有好的压缩特性,但是在浏览器中支持的不是很广泛、例如,一个Servlet可以检查是否支持PNG文件格式,如果支持<IMG SRC = “picture.png”...>否则<IMG SRC="picture.gif"...>

-Accept-Encoding

标识浏览器能处理的编码类型

-Authorization

授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中

-Connection

表示是否需要持久连接。如果Servlet看到这里的值为"Keep-Alive",或者看到请求使用的是HTTP1.1(HTTP1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Apple图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先吧内容写入ByteArrayOutStream,然后在正式写出内容之前计算它的大小。

-Cookie

保存在客户端的消息

-Host

包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

-If-Modified-Since

只有当所请求的内容,在指定的日期之后,又经过修改才返回它,否则返回304 “Not Modified”应答

-Referer

包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

-User-Agent

浏览器类型,如果Servlet返回的内容与浏览器类型有关则改值非常有用




响应头信息

构建Excel电子表格 


package com.geek99.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ResponseHeaderServlet
 */
public class ResponseHeaderServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ResponseHeaderServlet() {
        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
		response.setContentType("application/vnd.ms-excel");
		PrintWriter out = response.getWriter();
		out.println("\tQ1\tQ2\tQ3\tQ4\tTotal");
		out.println("Apples\t78\t87\t92\t29\t=SUM(B2:E2)");
		out.println("Oranges\t77\t86\t93\t30\t=SUM(B3:E3)");
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

动态生成JPEG图片

package com.geek99.demo;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ResponseHeaderServlet
 */
public class ResponseHeaderServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ResponseHeaderServlet() {
        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
		
		response.setContentType("image/jpeg");
		InputStream in = this.getClass().getClassLoader().getResourceAsStream("practice.jpg");
		int len = in.available();
		byte [] buffer = new byte[len];
		in.read(buffer);
		OutputStream out = response.getOutputStream();
		out.write(buffer);
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

定时刷新页面

package com.geek99.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ResponseHeaderServlet
 */
public class ResponseHeaderServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ResponseHeaderServlet() {
        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
		
		response.setHeader("refresh", "1");
		
		response.setContentType("text/html;charset=gbk");
		
		PrintWriter out = response.getWriter();
		
		out.println(new Date().toLocaleString());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值