servlet容器启动过程

Web应用的初始化工作

创建Servlet实例

在Servlet的解析工作中,Servlet被包装成StandarWrapper添加在Context容器中。

servlet 体系结构

servlet interface:

package javax.servlet;

import java.io.IOException;

public interface Servlet {
void init(ServletConfig var1) throws ServletException; ServletConfig getServletConfig(); void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; String getServletInfo(); void destroy();
}

servletConfig interface:

package javax.servlet;

import java.util.Enumeration;

public interface ServletConfig {
String getServletName(); ServletContext getServletContext(); String getInitParameter(String var1); Enumeration getInitParameterNames();
}

servletContext interface:

package javax.servlet;

import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.Set; public interface ServletContext {
String getContextPath(); ServletContext getContext(String var1); int getMajorVersion(); int getMinorVersion(); String getMimeType(String var1); Set getResourcePaths(String var1); URL getResource(String var1) throws MalformedURLException; InputStream getResourceAsStream(String var1); RequestDispatcher getRequestDispatcher(String var1); RequestDispatcher getNamedDispatcher(String var1); /** @deprecated */
Servlet getServlet(String var1) throws ServletException; /** @deprecated */
Enumeration getServlets(); /** @deprecated */
Enumeration getServletNames(); void log(String var1); /** @deprecated */
void log(Exception var1, String var2); void log(String var1, Throwable var2); String getRealPath(String var1); String getServerInfo(); String getInitParameter(String var1); Enumeration getInitParameterNames(); Object getAttribute(String var1); Enumeration getAttributeNames(); void setAttribute(String var1, Object var2); void removeAttribute(String var1); String getServletContextName();
}

servletRequest interface:

package javax.servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map; public interface ServletRequest {
Object getAttribute(String var1); Enumeration getAttributeNames(); String getCharacterEncoding(); void setCharacterEncoding(String var1) throws UnsupportedEncodingException; int getContentLength(); String getContentType(); ServletInputStream getInputStream() throws IOException; String getParameter(String var1); Enumeration getParameterNames(); String[] getParameterValues(String var1); Map getParameterMap(); String getProtocol(); String getScheme(); String getServerName(); int getServerPort(); BufferedReader getReader() throws IOException; String getRemoteAddr(); String getRemoteHost(); void setAttribute(String var1, Object var2); void removeAttribute(String var1); Locale getLocale(); Enumeration getLocales(); boolean isSecure(); RequestDispatcher getRequestDispatcher(String var1); /** @deprecated */
String getRealPath(String var1); int getRemotePort(); String getLocalName(); String getLocalAddr(); int getLocalPort();
}

servletResponse interface:

package javax.servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map; public interface ServletRequest {
Object getAttribute(String var1); Enumeration getAttributeNames(); String getCharacterEncoding(); void setCharacterEncoding(String var1) throws UnsupportedEncodingException; int getContentLength(); String getContentType(); ServletInputStream getInputStream() throws IOException; String getParameter(String var1); Enumeration getParameterNames(); String[] getParameterValues(String var1); Map getParameterMap(); String getProtocol(); String getScheme(); String getServerName(); int getServerPort(); BufferedReader getReader() throws IOException; String getRemoteAddr(); String getRemoteHost(); void setAttribute(String var1, Object var2); void removeAttribute(String var1); Locale getLocale(); Enumeration getLocales(); boolean isSecure(); RequestDispatcher getRequestDispatcher(String var1); /** @deprecated */
String getRealPath(String var1); int getRemotePort(); String getLocalName(); String getLocalAddr(); int getLocalPort();
}

ServletConfig在Servlet init时由容器传过来。

Servlet如何工作

服务器如何根据URL到达正确地Servlet容器中的。

Servlet中的Listener

Filter如何工作

filter interface:

package javax.servlet;

import java.io.IOException;

public interface Filter {
void init(FilterConfig var1) throws ServletException; void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException; void destroy();
}

filterConfig interface:

package javax.servlet;

import java.util.Enumeration;

public interface FilterConfig {
String getFilterName(); ServletContext getServletContext(); String getInitParameter(String var1); Enumeration<String> getInitParameterNames();
}

filterChain interface:

package javax.servlet;

import java.io.IOException;

public interface FilterChain {
void doFilter(ServletRequest var1, ServletResponse var2) throws IOException, ServletException;
}

