学习Servlet的感受

 

在北大青鸟一年多了,现在servlet已经学习完了,我现在谈谈我学习Servlet的一些感受。说实在的Servlet就是JSP的基础。有很多地方都类似与JSP,但是他属于MVC的控制器,当我们接受到客户端发来的请求时,通过相应的Servlet来控制相应的对与错,从而实现页面的跳转。下面我给大家介绍一下几点能很好的运用Servlet

1.先给大家讲讲Servlet的生命周期。Servlet的生命周期是由部署Servlet的容器来控制的。Servlet就像插件一样,是被web服务器调用的,你只管把你的代码在Servlet中写好。servlet引擎自动会来调用。当客户端发送一个请求时,Servlet容器会查找内存中是否存在Servlet实例,如果不存在,就创建一个Servlet实例。如果存在Servlet实例,就直接从内存中取出实例来响应请求。

1  Servlet容器加载好Servlet后,进行初始化初始化Servlet时,可以设置连接参数,建立JDBC连接,或者对其他资源的引用。这个阶段,调用init()方法init(ServletConfig config)方法,注意,这里执行的是带参数的init方法,因为这个init方法里的代码里对ServletConfig这对象进行了初始化,而通过ServletConfig对象的getServletContext()方法又可以得到ServletContext对象。那么,也就是只要建立好一个servlet实例后,关于这个servlet的配置信息ServletConfig类对象和servlet所处的上下文环境(一个web应用程序)ServletContext对象都可以得到了,得到这些对象后,你想怎么操作就怎么操作了。

2初始化以后,就处于响应请求的就绪状态。当客户端有一个请求时,Servlet容器将Servlet Request  (请求对象代表) Servlet Response (响应对象代表)对象都转发给Servlet,并且以参数的形式传给service()方法,在service()方法内对客户端的请求进行判断,如果是GET方法提交,则调用doGet()方法处理请求。如果是POST方法提交,则调用doPost()方法处理请求。

3)最后在调用service方法后,当servlet不再有用时,要销毁这个对象了,销毁也是由Servlet容器完成的,那么调用Servlet接口里的destroy()进行资源的释放和清扫。其实对servlet的运行过程,一句话:servelt引擎只根据servlet接口定义的方法来进行调用init()---->service()――――>destroy()。当然根据多态的特性,它会调用你创建servlet的类的对象里的相应的方法的。

2servlet引擎再调用一个相应的servlet对象的service()方法时,会同时创建两个对象,一个是HttpServletResponse,一个是HttpServletRequest。前者先创建一个内容是空的输出信息,后者把请求的信息包装起来对象。我们可以从HttpServletRequest取出我们想要的信息,之后可以向HttpServletResponse输出我们想输出的内容。这里就要提到过滤器了。过滤器的作用也就是说在把这个两个对象传给一个servletservice()方法之前,先对对象进行处理。比如,我们可以根据request对象,进行阻止不要让它请求到想请求的资源,而进行重定向。对输出内容呢?我们传给servletresponse对象是个更换过response对象,也就是说让servlet在输出的时候不是直接输出到客户端,我是输出到我们更换过的response对象里,比如让它输出到一个CharArrayWiter字符数组里。再从这个字符数组里取出servlet输出的内容,我们进行我们想要的更改后,再发送到

客户端。再了解了这些细节后你会发现写过滤器原来这么easy!你也许会问,怎么知道要访问那些servlet的时候会执行哪些过滤器呢?这个可以在web.xml里进行的配置的。

3、对于servletjsp或者数据库中的中文乱码问题:

其实抓住一点就ok:在这个程序处理过程中,最开始(起点)字符是采用什么编码集(当然它有一个对应的编码值),程序最后处理(终点)字符是采用什么编码集(当然它此时也有一个对应的编码值)。

这就是我给大家介绍我学习的Servlet的一些感受,希望大家能有所收获。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值