1、Servlet的作用
用于接收请求,处理逻辑,响应结果
一次创建,多次执行,一次销毁
2、Servlet的编写
servlet编写:
public void init(ServletConfig servletConfig) throws ServletException {
//servlet创建时执行该方法
System.out.println("MyServlet创建了!!!");
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//servlet每访问一次,就执行一次该方法,
//该方法可接收所有的访问方式
System.out.println("MyServlet被访问了!!!");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//当servlet被访问时的方法为post方式时执行该方法
System.out.println("doPost执行了!!!!");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//当servlet被访问时的方法为get方式时执行该方法
System.out.println("doGet执行了!!!!");
}
public void destroy() {
//当servlet被销毁前执行该方法
System.out.println("MyServlet销毁了..");
}
web点xml编写:
<!--配置servlet-->
<servlet>
<servlet-name>servlet实现类名</servlet-name>
<servlet-class>servlet实现类名的项目路径</servlet-class>
<init-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
<!--配置servlet的映射路径-->
<servlet-mapping>
<servlet-name>servlet实现类名</servlet-name>
<url-pattern>/请求资源名称(servlet实现类名)</url-pattern>
</servlet-mapping>
servlet的生命周期:
1、init
servlet对象创建时,调用此方法
2、service
用户访问servlet时,调用此方法, 每访问一次,执行一次
3、destroy
servlet对象销毁前,调用此方法
*:Servlet被销毁时执行。服务器关闭时,Servlet被销毁
*:只有服务器正常关闭时,才会执行destroy方法。
*:destroy方法在Servlet被销毁之前执行,一般用于释放资源
ServletConfig对象:
Tomcat在servlet对象创建时,执行init()方法,并创建一个ServletConfig配置对象
作用:
读取web点xml配置文件Servlet中<init+param>信息,实现参数和代码的解耦
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class ServletConfigServlet implements Servlet {
// 定义成员变量
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// 将init中的servletConfig对象,赋值给成员变量
this.servletConfig = servletConfig;
}
@Override
public ServletConfig getServletConfig() {
// 获取全局的ServletConfig对象
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 获取web.xml文件中配置的编码
String encode = getServletConfig().getInitParameter("encode");
System.out.println(encode);
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
url的映射模式:
精确匹配(掌握)
<url-pattern>/servletDemo</url-pattern>
目录匹配
<url-pattern>/aa/*</url-pattern>
后缀匹配
<url-pattern>*.xxx</url-pattern>
Servlet3.0的步骤:
1. 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
2. 定义一个类,实现Servlet接口
3. 复写方法
4. 在类上使用@WebServlet注解,进行配置
* @WebServlet("资源路径")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public @interface WebServlet {
String name() default "";//相当于<Servlet-name>
String[] value() default {};//代表urlPatterns()属性配置
String[] urlPatterns() default {};//相当于<url-pattern>
int loadOnStartup() default -1;//相当于<load-on-startup>
}
@WebServlet注解和web.xml文件不能同时使用,会导致服务器启动失败!