一般在網站搭建中servlet只需處理post,get請求便足已。本篇注重使用javaweb編寫restful風格api,在servlet中對四種常用請求進行處理。
在api中對於一個請求要做的通常是提取header參數,提取攜帶數據(post,put)。在這里已post為例來說明用法。
下面是發起的post請求,用python(很簡單)寫的,該請求既有自定義header參數Bearer,也有攜帶數據bodys里的內容
import json import requests taken='YWMtoWBEBAFOEeei0SdHniRB6QAAAAAAAAAAAAAAAAAAjwAU4R56atn3HZQyagAgMAAAFanGEFTABPGgAqPOaU00kjW851AIpsKCuT8jAG1PqHyBpY6y5vOgk1zg' headers = {'Accept': 'application/json','Content-Type':'application/json','Authorization':'Bearer '+taken} bodys={'username':'test5','password':'123456'} url='http://localhost:8080/xiaoyanAPI' response=requests.post(url,data=json.dumps(bodys),headers=headers) print response.text
下面是處理post請求代碼
1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 //打印某一個header 3 System.out.println(request.getHeader("Authorization")); 4 System.out.println(); 5 //獲取header參數名,並打印出內容 6 Enumeration<String> s=request.getHeaderNames(); 7 String str; 8 while((str=s.nextElement())!=null) 9 System.out.println(request.getHeader(str)); 10 System.out.println(); 11 //獲取post攜帶數據流 12 String acceptjson; 13 try { 14 BufferedReader br = new BufferedReader(new InputStreamReader( (ServletInputStream) request.getInputStream(), "utf-8")); 15 StringBuffer sb = new StringBuffer(""); 16 String temp; 17 while ((temp = br.readLine()) != null) { 18 sb.append(temp); 19 } 20 br.close(); 21 acceptjson = sb.toString(); 22 System.out.print(acceptjson); 23 } catch (Exception e) { 24 e.printStackTrace(); 25 } 26 }
其他三種請求處理方式類似。