java web编程学习2

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

HttpServlet的方法以下mvc

image

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

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里。.net

接下来讲说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进行展现。code

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

image

其中我如今用的最多的就是getWriter方法,这个方法就至关于控制台里的System.out,其余的还有setContentType,setCharacterEncoding,addCookie等方法。继承

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

相关文章
相关标签/搜索