java web编程学习2

书接上文,接下来细聊下HttpServlet、HttpServletRequest和HttpServletResponse。

HttpServlet的方法如下

java web编程学习2_第1张图片

doXXX系列对应着http的各种方法,除此之外,还有三个自己的方法: getLastModified、service(req,res)、service(req,resp)。getLastModified不用说,返回一个时间戳,表示req上次改变的时间,暂时没用过,不好说。另外两个service方法,先看这个public的这个,介绍上说将客户端请求分发给受保护的service方法。我们不难想象这个函数代码类似如下

void service(ServletRequest req,ServletResponse res)
{
	service((HttpServletRequest)req, (HttpServletResponse)res);
}

至于为什么,我暂时还不清楚,得往下看看。先看看 service(HttpServletRequest, HttpServletResponse),这个方法就很好理解,介绍上说 从public的service方法获得标志的http请求,并将它们分发给doXXX方法。

HttpServlet继承自GenericServlet,而GenericServlet实现了一个叫Servlet的接口,这下才明白,为什么有个公开的service方法。原来这个方法是继承下来的。也就是说当初Servlet并不是只是为了Http准备的,可好像现在真正实现了Servlet也就只有HttpServlet,不知道以后会有什么 xxxServlet。

现在我们知道, Servlet、ServletRequest、ServletRequest是一组,它们都在javax.servlet包里。而HttpServlet、HttpServletRequest、HttpServletResponse是一组,它们都在javax.servlet.http里。

接下来说说HttpServletRequest,这个类应该就是承载了用户满满希冀的一个类了。它的方法主要有:getAttribute、 getAttributeNames、 getParamter、 getParamterMap、 getParamterNames 、getParamterValues、 getReader、 setAttribute、 removeAttribute、 getHeader、 getCookies、 getHeaderNames、 getSession这些方法。

从*Pramter*谈起,这些都是用户通过表单等等方式提交上来的数据,java统统理解为字符串。同时java提供了*Attribute*系列的方法,而且操作的对象竟然是Object,想来也猜到着肯定不是用户提供数据的方法,查阅资料知道了这是使用forward的方法使用的函数。可以想象,我们使用mvc模式,当controller和model交互完处理好了业务逻辑,可以使用setAttribute方法然后forward到view里去,jsp或其他什么模板引擎getAttribute进行展示。

再说说HttpServletResponse,类名就告诉我们这个类是供我们给用户提供响应的,看看它的方法:

java web编程学习2_第2张图片

其中我现在用的最多的就是getWriter方法,这个方法就相当于控制台里的System.out,其他的还有setContentType,setCharacterEncoding,addCookie等方法。

综上,我们可以总结,这三个类的设计、实现都是围绕着http协议,学习过http,这么多方法都有似曾相识的感觉,理论知识就是这些,接下来要做些servlet的实验。

你可能感兴趣的:(java web编程学习2)