描述
serlvet有serlvet容器管理,生成动态的内容,serlvet是平台独立的Java类
serlvet容器负责serlvet和用户的通信一级调用servlet的方法,servlet和客户的通信太用“请求/响应”的模式。
功能:
1、接收用户请求的HTTP协议
2、返回一个HTTP的响应协议。让浏览器再去解析
Serlvet接口
servletConfig接口代表当前servlet,封装了当前servlet的配置信息,代表当前servlet ( 局部变量)。
1)、读取当前servlet的配置信息
getServletName() 获取在web.xml文件中配置的名字
getInitParameter(string)
获取当前servlet指定名称的初始化参数的值
getInitParameterNames()
获取当前servlet所有初始化参数的名字组成的枚举
getServletContext()
获取当前web应用的servletContext对象
//初始化
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init。。。。。。");
String servletName = config.getServletName();
System.out.println(servletName);
//getInitParameter(string) 获取当前servlet指定名称的初始化参数的值
String username = config.getInitParameter("username");
System.out.println(username);
//getInitParameterNames() 获取当前servlet所有初始化参数的名字组成的枚举
Enumeration<String> names = config.getInitParameterNames();
while(names.hasMoreElements()){
//获取当前初始化参数name名
String name = names.nextElement();
//获取初始化参数名
String value = config.getInitParameter(name);
System.out.println(name+","+value);
}
// getServletContext() 获取当前web应用的servletContext对象
ServletContext context = config.getServletContext(); //获取当前对象
System.out.println(context.getContextPath()); //获取当前web的根目录
}
2)、获取servletContext对象:代表当前web应用 全局变量
1、servlet就是一个普通的Java类
要实现servlet有三种方法:
实现javax.servlet.Servlet接口
继承avax.servlet.GenericServlet
继承avax.servlet.http.HttpServlet(推荐)
2、在web.xml配置和映射Servlet
配置web.xml
<!-- 配置和映射servlet -->
<!-- 注册一个servlet -->
<servlet>
<!-- 注册名 -->
<servlet-name>hello</servlet-name>
<!-- servlet全类名 -->
<servlet-class>com.gcz.servlet.HelloServlet</servlet-class>
<!-- 指定servlet创建和初始化时机 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置servlet -->
<servlet-mapping>
<!-- 必须和注册名保持一直 -->
<servlet-name>hello</servlet-name>
<!-- 声明访问路径 -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
访问路径:http://localhost:8080/Days11_14/hello
3、servlet容器运行servlet,jsp等组件的运行环境
1)、负责管理servlet声明周期
2)、声明周期方法:由servlet容器负责调用
类中的方法:
构造器:只执行一次,第一次请求servlet时,创建servlet实例,调用该构造器 单例 init
初始化:只被调用一次,在创建好servlet实例后,立即调用,负责初始化servlet
service方法:被调用多次,每一请求都会调用service方法,用于响应请求
destroy注销:之调用了一次,在当前servlet所在的web应用被卸载的时候,用户释放 当前servlet所占用的资源
4:<load-on-startup>:指定servlet创建和初始化时机
如果为负数,在第一次请求servlet时创建和初始化
如果是正数或0在当前web应用加载时创建该实例和初始化
数值越小越先被创建
同一个servlet可以被映射到url中,前提两个注册名一致
<servlet-mapping>
1)、在servlet映射到的URL中也可以使用*通配符,但是只能有两个中固定格式
一种是“*.扩展名”,另一种是一正斜杠(/)开头并以“/*结尾,比如*.do 不可以,
两个不能组合使用
三大域对象
ServletContext
HttpSession
HttpServletRequest
功能:
1)、获取WEB应用程序的初始化参数
2)、获取项目的真实路径
3)、作为域对象,保存多个各户共享的数据