大家好,又见面了,我是你们的朋友全栈君。
JSP引擎的内置request对象获取客户提交信息:
1.request.getProtocol(); 获取客户向服务器提交信息所使用的通信协议,比如:http/1.1
2.request.getServletPath();获取客户请求的JSP页面文件的目录。
3.request.getContentLength();获取客户提交的整个信息的长度。
4.request.getMethod(); 获取客提交信息的方式,如:post 或get。
5.request.getHeader(String s);获取HTTP头文件中由参数s指定的头名字的值,
一般来说s参数可取的头名有:accept、referer、accept-language、content-type、accept-encoding、user-agent、host、content-length、connection、cookie等。
6.request.getHeaderNames();获取头名字的一个枚举。
7.request.getHeaders(String s);获取头文件中指定头名字的全部值的一个枚举。
8.request.getRemoteAddr();获取客户的IP地址。
9.request.getRemoteHost();获取客户机的名字,如果获取不到,就获取IP。
10.request.getServerName();获取服务器的名字。
11.request.getServerPort();获取服务器的端口。
12.request.getParameterNames();获取客户提交的信息体部分中name参数的一个枚举。
13.request.getServletContext();
14.request.getRemotePort();
15.request.getRemoteUser();
response对象:
当客户访问一个服务器的页面时,会提交一个HTTP请求,服务器收到请求时,返回HTTP响应。
我们可以通过response对象对客请求做出动态响应,向客户端发送数据。
HttpServletResponse类
response 对象是 javax.servlet.http.HttpServletResponse 类的一个实例。就像服务器会创建request对象一样,它也会创建一个客户端响应。
response对象定义了处理创建HTTP信息头的接口。通过使用这个对象,开发者们可以添加新的cookie或时间戳,还有HTTP状态码等等。
下表列出了用来设置HTTP响应头的方法,这些方法由HttpServletResponse 类提供:
S.N. | 方法 & 描述 |
---|---|
1 | String encodeRedirectURL(String url) 对sendRedirect()方法使用的URL进行编码 |
2 | String encodeURL(String url) 将URL编码,回传包含Session ID的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) 添加指定名称的响应头和int值 |
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 servlets中响应的内容的长度,此方法用来设置 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) 设置响应的状态码 |
动态响应contentType属性:
如果一个客户请求访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性值为text/html,那么JSP引擎将按这种属性作出响应,将页面静态部分返回给客户。由于page指令只能为contentType指定一个值,来决定响应的MIME类型,通过response.setContentType(String s);方法可以动态改变contentType的值,响应的MIME类型
s参数的值有:text/html、text/plain、application/x-msexcel、application/msword等。
response.setContentType(“application/msword;charset=GB2312”);
response.setContentType(“application/x-msexcel;charset=utf-8”);
response.setHeader(“Refresh”, “5”);
response.sendRedirect(“Demo2_6.jsp”);
response.setStatus(200); //设置返回值
状态行包含HTTP版本,一个状态码,和状态码相对应的短消息。
下表列出了可能会从服务器返回的HTTP状态码和与之关联的消息:
状态码 | 消息 | 描述 |
---|---|---|
100 | Continue | 只有一部分请求被服务器接收,但只要没被服务器拒绝,客户端就会延续这个请求 |
101 | Switching Protocols | 服务器交换机协议 |
200 | OK | 请求被确认 |
201 | Created | 请求时完整的,新的资源被创建 |
202 | Accepted | 请求被接受,但未处理完 |
203 | Non-authoritative Information | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | 一个超链接表,用户可以选择一个超链接并访问,最大支持5个超链接 |
301 | Moved Permanently | 被请求的页面已经移动到了新的URL下 |
302 | Found | 被请求的页面暂时性地移动到了新的URL下 |
303 | See Other | 被请求的页面可以在一个不同的URL下找到 |
304 | Not Modified | |
305 | Use Proxy | |
306 | Unused | 已经不再使用此状态码,但状态码被保留 |
307 | Temporary Redirect | 被请求的页面暂时性地移动到了新的URL下 |
400 | Bad Request | 服务器无法识别请求 |
401 | Unauthorized | 被请求的页面需要用户名和密码 |
402 | Payment Required | 目前还不能使用此状态码 |
403 | Forbidden | 禁止访问所请求的页面 |
404 | Not Found | 服务器无法找到所请求的页面 |
405 | Method Not Allowed | 请求中所指定的方法不被允许 |
406 | Not Acceptable | 服务器只能创建一个客户端无法接受的响应 |
407 | Proxy Authentication Required | 在请求被服务前必须认证一个代理服务器 |
408 | Request Timeout | 请求时间超过了服务器所能等待的时间,连接被断开 |
409 | Conflict | 请求有矛盾的地方 |
410 | Gone | 被请求的页面不再可用 |
411 | Length Required | “Content-Length”没有被定义,服务器拒绝接受请求 |
412 | Precondition Failed | 请求的前提条件被服务器评估为false |
413 | Request Entity Too Large | 因为请求的实体太大,服务器拒绝接受请求 |
414 | Request-url Too Long | 服务器拒绝接受请求,因为URL太长。多出现在把”POST”请求转换为”GET”请求时所附带的大量查询信息 |
415 | Unsupported Media Type | 服务器拒绝接受请求,因为媒体类型不被支持 |
417 | Expectation Failed | |
500 | Internal Server Error | 请求不完整,服务器遇见了出乎意料的状况 |
501 | Not Implemented | 请求不完整,服务器不提供所需要的功能 |
502 | Bad Gateway | 请求不完整,服务器从上游服务器接受了一个无效的响应 |
503 | Service Unavailable | 请求不完整,服务器暂时重启或关闭 |
504 | Gateway Timeout | 网关超时 |
505 | HTTP Version Not Supported | 服务器不支持所指定的HTTP版本 |
设置HTTP状态码的方法
下表列出了HttpServletResponse 类中用来设置状态码的方法:
S.N. | 方法 & 描述 |
---|---|
1 | public void setStatus ( int statusCode ) 此方法可以设置任意的状态码。如果您的响应包含一个特殊的状态码和一个文档,请确保在用PrintWriter返回任何内容前调用setStatus方法 |
2 | public void sendRedirect(String url) 此方法产生302响应,同时产生一个 Location 头告诉URL 一个新的文档 |
3 | public void sendError(int code, String message) 此方法将一个状态码(通常为 404)和一个短消息,自动插入HTML文档中并发回给客户端 |
demod.jsp
代码语言:javascript复制<%@ 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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>请选择您想查看文本的模式:
<form action="tree3.jsp" method="post" name=form>
<input type="submit" value="word" name="submit_w">
<input type="submit" value="excel" name="submit_e">
</form>
</body>
</html>
tree3.jsp
代码语言:javascript复制<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.util.*"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String strWord = request.getParameter("submit_w");
String strExcel = request.getParameter("submit_e");
if ( null == strWord)
strWord = "";
if (null == strExcel)
strExcel = "";
if(strWord.startsWith("word"))
{
response.setContentType("application/msword;charset=GB2312");
out.println(strWord);
}
if(strExcel.startsWith("excel"))
{
response.setContentType("application/x-msexcel;charset=utf-8");
out.println(strExcel);
}
out.println("" new Date());
response.setHeader("Refresh", "5");
response.setStatus(200);
%>
<br>
<jsp:include page="Data.txt"/>
</body>
</html>
Data.txt 注意回车要用<BR> 66 55 77 88 99<br> 26 25 27 28 29<br> 66 55 67 58 39<br> 86 45 77 48 49<br> 96 35 57 38 59<br> 26 25 87 28 69<br> 16 15 97 18 79<br>
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161625.html原文链接:https://javaforall.cn