`

servlet课堂笔记

阅读更多
引用


1、servlet的生命周期与核心类及接口
(1)核心类与接口
A.Servlet接口
init(ServletConfig);
service(ServletRequest,ServletResponse);
destroy();
B. GenericServlet抽象类
对Servlet接口作了部分实现。主要是实现了
init()方法。
C. HttpServlet
继承了GenericServlet,对http协议作了封装。
实现了service()方法:
service(HttpServletRequest,HttpServletResponse) ;
doGet(HttpServletRequest,HttpServletResponse) ;
doPost(HttpServletRequest,HttpServletResponse) ;
service()方法,其默认的实现是:依据请求是
get还是post方式,来调用doGet()与doPost()方法。
(2)servlet的生命周期
含义:
所谓生命周期,指的是,servlet容器如何去
管理servlet对象的创建、调用、销毁以及其资源
的获取与释放。
因为开发人员不能够直接调用servlet,也就是说,
servlet对象的创建及销毁等管理工作全部由servlet
容器来负责。如果开发人员想干涉容器对servlet
的管理工作,就需要对Servlet接口中的几个方法进行回调。


过程:
实例化 --》初始化--》就绪与调用--》资源释放--》销毁

实例化:
第一种情况:当服务器启动时,会对配置有
load-on-startup参数的servlet进行实例化。
第二种情况:当请求到达服务器,并且该请求
要访问的servlet没有实例化。
实例化就是调用servlet公开的不带参的构造器。

初始化:
就是容器会调用servlet的init(ServletConfig)
方法。
具体细节是:容器先会构造一个ServletConfig
对象(该对象可以方便地访问servlet初始化配置
参数等)。然后,再将该对象传给servlet实例。
初始化的目的:一般用于获取资源。比如
,加载资源文件。
初始化方法只会执行一次。
如何override init()方法?

A.如果override init(ServletConfig config)

super(config);

....初始化代码

B.也可以 override init(); //更好

....初始化代码

就绪与调用:

经过实例化与初始化,servlet就可以接受调用。

在默认情况下,多个请求会共享同一个servlet

实例。

也就是说:在同一个服务器里,某个

servlet,只有唯一一个实例。

while(true){

Socket s = ServerSocket.accept();

new WorkThread(s).start();

}



WorkThread extends Thread{

Socket s;

Servlet servlet;

public void run(){

servlet.service();

}

}



每当一个请求到达服务器,会启动一个线程来

处理请求。而多个线程有可能会共享同一个实例(

比如多个请求访问的是同一个servlet)。

资源释放与销毁:

容器会依据自己的算法决定是否销毁某个

servlet实例,在销毁之前,会调用destroy()。

用于释放在初始化方法中获得的资源。

(3)线程安全问题

A.原因:

多个线程可能会共享同一个servlet实例

如果多个线程对servlet实例进行写操作。

B.解决方式:

方式一:使用synchronized

方式二:不建议使用

让servlet实现SingleThreadModel(标识接口,

里面没有任何方法)

此时,每一个线程都会使用一个自己的servlet实例。

方式三:在servlet类当中,尽量不要对

属性进行写操作。



练习:

计价

产品的最终价格(totalPrice) =

产品的原始价格(price) * (1 + 税率(taxRate));



写一个PricingServlet,在初始化方法中,加载

一个配置文件 tax.properties。

tax.properties:

beijing=0.08

....



也就是说,税率是多少,要依据城市名查找

配置文件。



2、url-pattern:

servlet容器如何去分析请求路径。

比如 http://ip:port/appName/abc

step1: 除掉应用名之前的字符串。

得到/abc.html

step2: 去web.xml中,查找url-pattern,

进行匹配:

首先,做精确匹配:即step1中获得的字符串

必须与url-pattern中定义的字符串完全一致。

如果匹配不上,模糊匹配:使用通配符。

例如:

/* :表示/下任意的字符串。

/abc/*:

后缀方式的匹配:

例如:

*.do:匹配任意以.do结尾的字符串。

*.action:

最后,如果仍然匹配不上,会查找静态资源

,如果找到,则返回,找不到,则404

3、一个servlet处理多个请求。





























分享到:
评论

相关推荐

    达内培训Servlet课堂笔记

    ### 达内培训Servlet课堂笔记知识点详解 #### 一、Servlet概述 - **Servlet定义**:Servlet是一种服务器端的小程序,用于处理客户端发送来的HTTP请求,并返回相应的HTTP响应。它是Java Web开发的基础技术之一。 - ...

    Java servlet课堂笔记

    ### Java Servlet基础知识详解 #### 一、Servlet简介与体系结构 **Servlet** 是Java平台用于构建Web应用程序的核心技术之一,特别是在传统的B/S(浏览器/服务器)架构中扮演着至关重要的角色。Servlet允许开发者...

    韩顺平servlet和jsp课堂笔记

    【标题】:“韩顺平servlet和jsp课堂笔记”涵盖了Web开发中的两个核心技术——Servlet和JSP(JavaServer Pages)的学习资料。韩顺平是一位知名的IT教育专家,他的课程通常深入浅出,适合初学者入门及进阶者提升。 ...

    JSP servlet课堂笔记(达内资料)

    【JSP 与 Servlet 基础】 JSP (Java Server Pages) 和 Servlet 是 Java Web 开发中的核心技术,主要用于构建动态网页。它们都是基于 Java 平台,提供了一种便捷的方式来处理用户请求并生成响应。 1、**Servlet ...

    Javaweb最新全套项目实战视频教程-Servlet课堂笔记

    是否还在默默的看着学习路线图,寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从...

    servlet 笔记

    ### Servlet基础知识及应用详解 #### 一、Servlet概述 Servlet是一种服务器端的Java技术,用于扩展应用程序的功能。它主要用于Web应用程序开发,可以处理客户端发送到Web服务器的各种请求,并且能够生成动态网页。...

    Jsp_Servlet学习课堂笔记

    **JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们在构建动态Web应用程序方面发挥着关键作用。...通过阅读这些笔记,你可以系统地学习这两门技术,并将它们应用于实际项目中。

    Java EE技术课堂笔记

    本资源是 Java EE 技术课堂笔记,涵盖了 JSP、Servlet、SSH 等关键技术。下面是笔记的详细内容: 一、Java EE 技术概述 Java EE(Java Enterprise Edition)是 Sun Microsystems 公司推出的企业级 Java 应用服务器...

    Servlet-JSP-课堂笔记.md

    Servlet-JSP-课堂笔记.md

    跃达创新Java培训课堂笔记

    【Java培训课堂笔记——跃达创新】 在Java编程领域,跃达创新是一家知名的教育机构,致力于提供高质量的Java培训课程。这份"跃达创新Java培训课堂笔记"是学习Java技术的重要资源,尤其对于初学者和希望深入理解Java...

    JAVA WEB开发实战经典培训【课堂笔记】

    这份"JAVA WEB开发实战经典培训【课堂笔记】"是由MLDN李兴华提供的专业培训资料,主要以PDF格式记录了整个课程的关键知识点。这份笔记对于初学者和希望深入理解Java Web技术的人来说是一份宝贵的资源。 一、Java ...

    b站狂神课堂笔记超详细

    【标题】"b站狂神课堂笔记超详细"所指的是在哔哩哔哩(B站)上一位被称为“狂神”的讲师所分享的JavaWeb相关的课程笔记,这些笔记以其详尽全面而受到学习者的欢迎。JavaWeb是Java编程语言在Web开发领域的应用,涵盖...

    课堂笔记(韩顺平)

    【课堂笔记(韩顺平)】 本篇笔记主要涵盖了多个IT技术领域的知识点,包括内容管理系统(CMS)、数据库操作、Servlet编程、JavaScript、路径处理、调试技巧以及HTTP协议等。以下是对这些知识点的详细说明: 1. **...

    JAVAWEB开发实战经典(课堂笔记)

    《JAVA WEB开发实战经典》是一本深入探讨Java Web开发技术的教材或课堂笔记,由知名讲师李兴华或MLDN团队编著。这本书涵盖了从基础到高级的Java Web开发知识,旨在帮助读者全面掌握这一领域的核心技能。通过阅读这份...

    Javaee课堂笔记精华总结就业必备

    这个"Javaee课堂笔记精华总结就业必备"显然是一份针对求职者或初入职场的开发者准备的学习材料,旨在帮助他们掌握JavaEE的核心概念和技术,以提升就业竞争力。 JavaEE平台包括一组服务、APIs和协议,用于构建分布式...

    springmvc课堂笔记-1

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> ``` 这里使用了`InternalResourceViewResolver`作为视图解析器,它可以解析出真正的视图页面。 #### ...

    06_尚硅谷_Servlet_王振国 - 课堂笔记1

    Servlet技术是JavaEE平台中的核心组成部分,用于构建动态web应用程序。Servlet是JavaWeb三大组件之一,这三大组件包括Servlet程序、Filter过滤器和Listener监听器,它们协同工作以实现复杂的功能。 Servlet是一个...

    北京圣思园java课堂笔记 (javaSE和javaee)

    【标题】:“北京圣思园java课堂笔记 (javaSE和javaee)” 提供了全面的Java学习资源,涵盖了从基础的Java Standard Edition (javaSE)到进阶的Java Enterprise Edition (javaEE)的相关知识。 【描述】:“北京圣思园...

    黑马程序员SpringMVC课堂笔记

    《黑马程序员SpringMVC课堂笔记》是一份详细记录了SpringMVC框架学习过程的资料,主要针对Java EE开发者,特别是那些希望通过黑马程序员的教程来提升自己SpringMVC技能的学员。SpringMVC作为Spring框架的重要组成...

    javaee框架SSM课堂笔记.docx

    根据提供的文档信息,以下是对JavaEE框架SSM(Spring+SpringMVC+MyBatis)课堂笔记中的关键知识点进行的详细解析。 ### 第一部分:Spring框架基础 #### 1. Spring简介 - **Spring概念**:Spring是一个开源的轻量级...

Global site tag (gtag.js) - Google Analytics