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
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