更新时间:2020-03-06 10:37:10 来源:极悦 浏览1951次
Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。使用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实现方式”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习