Java Servlet 笔记4
Servlet 客户端 HTTP 请求
当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。
读取 HTTP 头的方法
下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象可用。
| 序号 | 方法 & 描述 | 
|---|---|
| 1 | Cookie[] getCookies() 返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。  | 
| 2 | Enumeration getAttributeNames() 返回一个枚举,包含提供给该请求可用的属性名称。  | 
| 3 | Enumeration getHeaderNames() 返回一个枚举,包含在该请求中包含的所有的头名。  | 
| 4 | Enumeration getParameterNames() 返回一个 String 对象的枚举,包含在该请求中包含的参数的名称。  | 
| 5 | HttpSession getSession() 返回与该请求关联的当前 session 会话,或者如果请求没有 session 会话,则创建一个。  | 
| 6 | HttpSession getSession(boolean create) 返回与该请求关联的当前 HttpSession,或者如果没有当前会话,且创建是真的,则返回一个新的 session 会话。  | 
| 7 | Locale getLocale() 基于 Accept-Language 头,返回客户端接受内容的首选的区域设置。  | 
| 8 | Object getAttribute(String name) 以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。  | 
| 9 | ServletInputStream getInputStream() 使用 ServletInputStream,以二进制数据形式检索请求的主体。  | 
| 10 | String getAuthType() 返回用于保护 Servlet 的身份验证方案的名称,例如,"BASIC" 或 "SSL",如果JSP没有受到保护则返回 null。  | 
| 11 | String getCharacterEncoding() 返回请求主体中使用的字符编码的名称。  | 
| 12 | String getContentType() 返回请求主体的 MIME 类型,如果不知道类型则返回 null。  | 
| 13 | String getContextPath() 返回指示请求上下文的请求 URI 部分。  | 
| 14 | String getHeader(String name) 以字符串形式返回指定的请求头的值。  | 
| 15 | String getMethod() 返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。  | 
| 16 | String getParameter(String name) 以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。  | 
| 17 | String getPathInfo() 当请求发出时,返回与客户端发送的 URL 相关的任何额外的路径信息。  | 
| 18 | String getProtocol() 返回请求协议的名称和版本。  | 
| 19 | String getQueryString() 返回包含在路径后的请求 URL 中的查询字符串。  | 
| 20 | String getRemoteAddr() 返回发送请求的客户端的互联网协议(IP)地址。  | 
| 21 | String getRemoteHost() 返回发送请求的客户端的完全限定名称。  | 
| 22 | String getRemoteUser() 如果用户已通过身份验证,则返回发出请求的登录用户,或者如果用户未通过身份验证,则返回 null。  | 
| 23 | String getRequestURI() 从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分。  | 
| 24 | String getRequestedSessionId() 返回由客户端指定的 session 会话 ID。  | 
| 25 | String getServletPath() 返回调用 JSP 的请求的 URL 的一部分。  | 
| 26 | String[] getParameterValues(String name) 返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。  | 
| 27 | boolean isSecure() 返回一个布尔值,指示请求是否使用安全通道,如 HTTPS。  | 
| 28 | int getContentLength() 以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1。  | 
| 29 | int getIntHeader(String name) 返回指定的请求头的值为一个 int 值。  | 
| 30 | int getServerPort() 返回接收到这个请求的端口号。  | 
| 31 | int getParameterMap() 将参数封装成 Map 类型。  | 
Servlet 服务器 HTTP 响应
设置 HTTP 响应报头的方法
下面的方法可用于在 Servlet 程序中设置 HTTP 响应报头。这些方法通过 HttpServletResponse 对象可用。
| 序号 | 方法 & 描述 | 
|---|---|
| 1 | String encodeRedirectURL(String url) 为 sendRedirect 方法中使用的指定的 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。  | 
| 2 | String encodeURL(String url) 对包含 session 会话 ID 的指定 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。  | 
| 3 | boolean containsHeader(String name) 返回一个布尔值,指示是否已经设置已命名的响应报头。  | 
| 4 | boolean isCommitted() 返回一个布尔值,指示响应是否已经提交。  | 
| 5 | void addCookie(Cookie cookie) 把指定的 cookie 添加到响应。  | 
| 6 | void addDateHeader(String name, long date) 添加一个带有给定的名称和日期值的响应报头。  | 
| 7 | void addHeader(String name, String value) 添加一个带有给定的名称和值的响应报头。  | 
| 8 | void addIntHeader(String name, int value) 添加一个带有给定的名称和整数值的响应报头。  | 
| 9 | void flushBuffer() 强制任何在缓冲区中的内容被写入到客户端。  | 
| 10 | void reset() 清除缓冲区中存在的任何数据,包括状态码和头。  | 
| 11 | void resetBuffer() 清除响应中基础缓冲区的内容,不清除状态码和头。  | 
| 12 | void sendError(int sc) 使用指定的状态码发送错误响应到客户端,并清除缓冲区。  | 
| 13 | void sendError(int sc, String msg) 使用指定的状态发送错误响应到客户端。  | 
| 14 | void sendRedirect(String location) 使用指定的重定向位置 URL 发送临时重定向响应到客户端。  | 
| 15 | void setBufferSize(int size) 为响应主体设置首选的缓冲区大小。  | 
| 16 | void setCharacterEncoding(String charset) 设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。  | 
| 17 | void setContentLength(int len) 设置在 HTTP Servlet 响应中的内容主体的长度,该方法设置 HTTP Content-Length 头。  | 
| 18 | void setContentType(String type) 如果响应还未被提交,设置被发送到客户端的响应的内容类型。  | 
| 19 | void setDateHeader(String name, long date) 设置一个带有给定的名称和日期值的响应报头。  | 
| 20 | void setHeader(String name, String value) 设置一个带有给定的名称和值的响应报头。  | 
| 21 | void setIntHeader(String name, int value) 设置一个带有给定的名称和整数值的响应报头。  | 
| 22 | void setLocale(Locale loc) 如果响应还未被提交,设置响应的区域。  | 
| 23 | void setStatus(int sc) 为该响应设置状态码。  | 
例子:
package com.run.test; import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; 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 DataServlet
*/
@WebServlet("/DataServlet")
public class DataServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public DataServlet() {
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
// 设置刷新自动加载时间为 5 秒
response.setIntHeader("Refresh", 1);
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8"); // 使用默认时区和语言环境获得一个日历
Calendar cale = Calendar.getInstance();
// 将Calendar类型转换成Date类型
Date tasktime = cale.getTime();
// 设置日期输出的格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 格式化输出
String nowTime = df.format(tasktime);
PrintWriter out = response.getWriter();
String title = "自动刷新 Header 设置";
String docType = "<!DOCTYPE html>\n";
out.println(
docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n"
+ "<h1 align=\"center\">" + title + "</h1>\n" + "<p>当前时间是:" + nowTime + "</p>\n");
} /**
* @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);
} }
Java Servlet 笔记4的更多相关文章
- Java Servlet 笔记1
		
1. 什么是Servlet. Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序 ...
 - Java Servlet 笔记3
		
Servlet 表单数据 很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1. ...
 - Java Servlet 笔记2
		
1. Servlet的生命周期 Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service() 方法来处理客户端的请求. Servlet 通过调用 destroy ...
 - Java学习笔记之---Servlet
		
Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...
 - JSP学习笔记(5)-Java Servlet
		
1.什么是Servlet? Servlet(Servlet Applet),全程Java Servlet,是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态WEB内容.侠义 ...
 - Java学习笔记之:Java Servlet环境配置
		
一.介绍 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. 使用 ...
 - 《Java学习笔记(第8版)》学习指导
		
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
 - Java初学者笔记
		
Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...
 - 瘋耔java语言笔记
		
一◐ java概述 1.1 ...
 
随机推荐
- 命令行窗口中用telnet测试HTTP协议
			
1. 命令行窗口中用telnet测试HTTP协议 HTTP消息是由普通ASCII文本组成.消息包括消息头和数据体部分.消息头以行为单位,每行以CRLF(回车和换行)结束,消息头结束后,额外增加一个CR ...
 - python的命名空间
			
Python的命名空间是Python程序猿必须了解的内容,对Python命名空间的学习,将使我们在本质上掌握一些Python中的琐碎的规则. 接下来我将分四部分揭示Python命名空间的本质:一.命名 ...
 - python-map的用法
			
map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 1.当seq只 ...
 - build.gradle & gradle.properties
			
一.build.gradle buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { maven { cred ...
 - kubernetes入门(06)kubernetes的核心概念(3)
			
一.API 对象 API对象是K8s集群中的管理操作单元.K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作.例如副本集Replica Set对应的A ...
 - SpringCloud的应用发布(四)vmvare+linux,网关代理
			
一.配置方式 1.代理同一个Eureka中注册的服务 2.代理url 二.访问方式:get - list 1.直接访问应用 2.代理访问应用
 - Mego开发文档 - 从EF6/EFCore迁移到Mego
			
从EF6/EFCore迁移到Mego框架 如果您有EntityFragmework6或EntityFragmeworkCore的开发经验,在首次接触Mego框架时会发现这两个框架非常相似,本文将帮忙您 ...
 - Window7系统下安装jdk
			
根据电脑的操作系统下载相对于的jdk版本(32位或64位),我安装的是:java_jdk1.7 [计算机]——[属性]——[高级系统设置]——高级——[环境变量] 系统变量——>新建JAVA_H ...
 - POJ-1182 食物链---并查集(附模板)
			
题目链接: https://vjudge.net/problem/POJ-1182 题目大意: 中文题,不多说. 思路: 给每个动物创建3个元素,i-A, i-B, i-C i-x表示i属于种类x,并 ...
 - Java面试题——中级(下)
			
内部类和静态内部类的区别 内部类: 1.内部类中的变量和方法不能声明为静态的. 2.内部类实例化:B是A的内部类,实例化B:A.B b = new A().new B(). 3.内部类可以引用外部类的 ...