专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Javaweb学习视频全集:Servlet实现方式

Javaweb学习视频全集:Servlet实现方式

更新时间:2020-03-06 10:37:10 来源:动力节点 浏览1801次


  Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。使用Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。


Javaweb学习视频全集:Servlet实现方式


  二、实现方式


  1、继承HttpServlet


  API简介


  继承自GenericServlet.遵守HTTP协议实现,以设计模式的角度看,HttpServlet担任抽象模板角色,模板方法:由service()方法担任。基本方法:由doPost()、doGet()等方法担任。service()方法流程,省略了部分判断逻辑。该方法调用七个do方法中的一个或几个,完成对客户端请求的响应。这些do方法需要由HttpServlet的具体子类提供,这种API封装是典型的模板方法模式。


  代码案例


  publicclassServletOneImplextendsHttpServlet{


  @Override


  protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)


  throwsServletException,IOException{


  response.setContentType("text/html;charset=utf-8");


  response.getWriter().print("执行:doGet");


  }


  @Override


  protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)


  throwsServletException,IOException{


  response.setContentType("text/html;charset=utf-8");


  response.getWriter().print("执行:doPost");


  }


  }


  2、继承GenericServlet


  API简介


  Servlet接口和ServletConfig接口的实现类.一个抽象类.其中的service方法为抽象方法。


  代码案例


  publicclassServletTwoImplextendsGenericServlet{


  @Override


  publicvoidservice(ServletRequestservletRequest,ServletResponseservletResponse)


  throwsServletException,IOException{


  HttpServletResponseresponse=(HttpServletResponse)servletResponse;


  response.setContentType("text/html;charset=utf-8");


  response.getWriter().print("执行:service");


  }


  }


  3、实现Servlet接口


  API简介


  Servlet是一个接口,其中包含init、getServletConfig、service、getServletInfo、destroy几个核心方法。


  代码案例


  publicclassServletThreeImplimplementsServlet{


  @Override


  publicvoidinit(ServletConfigservletConfig)throwsServletException{


  servletConfig.getServletName();


  System.out.println("init被调用...");


  }


  @Override


  publicvoidservice(ServletRequestservletRequest,ServletResponseservletResponse)


  throwsServletException,IOException{


  System.out.println("ThreadId:"+Thread.currentThread().getId());


  System.out.println("service被调用...");


  HttpServletResponseresponse=(HttpServletResponse)servletResponse;


  response.getWriter().print("Servlet.Life");


  }


  @Override


  publicvoiddestroy(){


  System.out.println("destroy被调用...");


  }


  @Override


  publicServletConfiggetServletConfig(){


  System.out.println("getServletConfig被调用...");


  returnnull;


  }


  @Override


  publicStringgetServletInfo(){


  System.out.println("getServletInfo被调用...");


  returnnull;


  }


  }


  三、生命周期


  加载和实例化


  当Servlet容器启动或客户端发送请求时,Servlet容器会查找是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例(属于单例设计模式)。load-on-startup可以配置创建时序。


  初始化:init()


  实例化后,Servlet容器将调用init方法一次,初始化当前Servlet。


  服务:service()


  初始化后,Servlet处于响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求调用不同的模板方法。


  销毁:destroy()


  当Servlet容器关闭时,Servlet实例也随时销毁。关闭Tomcat服务时可以通过日志打印看到该方法的执行。


  四、运行配置


  1、web.xml配置


  <servlet>


  <servlet-name>servletOneImpl</servlet-name>


  <servlet-class>com.node01.servlet.impl.ServletOneImpl</servlet-class>


  </servlet>


  <servlet-mapping>


  <servlet-name>servletOneImpl</servlet-name>


  <url-pattern>/servletOneImpl</url-pattern>


  </servlet-mapping>


  <servlet>


  <servlet-name>servletTwoImpl</servlet-name>


  <servlet-class>com.node01.servlet.impl.ServletTwoImpl</servlet-class>


  </servlet>


  <servlet-mapping>


  <servlet-name>servletTwoImpl</servlet-name>


  <url-pattern>/servletTwoImpl</url-pattern>


  </servlet-mapping>


  <servlet>


  <servlet-name>servletThreeImpl</servlet-name>


  <servlet-class>com.node01.servlet.impl.ServletThreeImpl</servlet-class>


  </servlet>


  <servlet-mapping>


  <servlet-name>servletThreeImpl</servlet-name>


  <url-pattern>/servletThreeImpl</url-pattern>


  </servlet-mapping>


  请求:http://localhost:6003/servletOneImpl测试。


  servlet-name:Servlet注册名称。


  servlet-class:Servlet全路径类名。


  serlvet-mapping:同一个Servlet可以被映射到多个URL上。


  url-pattern:Servlet访问的映射路径。


  2、线程池运行


  观察上述第三种Servlet实现方式的日志打印:Thread.currentThread().getId());。


  ThreadId:32


  ThreadId:33


  ThreadId:32


  ThreadId:31


  ThreadId:32


Javaweb学习视频全集:Servlet实现方式


      以上就是动力节点Java培训机构小编介绍的“Javaweb学习视频全集:Servlet实现方式”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>