1.使用Servlet所需要的环境和开发工具
(1)Java环境
(2)Tomcat
(3)Eclipse新建一个DynamicWeb Project
注意:在新建工程的时候要将 Generate web.xml deployment descriptor 这个选项选中,否则会出现工程中没有web.xml文件的情况
2.DynamicWeb Project的工程目录结构
|--src/ 存放java源文件
|--WebContent/ 存放静态资源(Servlet会发布除了web-inf以外的资源)
|--WEB-INF/
|--lib/ 第三方依赖库文件.jar
|--classes/ 存放容器编译后的.class文件
|--web.xml 配置文件,包括url映射,默认主页等信息配置
|--images/ 图片资源
|--css/ 样式资源
|--js/ 动态js资源
|--templates jsp、html等资源
3.Jsp+Tomcat+Sevlet容器+JDBC+MySql的整体架构
①获取页面信息:
(1)浏览器访问/index.jsp,发起GET请求,将url传送到服务器端
(2)tomcat接受请求处理index.jsp->index.java->index.class,调用jspService()方法,将jsp中的html通过HTTP协议输出到浏览器,浏览器渲染成我们看到的页面信息
②提交请求动态刷新页面信息:
(1)浏览器通过点击按钮、提交表单等行为向服务器发送POST请求,传送url到服务端
(2)tomcat接受请求,在web.xml文件中通过url映射找到相应的容器类,根据请求类型,寻找到容器中相应的doXXX(request,response)方法,方法体被程序员重写,用JDBC对数据库进行操作,得到数据后,通过getWriter()设置响应体,返回前端,刷新页面信息
4.Servlet的生命周期
(1)Servlet 通过调用 init() 方法进行初始化。
①init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。
②Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。
③当用户调用一个Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init()方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
(2)Servlet 调用 service() 方法来处理客户端的请求。
①service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
②每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
(3)Servlet 通过调用 destroy() 方法终止(结束)。
①destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
②在调用destroy() 方法之后,servlet 对象被标记为垃圾回收。
(4)最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
5.Web容器、Tomcat服务器和Sevlet容器的关系
(1)Web容器与Tomcat服务器
Web容器是用作运行Java web程序的,主要分为两类,一种是独立Web容器,也可以称作Web服务器,只能运行Web程序,Tomcat就是这种服务器。另一种是与其他JavaEE容器混合在一起的容器,Web容器负责运行Web程序,其他容器负责EJB等程序,如WebLogic等
当用户通过浏览器等Web客户端软件向服务器发出一个请求之后,首先接收到这个请求的是Web容器,Web容器会将请求信息封装到一个HttpServletRequest类型的Java对象中,并将对象传递给Java Web程序。对于每个请求,Web容器还会创建一个HttpServletResponse类型对象,该对象的作用是用来保存需要返回到浏览器等客户端的内容。Java Web程序可以从HttpServletRequest提取用户发出的请求信息,进行适当的处理之后,将处理结果放置到HttpServletResponse中,然或由Web容器解析HttpServletResponse对象内容,并将解析结果以浏览器能够识别的HTML等格式返回给浏览器等客户端。在这个过程中,HttpServletRequest和HttpServletResponse就如同两条渡船,负责在Web容器和Java Web程序之间传递信息。需要注意的是,这两个对象仅存在于Web容器和Java Web程序当中,与浏览器没有关系
(2)Tomcat和Servlet之间的关系
Servlet属于一种Web元件,Tomcat是经过包装可以处理Web 程序的Servlet
① 客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。
② Web服务器接收到请求后,传递给Servlet容器。
③ Servlet容器加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。
④ Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。
⑤ Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器。