学无止境,但也需要时常停下脚步,回头看看已经走过的路,温故知新。
学完 javaWeb 已经有一段时间了,不知道自己到底理解了多少东西,所以借写博客的机会,让自己重新回忆一遍 javaWeb 的知识点,所以准备写一些系列博客,让自己更加系统的掌握这些。
一、Servlet
servlet 是运行在 web 服务器中的 java 程序,这些程序实现了 Servlet 接口,可以响应来自客户端浏览器的请求。
1.Servlet 的生命周期
servlet 的生命周期分为4个阶段,分别为加载和实例化阶段、初始化阶段、响应客户请求阶段和销毁阶段。在加载和实例化阶段,Servlet 容器加载 Servlet 并执行它的无参构造函数,进行 Servlet 实例化。在初始化阶段,Servlet 容器先获取 ServletConfig 对象,这个对象可以从 web.xml 文件中读取 Servlet 的配置信息。然后 Servlet 容器调用 init() 方法,此方法只调用一次,它接收 ServletConfig 对象,获取 Servlet 配置信息并进行初始化。在响应客户请求阶段,Servlet 容器调用 service 方法对客户端的请求进行获取,在 service() 方法中,通过 ServletRequest 对象得到来自客户端的请求信息,经过处理后,通过 ServletResponse 对象向客户端设置响应信息。在销毁阶段,容器调用 destroy() 方法来销毁 Servlet 实例。
2.Servlet 接口的继承关系
Servlet 接口定义了一个Servlet 所应有的方法,任何一个 Servlet 都应实现这个接口。GenericServlet 是一个抽象类,它是对 Servlet 的默认实现,它实现了 Servlet 中的大部分方法,只有 service() 方法需要使用者自行实现。HttpServlet 是专门处理 Http 请求的类,它继承自 GenericServlet ,并且实现了 service 方法,这个方法中判断了请求方式,并调用相应的 doXxx 方法,因此我们一般都直接继承自这个类,来完成我们的请求处理。以下是一个简单的 Servlet。
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = -1915463532411657451L;
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
// Write some content
out.println("<html>");
out.println("<head>");
out.println("<title>MyServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h2>Servlet MyServlet at " + request.getContextPath() + "</h2>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//Do some other work
}
}
还需要在 web.xml 文件中配置:
<?xml version="1.0"?>
<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_3_0.xsd"
version="3.0">
<welcome-file-list>
<welcome-file>/MyServlet</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.yechoor.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
</web-app>
以上就是最基本的servlet内容。