get孵延、post區(qū)別
1吕漂、post有請求體
2、get請求意味著獲取消息尘应,不改變服務(wù)器上的東西
而post請求意味著發(fā)送需要處理的數(shù)據(jù)惶凝,去改變服務(wù)器上的一些東西
3、可以多次發(fā)起get請求犬钢,而不對服務(wù)器有影響苍鲜,是等冪請求;
但post不同玷犹,要避免表單的重復(fù)提交混滔,是非等冪請求
4、post請求需要表單,在<form> 標(biāo)簽中使用method屬性指定http 方法為post坯屿,使用action 屬性指定表單提交的地址油湖;而get除了這種方法之外,還可以直接使用超鏈接的方式领跛。
使用參數(shù)
1乏德、當(dāng)輸入的參數(shù)為1個(gè)值時(shí),使用request.getParameter
例如:
String name = request.getParameter("username");
2隔节、多選框鹅经,輸入多個(gè)值,使用 getParameterValues
String[] hobbies = request.getParameterValues("hobby");
PrintWriter out = response.getWriter();
for(String s:hobbies){
out.println(s.toString());
}
3怎诫、還可以使用getParameterNames方法
Enumeration<String> paras = request.getParameterNames();
PrintWriter out = response.getWriter();
while(paras.hasMoreElements()){
String paraname = paras.nextElement();
out.println(paraname+":"+request.getParameter(paraname));
}
4瘾晃、獲取所有請求的參數(shù)名稱和值,放到一個(gè)map對象中
PrintWriter out = response.getWriter();
Map<String, String[]> mapParas = request.getParameterMap();
for(Map.Entry<String, String[]> entry :mapParas.entrySet()){
out.println(entry.getKey()+":"+entry.getValue()[0]);
}
提示map遍歷:
Map<String, String[]> mapParas = new HashMap<String, String[]>();
mapParas.put("xx",new String[]{"18","a"});
mapParas.put("yy",new String[]{"19","b"});
for(Map.Entry<String, String[]> entry :mapParas.entrySet()){
int len = entry.getValue().length;
System.out.print(entry.getKey()+":");
for(int i=0;i<len;i++)
System.out.print(entry.getValue()[i]+" ");
System.out.println();
}
請求頭和響應(yīng)頭
請求頭常用方法:
String browser = request.getHeader("User-Agent");
int size = request.getIntHeader("Content-Length");
int size2 = request.getContentLength();
Enumeration<String> eHeaders = request.getHeaderNames();
Enumeration<String> languages = request.getHeaders("Accept-Language");
int remotePort = request.getRemotePort();//客戶端的端口號
int serverPort = request.getServerPort();//請求原來發(fā)送的那個(gè)服務(wù)器端口
int localPort = request.getLocalPort();//最終分配的端口
響應(yīng)頭常用方法
response.setHeader("ContentType", "text/html");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset = utf-8");
response.setDateHeader("Expires", 0);//阻止瀏覽器緩存
response.setIntHeader("Refresh", 5);//設(shè)置刷新幻妓,5秒后自動(dòng)刷新
response.setContentLength(1500);//設(shè)置請求體長度
doGet方法體內(nèi)
response.setCharacterEncoding("utf-8");
response.setHeader("Content-type", "text/html charset = utf-8");
PrintWriter out = response.getWriter();
out.println("<html><body>"
+"其他html"+
"</body></html>");
out.flush();
out.close();
注意:
一般在調(diào)用輸出流對象之前(getWriter()蹦误、getOutputStream()等)之前要先調(diào)用setContentType()方法
完