1. 什么是Serlvet?
处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。
Serlvet是由服务器调用的,运行在服务器端。
2. tomcat与servlet
-
Tomcat 是Web应用服务器,是一个Servlet/JSP容器.
3.HTTP协议
- 请求头
- 响应头
4.编写Servlet程序
1)实现Servlet有三种方式:
- 实现 javax.servlet.Servlet 接口;
- 继承 javax.servlet.GenericServlet类;
- 继承 javax.servlet.http.HttpServlet类;
实际开发中,我们通常会选择继承HttpServlet类来完成我们的Servlet
2) 实现Serlvet接口
- 建一个自定义类,实现Serlvet接口
- 5个方法需要重写,有init【初始化】,destroy【销毁】,service【服务】,getServletConfig【Servlet配置】,getServletInfo【Serlvet信息】
- service()方法:写逻辑代码
public class myClass implements Servlet{
ServletConfig config=null;
@Override
public void init(ServletConfig config){
this.config=config;
System.out.println("Initialization complete");
}
@Override
public void service(ServletRequest req,ServletResponse res)
throws IOException,ServletException{
res.setContentType("text/html");
PrintWriter pwriter=res.getWriter();
pwriter.print("<html>");
pwriter.print("<body>");
pwriter.print("<h1>Servlet Example Program</h1>");
pwriter.print("</body>");
pwriter.print("</html>");
//调用ServletResponse对象的方法向浏览器输出HelloWorld
res.getWriter().write("Hello World");
}
@Override
public void destroy(){
System.out.println("servlet life cycle finished");
}
@Override
public ServletConfig getServletConfig(){
return config;
}
@Override
public String getServletInfo(){
return "A Demo program written by Chaitanya";
}
}
3)HttpServlet 类
HttpServlet类已经实现了Servlet接口的所有方法,编写Servlet时,只需要继承HttpServlet,重写你需要的方法即可,并且它提供了对HTTP请求的特殊支持,更加强大
service()方法
在 HttpServlet 的 service(ServletRequest,ServletResponse)方法中会把 ServletRequest 和ServletResponse 强转成 HttpServletRequest 和 HttpServletResponse
doGet() 和 doPost()
在HttpServlet的service(HttpServletRequest,HttpServletResponse) 方法会去判断这个请求是GET还是POST,如果是GET请求,就去调用类中的doGet()方法,如果是POST请求,就去调用doPost()方法,这说明我们在子类中去覆盖doGet()或doPost()方法就可以了
5.Servlet的生命周期
- 加载Servlet。当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例
- 初始化。当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象
- 处理服务。当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求
- 销毁。当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源。一个Servlet如果长时间不被使用的话,也会被Tomcat自动销毁
- 卸载。当Servlet调用完destroy()方法后,等待垃圾回收。如果有需要再次使用这个Servlet,会重新调用init()方法进行初始化操作。
简单总结:只要访问Servlet,service()就会被调用。init()只有第一次访问Servlet的时候才会被调用。
destroy()只有在Tomcat关闭的时候才会被调用。
Servlet知识点
网友评论