使用Servlet处理请求<http://blog.sina.com.cn/s/blog_5d3fb3cc0100ep9q.html>

一、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()方法实现转发。前者意味着把请求和响应派发给别的资源后就不会再去做任何处理,而后者在派发后并不是完全移交,只是暂时把控制权交给别人。

原文地址:https://www.cnblogs.com/lowerCaseK/p/Servlet_deal_request.html