1. java 怎麼修改servlet的請求頭信息
首先,我們先看一下http的頭信息到底是什麼:
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 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22");
2. HttpPost發送字元串到伺服器,伺服器接收代碼並顯示怎麼寫Java代碼
伺服器端接收客戶端的請求的話,需要在伺服器端的java文件實現HttpServlet這個介面,並且在web.xml里配置一個客戶端的請求攔截。
web.xml里的代碼里添加
<servlet>
<servlet-name>testServlet</servlet-name><!--這個名字可以自己定-->
<servlet-class>com.sun.testServlet</servlet-class><!--這里是你需要接收客戶端請求的那個類以及包名,也就是下面攔截到的url會轉發到的那個類-->
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name><!--和上面的name需要一樣-->
<url-pattern>/*</url-pattern><!--什麼類型的客戶端請求會被攔截,/*就是全攔截了-->
</servlet-mapping>
然後再伺服器端的類文件,要實現 HttpServlet這個介面。並把doGet()方法和doPost()方法重寫。
這兩種方法分別對應的是客戶端的get請求和post請求的處理,你的是post請求的話,就在doPost()方法內,寫你的業務。
然後再用下面兩句話,設置你要返回客戶端的數據。
//這是設置你要返回去的數據。value才是你的數據,key是標簽。
request.setAttribute("key", "value");
//這是設置你要返回去test.jsp這張頁面。
request.getRequestDispatcher("test.jsp").forward(request, response);
不知道你是不是這個意思,你可以再去看看相關servlet方面的知識,
關於客戶端和伺服器端大概也就是有個servlet作為請求的攔截
然後經過相關判斷後,選擇性的傳到伺服器的相應類裡面。
再經過類裡面的業務,把得到需要的數據回傳到指定的頁面上。
3. java怎樣獲取http請求的body
讀取Body使用request.getReader(),但getReader獲取的是,需要把它轉換成字元串,下面是轉換的方法
public class TestController {
@RequestMapping("/a")
protected void doPost(HttpServletRequest request,
HttpServletResponse response, BufferedReader br)
throws ServletException, IOException {
//Header部分
System.out.print(request.getHeaderNames());
Enumeration<?> enum1 = request.getHeaderNames();
while (enum1.hasMoreElements()) {
String key = (String) enum1.nextElement();
String value = request.getHeader(key);
System.out.println(key + "\t" + value);
}
//body部分
String inputLine;
String str = "";
try {
while ((inputLine = br.readLine()) != null) {
str += inputLine;
}
br.close();
} catch (IOException e) {
System.out.println("IOException: " + e);
}
System.out.println("str:" + str);
}