java web开发(四)Servlet

一 动态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

java web开发(四)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