Servlet浅谈:
概念:运行在服务端的程序
Servlet就是一个接口,他定义了Java类可以浏览器访问到(Tomcat识别)的规则。
下面我们先了解下servlet中的方法及其运行原理:
servlet原理:
1.接收客户端请求,解析请求行URL信息,查找访问的servlet路径
2.查询web.xml文件,判断是否有其队应的url-patten标签内容
3.如果没有返回404,如果有,找到对应的类全名;
4.然后通过反射把其对应的类加载至内存
5.执行service方法
servlet中的方法:
1.init()方法:表示servlet被创建
2.servletconfig()方法;加载servletconfig对象,他是配置servlet对象的
3.service()方法:他是用来写业务功能代码的
4.getServletinfo()方法:不是很常用到他,它是用来获取servlet版本信息的,例如:作者 版本等
5.destroy()方法:用来销毁servlet对象的
servlet的生命周期:
1.init()默认第一次访问时,建执行init方法,servlet被创,只执行一次。
或者在servlet标签中使用load-on-startup标签在web.xml中设置他的值:负数为默认执行,0或正数为服务器开启时创建
2.serice()方法;提供服务每次访问servlet时都会执行service方法
3.destroy()方法:先释放资源 后销毁servlet 正常关闭服务器时才能使用destroy方法
(destroy方法在容器移除servlet 时执行,同样只执行一次。这个方法会在所有的线程的service()方法执行完成或者超
时后执行,调用这个方法后,容器不会再调用这个servlet的方法,也就是说容器不再把请求发送给这个servlet。这个
方法给servlet释放占用的资源的机会,通常用来执行一些清理任务。)
Servlet的体系结构:
Servlet----接口
|
genericServlet---抽象类 将servlet接口中的其他方法做了默认空实现
| 只将service方法作为抽象类
httpServlet ---抽象类 对HTTP协议的一种封装,简化操作。继承servlet
基础点完了实操来一下很简单的那种:
package com.zzh.servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletText implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//在这里执行你要做的事情
System.out.println("这是一个练习");
servletResponse.getWriter().write("Holle servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>servletText</servlet-name>
<servlet-class>com.zzh.servlet.ServletText</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletText</servlet-name>
<url-pattern>/erha</url-pattern>
</servlet-mapping>
</web-app>
完