servlet 学习笔记(2)

本文详细介绍了Java Servlet的工作原理和生命周期,包括初始化、处理请求和服务卸载等关键阶段,并阐述了如何通过实现特定方法来控制Servlet的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“

请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来

扩展Web服务器的应用程序。Java Servlet技术为这些应用程序定义了一个特定于HTTP的 servlet类。

javax.servlet和javax.servlet.http包为编写servlet提供了接口和类。所有的servlet都必须实现

Servlet接口,该接口定义了生命周期方法。

在web开发中Java servlet 是基于服务器端开发的,也就是说Java servlet的运行是要靠服务器支持的.

当实现一个通用的服务时,您可以使用或扩展由Java Servlet API提供的GenericServlet类

(javax.servlet包中只有一个GenericServlet类,被HttpServlet继承)。

HttpServlet类提供了一些方

法,诸如doGet和doPost,以用于处理特定于HTTP的服务。

一.其他的都属于javax.servlet.http 声明servlet类JavaServlet

事例:


Servlet 的部署:

二,sevlet的生命周期
 1,加载与初始化。服务器启动时,servlet被客户首次请求,这时服务器加载servlet.Servlet的加载


   这里我们可以手的加载 Class s = Class.forName(“com.sourceStream.MyServlet”);

 2, 服务器创建一个servlet的实例来为请求服务,开启多线程。可以使用一个单实例来完成并行请求

。例外的是,如果一个servlet实现了一个SingleThreadModel接口,服务器会    创 建一个实例池,

从里面选择一个为每一个请求服务。相当于
   Servelt s1 = (Servlet)s.newInstance;

 3,服务器调用Servlet的init(),来处理servlet执行前的处理,如果创建多个实例,那么就为每个

servlet初始化。
   init()方法
   servlet在结束之前只能执行一次init()方法。init方法在浏览器请求servlet或web server启动时

加载运行。
   public void init()throws ServletException{
   }
    public void init(ServletConfig conf)throws ServletException{
      super.init(conf);//init方法带ServletConfig参数时必须有此句代码
      //此处写一些初始化操作。如连接数据库等。
   }
 4,servlet执行(经常使用doPost,doGet方法)
   用service()处理客户请求。经常的用法是:不用service()方法,用doPost,doGet方法来处理请求

。其他的方法还有doTrace(),doOptions().doHead()方法,因Trace,         Options.Head信息已经

在doPost,doGet方法中包括,不必使用,doPut(),doDelete()方法在web app不经常使用.服务器调用

servlet的service()方法,其实我们可以具体使      用doget()或doPost()方法.当并行请求来时,

这里多个service()方法能够同时运行在每个独立线程里面。除非你们实现了SingleThreadModel接口


 5,结束这时如果servlet有受到一个请求。这里的操作就要从调用service()这里运行。如果发现有

servlet要卸载,可能是正在关闭,这时服务器会在servlet的service0线程完     成之后回去调用

servlet的destroy()方法.
    用destroy()方法回收。
    public void destroy(){
    }
    public void destroy(){
       super.dedtroy(conf);
   }

三,HttpSession中还有常用的doPost(),doGet().和service()方法一样,这些方法需要用

HttpServletRequest和HttpServletResponse对象作参数,抛出ServletException和         

IOException异常。
四,HttpServletRequest常用的方法:
      getRealPath,getInputStream,getContentType,getContentLengh...
    得到服务器的根目录
      String path=request.getRealPath(".");
    取得输入流
      DataInputStream din=new DataInputStream(request.getInputStream());  
五,HttpServletResponse对象常用的方法:
      sendRedirect,getWriter,setContentType,getOutputStream.
   设置文件类型     
       private static final String CONTENT_TYPE="text/html;charset=GB2312";
       response.setContentType(CONTENT_TYPE);
   输出html文件头部信息:
       PrintWriter out=response.getWriter();
       out.close();
   httpSession封装了会话的细节,用HttpServletRequest对象的getSession()方法获得会话对象,当

使用getSession(false),不存在会话时返回null.getSession()等价与         getSession(true)会

话何时建立?在浏览器启动时创建。
六,pageEncoding常用的问题和方法:
   response.setContentType("text/html;charset=gb2312");
   在不同的国家和地区往往习惯上使用的编码可能大不相同.例如:中国大陆和一些汉字使用国家,尽管

大家都使用的是汉字再汉字编码问题上却有不同:
   中国使用的是:charset=gb2312;台湾使用的是:charset=gbk;
   主要原因是:Java 虚拟机采用的是Unicode编码,虽然叫与Asiicc功能更强大的Unicode编码对汉字等

国家的编码支持更强大一些,但是对于一些少数的 字符编码支持的并不是很   好常常一乱码出现. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值