Servlet
一、什么是Servlet?
- Servlet是JavaWeb应用中最核心的组件,是运行在服务中的程序。
- Servlet可以完成以下任务:
2、将请求转发给Servlet组件。
3、读取客户端的Cookie,以及向客户端写入Cookie。
4、访问服务器的资源,如数据库、XML、文件对象。
- Servlet的特点:Servlet对象,有Servlet容器(Tomcat)创建。
- Servlet是一个接口:位于javax.servlet包中。
- Servlet源码:
<span style="white-space:pre"> </span>package javax.servlet;
<span style="white-space:pre"> </span>import java.io.IOException;
<span style="white-space:pre"> </span>public abstract interface Servlet
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>public abstract void init(ServletConfig paramServletConfig)
<span style="white-space:pre"> </span> throws ServletException;
<span style="white-space:pre"> </span>public abstract ServletConfig getServletConfig();
<span style="white-space:pre"> </span>public abstract void service(ServletRequest paramServletRequest, ServletResponse paramServletResponse)
<span style="white-space:pre"> </span> throws ServletException, IOException;
<span style="white-space:pre"> </span>public abstract String getServletInfo();
<span style="white-space:pre"> </span>public abstract void destroy();
<span style="white-space:pre"> </span>}
二、怎么使用Servlet?
step1实现Servlet接口:
<span style="white-space:pre"> </span>//service方法用于接收用户的请求并返回响应
<span style="white-space:pre"> </span>//2、用户访问时多次被执行
<span style="white-space:pre"> </span>public void service(ServletRequest req, ServletResponse rep)
throws ServletException, IOException {
<span style="white-space:pre"> </span>//通过outputStream输出信息给用户
<span style="white-space:pre"> </span>PrintWriter out = resp.getWriter();
<span style="white-space:pre"> </span>out.println(“Hello World”);
<span style="white-space:pre"> </span>}
step2配置Servlet:
<span style="font-size:14px;"> <!-- 在web.xml中配置你的Servlet,颜色相同为对应关系 -->
<span style="white-space:pre"> </span><servlet>
<span style="white-space:pre"> </span><servlet-name>one</servlet-name>
<span style="white-space:pre"> </span><servlet-class>cn.hncu.OneServlet</servlet-class>
<span style="white-space:pre"> </span> </servlet>
<!-- 配置你的Servlet的影射目录 -->
<span style="white-space:pre"> </span> <servlet-mapping>
<span style="white-space:pre"> </span><servlet-name>one</servlet-name>
<span style="white-space:pre"> </span><url-pattern>/one</url-pattern>
<span style="white-space:pre"> </span></servlet-mapping>
</span>
//在浏览器地址栏通过以下方式访问:
http://localhost:8080/项目名/one
三、Servlet的生命周期。
- init方法:
1、只会被初始化一次。由容器初始化,初始化成功后将缓存于容器中。
2、它的初始化时间分为两种:第一种:用户第一次访问时;第二种:服务器启动时。--需配置。
- service方法
1、每次请求都会访问此方法。
2、每次请求都会创建新的Requset和Response对象。
- destory方法
当服务器关闭时有容器调用并销毁。
1、只会被初始化一次。由容器初始化,初始化成功后将缓存于容器中。
2、它的初始化时间分为两种:第一种:用户第一次访问时;第二种:服务器启动时。--需配置。
- destory方法
四、Servlet的其他相关类
- ServletConfig:代表Servlet的初始化配置参数。
- ServletContext:代表整个Web项目。
- ServletRequset:代表用户的请求。
- ServletResponse:代表用户的响应。
- HttpSession:代表用户的一次会话。
ServletConfig:
- 它包含了Servlet的初始化参数。
- 它还与ServletContext对象关联。
- 方法:
2、getInitParameterNames //获取所有配置的名称集合
3、getServletContext //获取ServletContext(代表本项目)对象
- ServletConfig获取初始化参数:
<span style="font-size:14px;"><span style="white-space:pre"> </span><!-- 在Servlet的配置初始化参数 -->
<span style="white-space:pre"> </span> <init-param>
<span style="white-space:pre"> </span><param-name>name</param-name>
<span style="white-space:pre"> </span><param-value>hncu</param-value>
<span style="white-space:pre"> </span> </init-param></span>
servletConfig.getInitParameter(“name”);
//即可以获取name对应的值hncu
ServletContext:
- 每一个Web应用,拥有一个唯一的ServletContext,当应用启动时创建,当应用关闭时销毁。
- ServletContext可用于在同一个Web项目中,共享资源。
- 方法:
getInitParameter,getInitParameterNames
getRequestDispatcher(path)
getRealPath -项目的根式
getResource
getResourceAsStream
setAttribute,getAttribute
ServletContext获取项目信息:
- getContextPath(); //项目名称
- getRealPath("/"); //项目的真实目录
五、Servlet实现类
- Javax.servlet.GenericServlet
2、增加了init()没有参数的方法。
3、增加了getServletContext()方法,但此方法任然是从ServletConfig中获取ServletContext。
- Javax.servlet.HttpServlet
2、奖ServletRequest转成HttpServletRequest等。
- Java建议通过实现HttpServlet来完成Servlet的开发。
六、让Servlet在启动时加载
- 在web.xml Servlet的配置为:<load-on-startup>1</load-on-startup>
- 在项目启动时加载一些必须的资源、如准备资源文件