Servlet:运行在服务端的小程序
其本质是一个接口,定义了一个类被浏览器访问的规则
功能:
- 接收请求
- 处理请求
- 作出响应
创建web项目
定义Java类去实现Servlet接口重写其未实现的方法
配置在web.xml中配置Servlet
发布项目
访问Servlet
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>org.westos.web.MyServlet</servlet-class>
</servlet>
<!--配置Servlet的映射路径-->
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<!--Servlet的映射路径,浏览器通过映射路径,可以访问到我们的Servlet-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
在网页上请求Servlet会调用Servlet中的service()方法,处理逻辑一般就是在该方法中
Servlet的生命周期:
/*
Servlet的生命周期方法
Servlet从创建到销毁,所要执行不同的生命周期方法
init()---->service()----->destroy()
init() 在第一次请求Servlet Servlet被服务器创建出来后就会调用 这个方法,只会在第一次请求时调用一次。
我们一般会在init()方法里面,做一些初始化的准备工作。
service() 对外提供服务的方法,每次请求都会执行。我们以后就在这个方法里面处理请求做出响应
正常关闭服务器时,会销毁servlet
当servlet销毁的时候,就会执行destroy()方法,一般在这个方法里面做一些善后收尾工作
*/
public class MyServlet implements Servlet {
public MyServlet(){
System.out.println("Servlet构造方法执行!");
}
//ServletConfig对象可以获取一下初始化参数
//在服务器调用init()方法时,服务器把ServletConfig对象传递给init方法()
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("Servlet创建了,第一次请求来了 init()方法调用了");
//读取web.xml中的配置的值
System.out.println(servletConfig.getInitParameter("car"));
System.out.println(servletConfig.getInitParameter("phone"));
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Service()方法调用");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("destroy()方法调用");
}
}
<!--配置Servlet-->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>web.MyServlet</servlet-class>
<!--这个是配置一些键值对参数,我们可以通过ServletConfig对象来读取配置的参数值-->
<init-param>
<param-name>car</param-name>
<param-value>benzi</param-value>
</init-param>
<init-param>
<param-name>phone</param-name>
<param-value>oppo</param-value>
</init-param>
<!--配置init方法的调用时机
-1 是默认值,默认值的意思就是在第一次请求时,调用init方法
现在我们想要在服务开启途中调用init()方法,我们可以把值配置成非负数
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
ServletConfig对象:
ServletConfig是一个接口,在Servlet初始化的时候被服务器创建并传递给init()方法
其功能:
1.获取Servlet初始化参数
String getInitParameter(String name);
Enumeration getInitParameters()
2.获取ServletContext对象 ServletContext对象是由服务器创建,可以通过ServletConfig中的方法获取
ServletContext getServletContext()
3.获取Servlet配置名称
String getServletName()
该对象是由服务器创建并且传给Servlet初始化会调用的init()方法,那么在service()方法中需要该对象就需要对该对象提升作用域
声明成员变量ServletConfig
在init()方法中对其赋值
在service中使用getServletConfig获取