Java Servlet入门

2019-08-23 00:00:00 java 入门 servlet

静态web页面:html+css+js,页面是静态的、不变的,显示给每个用户的页面都一样。

动态web页面:php、jsp、asp,根据用户、实时数据(数据库)来动态显示页面,不同的用户,显示的页面可能不同。

 

 

Servlet应用的体系结构

《Java Servlet入门》

浏览器发送HTTP请求,HTTP服务器(比如Apache)接受并解析HTTP请求,对静态资源的请求由HTTP服务器负责处理,对Servlet的请求由HTTP服务器转交给Servlet容器处理。

Servlet容器(比如Tomcat)根据映射关系,调用相应的Servlet来处理请求,Servlet处理完毕将结果返回给Servlet容器,Servlet容器将结果转交给HTTP服务器,HTTP服务器以HTTP响应的形式将结果返回给浏览器。

 

 

 

 

常用的web服务器

  • WebLogic
  • WebSphere
  • JBoss
  • Tomcat    开源免费,短小精悍,适合中小型项目、访问量不大的项目。如果项目并发很高,Tomcat可能承载不起,需要使用上面专业的、商用的服务器。

 

 

 

Servlet的特点

  • 跨平台。Servlet是JavaEE的一种技术,Java是跨平台的。
  • 可扩展。Servlet指实现了javax.servlet.Servlet接口的Java类,通过继承可扩展Servlet的功能。

 

 

 

javax.servlet.Servlet接口中的常用方法

  • void init(ServletConfig  config)     //初始化Servlet
  • ServletConfig  getServletConfig()  
  • void  service(ServletRequest request, ServletResponse  response)    //处理servlet请求,servlet请求封装在request中,servlet响应封装在response中返回
  • void destroy()    //销毁Servlet时做的处理

init()、service()、destroy()三个方法表现了Servlet的声明周期。

 

 

 

Servlet的生命周期

《Java Servlet入门》

1、初始化阶段

Servlet容器解析Servlet请求,根据映射关系确定要调用的Servlet,检查内存中是否已存在该Servlet实例。

若已存在,则直接使用该Servlet实例。

若不存在,先创建该Servlet的实例,再调用init()初始化该Servlet实例。

 

2、运行阶段

Servlet容器为每个Servlet请求创建ServletRequest对象、ServletResponse对象,将Servlet请求封装在ServletRequest对象中,把ServletRequest、ServletResponse对象作为参数传递给service()。

service()处理servlet请求,将响应封装在ServletResponse对象中,传回给HTTP服务器。

 

3、销毁阶段

当Servlet容器(比如Tomcat)关闭,或web应用被移出Servlet容器时,Servlet会随着web应用的销毁而销毁。

在销毁Servlet之前,Servlet容器会调用Servlet实例的destroy()方法。

 

Servlet实例一旦创建,就会常驻内存,直到服务器被关闭,或web应用被移出Servlet容器,Servlet才会被销毁。

在Servlet生命周期中,init()、destroy()均只调用一次,service()会调用多次。

每次处理Servlet请求,都会创建新的ServletRequest对象、ServletResponse对象,调用一次service()方法。

 

 

 

 

Servlet的实现

javax.servlet.Servlet接口有2个默认的实现类:

  • GenericServlet      这是一个抽象类,未实现许多方法,主要是未实现service()。一般不用这个。

  • HttpServlet   已实现所有方法,我们根据需要重写doGet()、doPost()即可。推荐。

doGet()、doPost的权限都是protected,因为它们只在service()中被调用,Servlet容器调用service()来处理Servlet请求,而非直接调用doGet()、doPost()。

 

 1 public class TestServlet extends HttpServlet {
 2     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 3         doGet(request, response);
 4     }
 5 
 6     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 7         PrintWriter writer = response.getWriter();  //获取响应输出流
 8         writer.write("ok");  //输出
 9     }
10 }

 

    原文作者:chenhongyong
    原文地址: https://www.cnblogs.com/chy18883701161/p/11396560.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章