一 动态web技术
开发动态web的技术,常见的有ASP,PHP,JSP和Servlet。基于java的动态web开发,Sun公司提供了Servlet和JSP两种技术。
二 Servlet生命周期
1.初始化阶段
当客户端向Servlet容器发出HTTP请求要求访问Servlet时,Servlet容器首先会解析请求,检查内存中是否已经有了该Servlet对象,如果有直接使用该Servlet对象,如果没有就创建Servlet实例对象,然后通过调用init()方法实现Servlet的初始化工作。在Servlet的整个生命周期内,init()方法只被调用一次。
2.运行阶段
在这个阶段,Servlet容器会为这个请求创建代表HTTP请求的ServletRequest对象和代表HTTP响应的ServletResponse对象,然后将他们作为参数传递给Servlet的service()方法。service()方法从ServletRequest对象中获得客户请求信息并处理请求,通过ServletResponse对象生成响应结果。在Servlet的整个生命周期中,对于Servlet的每一次请求,Servlet容器都会调用一次Servlet的service方法,并且创建新的ServletRequest和ServletRequest对象。
3.销毁阶段
当服务器关闭或web应用被移出容器时,Servlet随着web应用的销毁而销毁,在销毁Servlet之前,Servlet容器会调用Servlet的destroy()方法。
三 ServletConfig和ServletContext
1.ServletConfig
在web.xml文件中可以使用<init-param>元素对一些配置参数进行设定。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到ServletConfig对象,并将这个对象作为参数传递给init()方法,ServletConfig提供了一系列获取配置信息的方法。
2.ServletContext
当Servlet容器启动时,会为每一个Web应用创建一个唯一代表当前应用的ServletContext对象,该对象封装了当前Web应用的所有信息,而且实现多个Servlet之间数据的共享。
- 获取web.xml中配置的参数
- 实现多个Servlet对象共享数据
- 获取Web应用下的资源文件
四 IDEA开发Servlet
1.新建web工程
https://my.oschina.net/kun123/blog/761129
2.新建Servlet
package com.cary.demo;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* Created by xi on 2017/5/29.
*/
public class HelloServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
PrintWriter writer = servletResponse.getWriter();
writer.println("HelloServlet");
}
}
3.web.xml中注册Servlet
<?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_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.cary.demo.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
转载于:https://my.oschina.net/kun123/blog/911610