servlet提供的service方法实现了GenericServlet的service方法,在HttpServlet 对象的doMethod( Get, Delete, Options, Post, Put, or Trace) 方法中,或者在其他实现了Servlet接口的类的方法中。术语service method用来描述Servlet类中的任何能提供给客户端调用的方法的。
通常,service方法用来从请求中读取信息,访问外部资源,然后基于这些信息填充相应数据。对HTTP Servlet来说,正确的填充相应的步骤如下:
响应头必须在响应提交之前设置,web容器将忽略响应提交之后设置响应头或添加响应头的操作。下两节描述如何从请求中获取信息和生成响应。
请求携带数据从客户端传到服务端。所有请求都实现了ServletRequest接口。这个接口定义的方法可以访问下面的信息:
当然你也可以直接获取输入流,并手工解析数据。读取这些数据,最好使用BufferedReader对象获取请求的getReader方法。读取字节流数据,需要使用getInputStream方法返回的ServletInputStream对象。
Http servlet传递一个Http请求对象,HttpServletRequest,它包含请求URL、Http头信息、查询字符串等等。Http URL包含下列信息:
http://[host]:[port][request-path]?[query-string]
请求路径还包括一下元素:
你可以使用HttpServletRequest接口的getContextPath, getServletPath, and getPathInfo方法访问这些信息。除url编码与请求路径有区别外,请求路径总是等于上下文路径+servlet路径+path路径。
查询字符串由一组参数和值组成。单个参数可以通过请求的getParameter方法获取。有下面两种方式生成查询字符串:
响应包含从服务端传到客户端的数据。所有的响应都实现了ServletResponse接口。这个接口定义的方法支持做下面的工作:
Http响应对象, javax.servlet.http.HttpServletResponse,有表示Http头的属性,如下: