
HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。
在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:
HttpResponse response = null
HttpGet get = new HttpGet(url)
get.addHeader("Accept", "text/html")
get.addHeader("Accept-Charset", "utf-8")
get.addHeader("Accept-Encoding", "gzip")
get.addHeader("Accept-Language", "en-US,en")
get.addHeader("User-Agent", "Mozilla/5.0 (X11Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22")
response = client.execute(get)
HttpEntity entity = response.getEntity()
Header header = entity.getContentEncoding()
if (header != null)
{
HeaderElement[] codecs = header.getElements()
for (int i = 0i <codecs.lengthi++)
{
if (codecs[i].getName().equalsIgnoreCase("gzip"))
{
response.setEntity(new GzipDecompressingEntity(entity))
}
}
}
return response
其中,client为一个HttpClient的实力,创建方式如:
SchemeRegistry schemeRegistry = new SchemeRegistry()
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()))
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()))
PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry)
cm.setMaxTotal(200)
cm.setDefaultMaxPerRoute(2)
HttpHost googleResearch = new HttpHost("research.google.com", 80)
HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80)
cm.setMaxPerRoute(new HttpRoute(googleResearch), 30)
cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50)
DefaultHttpClient client = new DefaultHttpClient(cm)
步骤如下:1、在web工程里面创建一个Servlet类,继承HttpServlet,重写doPost,doGet方法,在doPost方法中调用doGet方法;
2、在doGet方法中把要设置到jsp页面的值存到request中;
3、在doGet方法中添加转发到jsp页面的代码;
4、在jsp页面中使用jstl标签获取存入的值。
事例代码如下:
Servlet类:
public class DemoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("name", "nameValue")
request.getRequestDispatcher("/demo.jsp").forward(request, response)
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response)
}
}
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Demo</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
${name }
</body>
</html>
其中,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>表示导入jstl标签库,没导入的话无法使用jstl标签,使用jstl标签可以减少很多代码量,导入jstl标签后就可以通过使用${}的方法来获取值了。
本文中演示如何通过URLConnection获取Http响应Header信息
从响应中获得Header信息
URL obj = new URL
URLConnection conn = obj openConnection()
Map<String List<String》 map = conn getHeaderFields()
从响应Header中获取Server信息
Map<String List<String》 map = conn getHeaderFields()
List<String>server = map get( Server )
完整的示例
package qiyadeng
import URL
import URLConnection
import java util List
import java util Map
public class GetHttpResponseHeader {
public static void main(String[] args) {
try {
URL obj = new URL
URLConnection conn = obj openConnection()
Map<String List<String》 map = conn getHeaderFields()
System out println( 显示响应Header信息\n )
for (Map Entry<String List<String》 entry : map entrySet()) {
System out println( Key : + entry getKey() +
Value : + entry getValue())
}
System out println( \n使用key获得响应Header信息 \n )
List<String>server = map get( Server )
if (server == null) {
System out println( Key Server is not found! )
} else {
for (String values : server) {
System out println(values)
}
}
} catch (Exception e) {
e printStackTrace()
}
}
}
输出
显示响应Header信息…
Key : null Value : [HTTP/ OK]
Key : X Pingback Value :
Key : Date Value : [Sun Mar : : GMT]
Key : Transfer Encoding Value : [chunked]
Key : Connection Value : [close]
Key : Content Type Value : [text/charset=UTF ]
Key : Server Value : [Apache/ (CentOS)]
Key : X Powered By Value : [PHP/ ]
lishixinzhi/Article/program/Java/hx/201311/25662
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)