- Servlet概述
- 什么是Servlet
- 实现Servlet的方式
- Servlet的生命周期
- ServletConfig类
- ServletConfig的作用
- ServletConfig中的方法
- 在init方法中来获取配置信息
跳转到目录 一、什么是Servlet Servlet(Server applet)服务器的小程序, Servlet是JavaWeb的三大组件之一,它属于动态资源
, 也是JavaEE中的一个规范
。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要进行下面三步,实现动态页面输出
.
- 接收请求数据;
- 处理请求
- 完成响应
- Servlet必须实现
javax.servlet.Servlet
接口
二、实现Servlet的方式 跳转到目录
- 实现Servlet有三种方式:
- 实现
javax.servlet.Servlet
接口 - 继承
javax.servlet.GenericServlet
类 - 继承
javax.servlet.httpServlet
类
- 实现
步骤一:创建一个MyServlet类实现javax.servlet.Servlet接口
public class MyServlet implements Servlet {
/*
* 它是生命周期方法
* 它会在Servlet对象创建之后马上执行,并只执行一次
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init()...");
}
/*
* 它是生命周期方法
* 它会被调用多次,每次处理请求都是在调用这个方法!
* */
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service()...");
}
/*
* 它是生命周期方法
* 它会在Servlet被销毁之前调用,并且它只会被调用一次!
* */
@Override
public void destroy() {
System.out.println("destroy()...");
}
/*
* 可以用来获取Servlet的配置信息
* */
@Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig()...");
return null;
}
/*
* 获取Servlet的信息
* */
@Override
public String getServletInfo() {
System.out.println("getServletInfo()...");
return null;
}
}
步骤二:在web.xml中配置Servlet
- 如何让浏览器访问Servlet, 需要给Servlet指定一个Servlet路径.
- 在web.xml中配置
firstServlet com.sunny.servlet.MyServlet firstServlet /MyServlet
上面配置解释:
在web.xml中配置Servlet的目的其实只有一个,就是把访问路径与一个Servlet绑定到一起,上面配置是把访问路径:“/firstServlet”与“com.sunny.servlet.MyServlet”绑定到一起。
1、<servlet>:指定MyServlet这个Servlet的名称为firstServlet; 2、< servlet-mapping>:指定/MyServlet访问路径所以访问的Servlet名为firstServlet。 3、< servlet>和< servlet-mapping>通过< servlet-name>这个元素关联在一起了!
然后通过IDEA启动Tomcat, 在浏览器中输入
http://localhost:8080/13_Tomcat_war_exploded/MyServlet
就可以看到IDEA控制台调用Servlet中的方法. 三、Servlet的生命周期 跳转到目录
-
void init (ServletConfig servletConfig)初始化方法
1.如果有构造器,会先调用构造方法(优先于init)
2、当Servlet被创建的时候执行init方法,且执行一次
3、默认情况下,第一次被访问时,Servlet被创建
4、可以在web.xml中servlet标签下配置Servlet的创建时间
负数
第一次访问时创建正数
服务器启动时创建5、因为init方法只被执行一次,所以一个Servlet在内存中只存在一个对象,Servlet是单例. 多个用户同时访问时,可能存在线程安全问题。
解决:
尽量不要在Servlet中定义成员变量。 -
void service (ServletRequest servletRequest, ServletResponse servletResponse)方法 每当访问Servlet时,Servlet方法都会被调用一次
-
void destroy()销毁方法 1、Servlet被销毁时执行,服务器关闭时,Servlet被销毁 2、只有服务器正常关闭时,才会执行destory方法 3、destory方法在Servlet被销毁之前执行,一般用于释放资源
-
注意:Servlet类由我们编写,但对象由服务器创建,并且由服务器来调用对应的方法.
跳转到目录 一、ServletConfig的作用
- 首先一个ServletConfig类对应着一段web.xml中配置的Servlet信息;也就是说我们配置的Servlet信息都会被Tomcat解析后,将配置信息的数据保存在ServletConfig类中.
所以一个ServletConfig类只对应一段Servlet信息
.
二、ServletConfig中的方法 跳转到目录
-
String getServletName(): 获取<servlet-name>的内容
-
ServletContext getServletContext():
获取Servlet上下文对象 -
String getInitParameter(String name): 通过名称获取指定初始化参数的值
-
Enumeration getInitParameterNames(): 获取所有初始化参数的名称
首先在web.xml的servlet标签中配置一些初始化参数要使用到:
name ZYGui
三、在init方法中来获取配置信息 跳转到目录
/*
* 获取servlet-name
*/
String servletName = servletConfig.getServletName();
System.out.println(servletName);
/*
* 获取初始化参数的值
*/
String initParameter1 = servletConfig.getInitParameter("name");
System.out.println(initParameter1);
String initParameter2 = servletConfig.getInitParameter("age");
System.out.println(initParameter2);
/*
获取所有初始化参数的名称
*/
Enumeration enumeration = servletConfig.getInitParameterNames();
while (enumeration.hasMoreElements()){
System.out.println(enumeration.nextElement());
}