1、Servlet简介及其实现:
servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
- 实现步骤:
- Myeclipse新建一个Web project
- 新建Servlet的文件
- 新建一个类, 实现Servlet接口(这里通常是继承已经实现了相关接口的父类HttpServlet )
- 配置Servlet , 用意: 告诉服务器,我们的应用有哪些servlet。
在WebRoot/WEB-INF/web.xml里面进行配置(这里Myeclipse都已经实现了可视化操作,很方便)
<!-- 向tomcat报告, 我这个应用里面有这个servlet, 名字叫做HelloServlet , 具体的路径是com.itheima.servlet.HelloServlet -->
<servlet>
<servlet-name>%MyServletName</servlet-name>
<servlet-class>ServletPath</servlet-class>
</servlet>
<!-- 注册servlet的映射。 servletName : 找到上面注册的具体servlet, url-pattern: 在地址栏上的path 一定要以/打头 -->
<servlet-mapping>
<servlet-name>%MyServletName</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
在地址栏上输入(就像之前把项目上传到Tomcat上弄的虚拟路径一样):
http://localhost:8080/%ProjectName/a就可以访问这个Servlet了
- Servlet执行过程:
- 找到Tomcat应用
- 找到项目
- 找到【web.xml】,在里面找到【url-pattern】,通过这个找到对应的【servlet-name】,然后找到【servlet-class】
- 创建这个Servlet的实例
- 执行类中的方法(doGet和doPost)
-让servlet创建实例的时机提前:
在配置的时候, 使用load-on-startup元素来指定servlet的init()初始化方法
给定的数字越小,启动的时机就越早。 一般不写负数, 从2开始即可。
<servlet>
<servlet-name>HelloServlet04</servlet-name>
<servlet-class>com.itheima.servlet.HelloServlet04</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
2、ServletContext类:
相关优秀文章:ServletContext对象–三大域对象
Servlet三大域对象的应用 request、session、application(ServletContext)
ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。
request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。(可以用于web应用中各个servlet之间的通信) 所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。
- ServletContext类及其应用(三个):
- 获取全局配置参数(哪个servlet都可以拿)
<context-param>
<param-name> address</param-name>
<param-value>南京</param-value>
</context-param>
myeclipse实现了可视化操作,这里我在【web.xml】设置如下:
然后建个servlet来拿一下:
package cn.nupt;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;