Servlet下的更多相关文章

  1. JavaWeb中的关于html、jsp、servlet下的路径问题

    1 前言 本文将对近期项目练习中出现的关于文件路径的问题进行分析和总结,主要涉及html页面中的href及ajax指向路径.jsp页面中href指向路径及servlet转发或重定向路径等内容,本文的分 ...

  2. servlet下根据相对路径找资源

    1.在web项目中如果直接添加一个资源,那么相对路径相对的是tomcat的bin目录. 2.在包中直接指定资源,那么可以使用以下的相对路径直接获取资源: InputStream in = this.g ...

  3. servlet下的request&&response

    request的方法     *获取请求方式: request.getMethod();     * 获取ip地址的方法 request.getRemoteAddr();     * 获得用户清气的路 ...

  4. 手动构建Servlet项目的流程

    前面讨论过手动建立jsp的项目,jsp是tomcat服务器负责编译执行,所以配置相对简单,而Servlet需要先把java源文件编译成字节码class文件,然后再执行,所以需要servlet-api. ...

  5. Servlet、JSP选择题(2)

    Java EE软件工程师认证考试 试题库-选择题 一.    选择题(包括单选和双选) 1.B 编写一个Filter,需要(  ) A. 继承Filter 类 B. 实现Filter 接口 C. 继承 ...

  6. JavaWeb之 Servlet执行过程 与 生命周期

    Servlet的概念 什么是Servlet呢? Java中有一个叫Servlet的接口,如果一个普通的类实现了这个接口,这个类就是一个Servlet.Servlet下有一个实现类叫HttpServle ...

  7. Java Web开发之Servlet、JSP基础

    有好多年不搞Java Web开发了,这几天正好国庆放假,放松之余也有兴趣回头看看Java Web开发技术的基础. 我们都知道,Servlet是Java Web开发的重要基础,但是由于Servlet开发 ...

  8. Servlet的init()方法如何才会在服务器启动时执行

    如果要想让 servlet 的 init () 方法在服务器启动 时就被执行,则需要在 web.xml 中相应的 servlet 下配置 <servlet > <servlet -n ...

  9. Java Web(一) Servlet详解!!

    这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本个人觉得很棒的书,<Java Web 整合开发王者归来>,现在写的这一系列基 ...

随机推荐

  1. 基本分类方法——KNN(K近邻)算法

    在这篇文章 http://www.cnblogs.com/charlesblc/p/6193867.html 讲SVM的过程中,提到了KNN算法.有点熟悉,上网一查,居然就是K近邻算法,机器学习的入门 ...

  2. Eclipse NDK 配置

    一.关于NDK:NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java ...

  3. spring的初始化bean,销毁bean之前的操作详解

    我所知道的在spring初始化bean,销毁bean之前的操作有三种方式: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种是 ...

  4. Android_用户界面概述和数据单位

    一.UI界面概述 UI,对于一个应用而言用户界面是非常重要的一部分,是应用的脸,用户对应用第一个印象来自于界面,因此如果没有完美的用户界面,很难留住用户. 好的用户界面会极大提高用户的使用欲望并维护客 ...

  5. 基于dubbo源码包通过Maven构建dubbo的详细步骤

    通过Maven构建dubbo 既然可以下载得到源码以及发布包,那么为什么要去构建dubbo呢?,我们先来看下dubbo的主要模块: 我们不仅要使用dubbo的核心框架,还要使用它的一些服务,比如管理控 ...

  6. 【转】java多态详解

    1.        Java中除了static和final方法外,其他所有的方法都是运行时绑定的.private方法都被隐式指定为final的,因此final的方法不会在运行时绑定.当在派生类中重写基 ...

  7. iOS开发 判断字符串是不是网址

    - (BOOL)isUrlString { NSString *emailRegex = @"[a-zA-z]+://.*"; NSPredicate *emailTest = [ ...

  8. DirectX中的纹理及其创建

    正如大多初学者会遇到一个问题, 导入的图片为何不是原来的尺寸?例如800*600的实际上通过D3DXCreateTextureFromFile后变成的是1024*1024,即宽和高默认都会自动扩展为2 ...

  9. js的with语句使用方法

    1)简要说明         with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象. 2)语法格式  with(object ...

  10. 扒一扒JavaScript 预解释

    带var关键字预解释 让我们先看下这段代码执行的结果: 代码如下: alert(n);//弹出undefinedvar n = 10; 弹出的结果是undefined,为何不是10?让我们再看下面这段 ...