本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.Servlet介绍:是一个java类,但是部署在servlet容器(如 tomcat)中
1)Java Servlet是和平台无关的服务器端组件,它运 行在Servlet容器中。Servlet容器负责Servlet和 客户的通信以及调用Servlet的方法,Servlet和客 户的通信采用“请求/响应”的模式。
2)Servlet可完成如下功能:
> 创建并返回基于客户请求的动态HTML页面
> 创建可嵌入到现有HTML 页面中的部分HTML 页面(HTML 片段)
> 与其它服务器资源(如数据库或基于Java的应用程序)进行通信
3)servlet容器响应客户端请求的过程(容器可以创建,销毁一个servlet,掌控servlet的声明周期)
过程分析:
① Servlet引擎检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步;
② 装载并创建该Servlet的一个实例对象:调用该 Servlet 的构造器;
③ 调用Servlet实例对象的init()方法;
④ 创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去;
⑤ WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法
4)Servlet的API
5)创建servlet实例hello
①helloServlet代码:继承Servlet, 重写方法
1 package com.jason.javaweb; 2 3 import java.io.IOException; 4 5 import javax.servlet.Servlet; 6 import javax.servlet.ServletConfig; 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletRequest; 9 import javax.servlet.ServletResponse; 10 11 public class helloServlet implements Servlet { 12 13 @Override 14 public void destroy() { 15 System.out.println("destroy ..."); 16 } 17 18 @Override 19 public ServletConfig getServletConfig() { 20 System.out.println("getServletConfig"); 21 return null; 22 } 23 24 @Override 25 public String getServletInfo() { 26 System.out.println("getServletInfo"); 27 return null; 28 } 29 30 @Override 31 public void init(ServletConfig arg0) throws ServletException { 32 System.out.println("init"); 33 34 } 35 36 @Override 37 public void service(ServletRequest arg0, ServletResponse arg1) 38 throws ServletException, IOException { 39 System.out.println("service"); 40 } 41 42 public helloServlet() { 43 System.out.println("HelloServlet constructor "); 44 } 45 46 }
②配置/javaWEB/WebContent/WEB-INF/web.xml 实现通过浏览器去访问一个Servlet的java类
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 5 id="WebApp_ID" version="3.0"> 6 7 <!-- 配置servlet 和 映射 servlet --> 8 <servlet> 9 <!-- Servlet 的注册名 --> 10 <servlet-name>helloServlet</servlet-name> 11 <!-- Servlet 的全类名 --> 12 <servlet-class>com.jason.javaweb.helloServlet</servlet-class> 13 </servlet> 14 15 <servlet-mapping> 16 <!-- 需要和某一个Servlet 节点的servlet-name 子节点的文本节点一直 --> 17 <servlet-name>helloServlet</servlet-name> 18 <!-- 映射具体的访问路径,其中 / 代表当前的WEB应用的根目录 --> 19 <url-pattern>/hello</url-pattern> 20 </servlet-mapping> 21 22 </web-app>
2.总结
1)本部分要理解关于xml的配置:servlet的注册,映射的配置,实现浏览器访问servlet的java类
2)知道servlet的执行过程:构造器 -> init -> service -> destroy