ServletAndJsp学习笔记--5

Servlet存在就是为客户服务。Servlet的任务是得到客户的一个请求,再发回一个响应。

Servlet的生命周期很简单,只有一个主要的状态,初始化。

Servlet     service()   init()  destroy()

GenericServlet  service() init()  destroy()

HttpServet    service() init() destroy()

MyServlet   service() init() destroy()


init():servlet实例创建以后,并在Servlet在为客户服务之前,容器对Servlet调用init(),使你在Servlet在为客户服务之前有机会对其初始化。可能会被覆盖,譬如获得一个数据库的连接等等。


service():第一个客户请求调用到来时,容器会在一个新线程里,或者从一个线程池里分配一个线程,并调用Servlet的的service方法。这个方法查看请求,确定http方法,并在Servlet上调用对应的方法。这个方法基本上不太可能被覆盖。


doget() dopost():客户的个性化代码存在于这里,至少要覆盖其中之一。


每一个请求都在一个单独的线程里运行。


Servlet从不存在状态迁移到初始化状态,首先是从构造函数开始的,但是构造函数只是使其成为一个对象,而不是一个Servlet。想要成为一个Servlet,对象必须具备一些Servlet的特性。这些特性是在init()方法里得到明确的定义的。init()里使用ServletConfig对象来定义这些特性。


ServletConfig:每一个Servlet都有一个自己的ServletConfig,用于向Servelt传递信息,用于访问ServletContext。这个ServletConfig在部署描述文件中配置的(web.xml).

ServletContext: 每一个web应用都有一个自己的ServletContext,用于访问Web应用参数,这些参数也是在部署描述文件中配置的。ServletContext相当于一个应用的公告栏,可以在这里放置消息,应用的其他部分也可以访问这些消息。主要用于得到服务器的信息、包括容器名和容器版本,以及所支持的API的版本等等。


不管怎么样,Servlet存在的主要目的是为客户提供服务,接受和处理请求,然后发出响应。所以请求和响应是一切一切的关键。这也是service()方法的参数,同时也是都Get()和都Post()方法的参数。

HttpServletRequest    ServletRequest

HttpServletResponse  ServletResponse


客户的http请求总是包括一个特定的Http方法。如果这个方法是Get,service()方法就会调用doGet()。如果这个方法是Post,service()方法就是调用doPost()。

幂等即你可以一遍又一遍的做同一件事情,而不会有预料不到的副作用。Get方法只是得到东西,他不会修改服务器上的任何东西。Post方法不是幂等的,Post体中会提交不可扭转的事务。Get是http协议中默认的方法,而Post则不是。


发送和使用参数;

在html文件中用name明明一个元素名,用value或者其它元素对这个元素名来赋值。在request对象中使用getParameter(“元素名”)来获得这个值。

除了获得html文件中的参数值以外,还能从请求中获得如下的信息(主要的)

客户的平台和浏览器信息:String client = request.geHeader("User-agent");

于请求相关的cookie : Cookie  cookie = request.getCookies();

与客户相关的会话:HttpSeesion session = request.getSession();

请求的Http方法: String method = request.getMethod();

请求的输入流:   InputStream input = request.getInputStream(),用于Post方法中表体的数据。这些数据可能会很大。



响应要返回给客户。这是浏览器得到、解析并呈现给客户的东西。一般地,会使用响应对象得到一个输出流(通常是一个Writer),并使用这个流写出HTML。不过,响应对象除了I/O输出以外,还有其他方法。

response.setContextType()

getOutputStream()

getWriter()





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值