一个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编码对汉字等
国家的编码支持更强大一些,但是对于一些少数的 字符编码支持的并不是很 好常常一乱码出现.