java servlet是与平台无关的服务器组件,他运行于servlet容器中,servlet容器负责servlet和客户的通信以及调用servlet的方法,servlet和客户的通信采用"请求/响应"的模式。
servlet可以完成如下功能:
1创建并返回基于客户请求的动态html页面。
2创建可嵌入到现有html页面部分的html页面。
3与其他服务器资源进行通信例如数据库或者基于java的应用程序。
servlet API:
1、接口:javax.servlet.Servlet。
javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。
一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。 Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行。 Servlet引擎是Web 服务器按照Java Servlet API定制的扩展。Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。
2、接口: javax.servlet.ServletConfig
实现这些接口的类:javax.servlet.GenericServlet和它的子类javax.servlet.http.HttpServlet
1、建立一个servlet必须实现Servlet接口。
public class Serlet implements Servlet
2、需要在web.xml文件配置servlet
<!-- 配置servlet --> <servlet > <servlet-name>HelloServlet</servlet-name> //这个参数是servlet的名字 <servlet-class>com.hs.Serlet</servlet-class> //这个参数是这个servlet调用的类的完整路径 <init-param> //init-para 参数 ServletConfig 可以获取此参数 <param-name>name</param-name> <param-value>hs</param-value> </init-param> </servlet> //-------------------------------------- public void init(ServletConfig config) throws ServletException { ServletContext context = config.getServletContext(); System.out.println(config.getInitParameter("name")); System.out.println(context.getContextPath()); System.out.println(context.getInitParameter("name")); } //---------------------------------------- <context-param> // context_param ServletContext 可以获取次参数 <param-name>name</param-name> <param-value>hs</param-value> </context-param> <!-- 配置servlet映射 --> //servlet容器会根据映射来调用servlset <servlet-mapping> //servlet-name 参数必须与要调用的servlet的<servlet-name>一致 <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> //这个参数中 '/'代表当前web应用的根目录 http://localhost:8080/weblesson1/ //所以这个servlet访问的路径是http://localhost:8080/weblesson1/hello </servlet-mapping>
servlet的生命周期:
1、构造器 :第一次访问servlet会调用构造器且只有一次,说明servlet是单例的会涉及线程安全的问题
2、init方法:servlet初始化程序,只调用一次。可以传入参数 public void init(ServletConfig config) throws ServletException {
3、service:是对“请求/响应"的相关处理,没请求一次会调用一次。
4、destroy:当servlet销毁之前会调用。
<load-on-startup>1</load-on-startup>节点:
配置servlet创建的顺序,值越小越先创建,如果为负数,只有在访问的时候才创建。servlet 与映射一般是成对出现但是没有映射也是可以创建的。同一个servlet可以映射到多个url上