一、GET和POST的区别
1.GET提交的是文本内容,规定其数据长度不超过255个字符。在GET方式提交的URL中会显示出提交的查询数据而却提交数据的缓存会在浏览器的URL历史状态中,这样我们往往在浏览网页的时候点击后退键不需要重新发送请求。
2.POST提交的可以使文本内容,也可以使二进制内容,所以我们上传文件的时候用的就是POST得方式。POST对于提交数据长度没有限制,我们发送的数据也不会在URL中出现,所以这种方式较为安全。但是网页提交的数据缓存不会在浏览器中存在,所以我们点击后退到此类的网页的时候一般会出现数据过期等提示。
3.提交数据的时候一般只有表单才用POST的形式,其他的都是GET的方式。
二、HTTP请求方法与HttpServlet方法的对应关系
1.容器调用service(ServletRequest ,ServletResponse)方法;
2. service(ServletRequest ,ServletResponse)方法再调用同一个Servlet类中的service(HttpServletRequest ,HttpServletResponse)方法;
3. service(HttpServletRequest ,HttpServletResponse)将分析HTTP请求,找到请求方法类型然后调用相应的处理方法。
4.如果在自定义的Servlet类中覆盖service方法,do×××方法将不会自动调用。
三、HTTP请求行的获取
getMothod():获得请求提交方式
getRequestURI():获取提交的URI
getServletPath():获取Servlet映射路径。
四、HTTP请求头的获得
Enumeration eu = request.getHeaderName();
while(eu.hasMoreElements()){
String name = (String)en.nextElements();
String values = (String)en.getHeader(name);
}
五、HTTP消息体的获取
利用getParameter(String name)可获得提交表单的内容,但该方法只适用于文本文件的获得,不能获取二进制的数据。
六、文件上传
1.设置表单提交数据方式为POST,并设置以二进制提交。
Enctype=”multipart/form-data”
2.request.getInputStream()获得Request输入流
3.解析输入流并创建文件
七、请求转发
利用请求转发可以让每个客户的请求传递给很多Servlet以及web应用程序中的其他资源。重定向和请求转发的最大区别在于,重定向是在客户端完成,需要2次请求,而转发只是在服务端完成,只需要1次请求。
我们可以利用getRequestDispatcher()方法获得RequestDispatcher对象 ,然后利用forward()或者include()方法实现转发。前者意味着把请求和响应派发给别的资源后就不会再去做任何处理,而后者在派发后并不是完全移交,只是暂时把控制权交给别人。