servlet01 项目demo、servlet生命周期
1 环境说明
jdk: 1.8
tomcat: 8.0
2 项目demo
2.1 新建一个动态的web项目
    
  
2.2 新建一个servlet类
该类必须继承 HttpServlet
技巧01:HttpServlet 继承自 Servlet
技巧02:@WebServlet("/ServletDemo01") 的作用是设置访问路径,当然也可以在web.xml文件中进行设置;web.xml中的设置方式如下(本实例利用的是前者)
<servlet>
<!-- 当前servlet的名称 -->
<servlet-name>HelloServlet</servlet-name>
<!-- servlet所在的包名跟类名 -->
<servlet-class>servlet_demo.controller.ServletDemo01</servlet-class>
</servlet>
<servlet-mapping>
<!-- 必须于上一个servlet标签中的名称保持一致 -->
<servlet-name>HelloServlet</servlet-name>
<!-- 这是你在浏览器上访问的地址,必须要提 /servlet/xxxx 格式,不然tomcat启动会报错-->
<url-pattern>/servlet/helloWorld</url-pattern>
</servlet-mapping>
package servlet_demo.controller; import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDemo01
*/
@WebServlet("/ServletDemo01")
public class ServletDemo01 extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public ServletDemo01() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = resp.getWriter();
out.println("hello world,servlet");
out.close();
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} }
2.3 将项目添加到Tomcat中
前提:在eclipse中设置了Tomcat 参考文档:点击前往
        
2.4 启动Tomcat
    
2.5 浏览器访问
http://127.0.0.1:8080/servlet_demo/ServletDemo01
    
2.6 参考博文
servlet工作原理:点击前往
2.7 baseDemo
3 Servlet生命周期
Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
技巧01:在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
技巧02:当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的service方法,因此service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。
3.1 init()
技巧01:init() 默认是在第一次调用 Servlet 时被执行,也可以指定在容器启动时被执行
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
3.2 service()
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
3.3 destroy()
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
servlet01 项目demo、servlet生命周期的更多相关文章
- JaveWeb学习之Servlet(一):Servlet生命周期和加载机制
		
原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-22/19.html 作者:夜月归途 出处:http://www.guitu ...
 - Web---演示servlet技术(servlet生命周期),解决中文乱码问题
		
本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...
 - 回顾servlet生命周期(代码测试),读取初始化参数
		
servlet生命周期 为简洁,本例使用注解方式来测试,代码部分很简单,只需要新建一个serlet,继承自HttpServlet,重写init,doGet,doPost,destory方法即可,使用注 ...
 - 【Servlet】(1)Servlet简介、Servlet底层原理、Servlet实现方式、Servlet生命周期
		
一.Servlet简介 1.Servlet定义: Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交 ...
 - Servlet生命周期与线程安全
		
上一篇介绍了Servlet初始化,以及如何处理HTTP请求,实际上在这两个过程中,都伴随着Servlet的生命周期,都是Servlet生命周期的一部分.同时,由于Tomcat容器默认是采用单实例多线程 ...
 - Servlet生命周期  Servlet获取配置信息   ServletContext
		
一.Servlet生命周期 实例化 ——> 初始化 ——> 服务 ——> 销毁 出生:(实例化 然后 初始化)tomcat第一次访问,Servlet就出生(默认情况下) 活着:( ...
 - Servlet 生命周期与web容器的关系
		
servlet生命周期由web容器(如tomcat)管理,初始化一次,直到web容器关闭才会被销毁.1.servlet是单例多线程,每个请求过来容器都会启用一个新线程 2.servlet在容器中保持单 ...
 - 测试Servlet生命周期学习笔记
		
测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...
 - Servlet生命周期及工作原理
		
1 Servlet生命周期Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方 ...
 
随机推荐
- (效果五)js获取客户端ip地址及浏览器信息
			
在前端开发的时候,有时候为了测试需要得到访问客户的ip地址.虽说是后端来做的,但是我们前端也可以完成. 先说下获取用户ip地址,包括像ipv4,ipv6,掩码等内容,但是大部分都要根据浏览器的支持情况 ...
 - fedora 安装新字体 courier new xxx
			
fedora安装新字体 1.将windows字体拷贝到/usr/share/fonts/truetype下面,文件夹名字可以随便起 cp /media/c/WINDOWS/Fonts/* /usr/s ...
 - 剑指offer-第五章优化时间和空间效率(把数组排列成最小的数)
			
题目:输入一个正整数数组,将所有的数,排列起来,组成一个最小的数.
 - LeetCode Valid Triangle Number
			
原题链接在这里:https://leetcode.com/problems/valid-triangle-number/description/ 题目: Given an array consists ...
 - Android 杂记
			
Android Studio 报错:sdk location should not contain whitespace as this can cause problems with the ndk ...
 - hdu 5730 Shell Necklace——多项式求逆+拆系数FFT
			
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5730 可以用分治FFT.但自己只写了多项式求逆. 和COGS2259几乎很像.设A(x),指数是长度,系数 ...
 - JMeter启动时显示Could not open/create prefs root node Software\JavaSoft\Prefs at root 0X80000002
			
在windows 7上启动jmeter时,提示错误: Java.util.prefs.WindowsPreferences <init> WARNING: Could not open/c ...
 - debian修改主机名
			
hostnamectl set-hostname aaa 或者 vim /etc/hostname 记得更新 /etc/hosts
 - 浅谈FPGA的选型
			
工欲善其事必先利其器,开发FPGA的第一步,当然是选择一片符合设计需求的芯片. 器件特色 选片第一个关注的应该是FPGA器件的专用资源. 例如是否需要高速接口,如果需要的话,需要多少个通道,各个通道需 ...
 - Vue.js:起步
			
ylbtech-Vue.js:起步 1.返回顶部 1. Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现. 语法格式如下: var vm = new Vue({ // 选项 }) ...