1.servlet就是一个普通的java类,要实现servlet有三种方法:
实现javax.servlet.Servlet接口
继承javax.servlet.GenericServlet
继承javax.servlet.http.HttpServlet(推荐)
一般我们用eclipse去创建servlet时,他可以自动帮我们生成一个servlet
2)在web.xml去配置和映射servlet
<!-- 配置servlet和映射servlet -->
<!-- 注册一个servlet -->
<servlet>
<!-- 注册名 -->
<servlet-name>hello</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.hpe.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 映射servlet -->
<servlet-mapping>
<!-- 必须和注册名保持一致 -->
<servlet-name>hello</servlet-name>
<!-- 声明访问路径 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
在浏览器的访问地址就是:http://localhost:8080/Servlet01/hello
2.servlet容器,运行servlet,jsp等组件的运行环境
1)负责管理servlet的声明周期
2)生命周期方法:由servlet容器负责调用
构造器:只被调用一次,第一次请求servlet时,创建servlet实例,调用该构造器。servlet是单实例的
init:只被调用一次,在创建好servlet实例后立即被调用,负责初始化servlet
service:被调用多次,每一次请求都会调用service方法,用于响应请求
destory:只被调用一次,在当前servlet所在的web应用被卸载的时候,用于释放当前servlet所占用的资源
3.load-on-startup:指定servlet创建和初始化的时
1)
<servlet>
<!-- 注册名 -->
<servlet-name>one</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.hpe.servlet.OneServlet</servlet-class>
<!-- 指定servlet创建和初始化的时机 -->
<load-on-startup>2</load-on-startup>
</servlet>
2)load-on-startup:如果为负数。在第一次请求servlet时创建和初始化,如果是正数或0,在当前web应用加载的时候创建和初始化,数值越小,越早创建。
4.servlet-mapping
1)同一个servlet可以被映射到多个url中
2)在servlet映射到的url中也可以使用"星号"通配符,但是只能有两种固定的格式
一种是"星号.扩展名",
另一种是以政斜杠(/)开头并以"/*"结尾.比如:/星号.do不可以,两个不能组合使用
5.ServletConfig:封装了当前servlet的配置信息,它代表当前servlet
1)读取当前servlet的配置信息
getServletName() 获取当前servlet在web.xml配置中的名字
getServletContext() 获取当前web应用的ServletContext对象
getInitParameter(String) 获取当前servlet指定名称的初始化参数的值
getInitParameterNames() 获取当前servlet所有初始化参数的名字组成的枚举
2)获取servletContext对象,servletContext代表当前web应用,全局变量
getContextPath() //获取的是当前web应用的根目录
域对象:可以被共享的对象
三大域对象:
ServletContext web应用
HttpSession 会话
HttpServletRequest 请求
功能:获取当前web应用的初始化参数
获取项目的真实路径
做为域对象,保存多个客户共享的数据
//3.获取当前项目的真实路径
ServletContext cxt=config.getServletContext();//获取当前web对象
System.out.println(cxt.getRealPath("/node.txt")); // 斜杠代表当前web应用