一、什么是Servlet

Servlet 运行在服务端的Java小程序,

是sun公司提供一套规范(接口)

    主要功能:

用来处理客户端请求

响应给浏览器的动态资源

servlet的实质就是java代码,

通过java的API动态的向客户端输出内容

以后写的程序就不在是在本地执行了。

而是编译成字节码

放到服务器上来去执行。

编写程序时, 不需要有main函数了。

因为写完后

就把编写的程序编译成字节码,

放到服务器上面

当前发送就一个请求的时候

服务器就会按照一定规则调用编写的代码

二、Servlet快速入门

1.创建一个web工程名为:MyServlet

2.在JavaResource中src下

创建一个包名称为com.myxq.servlet

3.在创建的servlet包当中

创建一个class文件起名为FirstServlet

4.进入该class实现一个Servlet接口,

实现它未实现的方法

重点看service方法

在该方法当中写入一句话进行输出

5.在web.xml当中进行配置

6.启动服务器访问:

localhost:8080/MyServlet/firstServlet

就会自动执行创建的servlet中service方法

三、servlet内部机制

想要弄清楚这个问题

就必须得要先了解什么反射

四、类的加载时机

当程序要使用某个类时

如果该类还未被加载到内存中

系统会通过

加载,连接,初始化

三步来实现对这个类进行初始化

      加载 

就是指将class文件读入内存

并为之创建一个Class对象。

任何类被使用时

系统都会建立一个Class对象。

      连接

验证 是否有正确的内部结构

并和其他类协调一致

准备 负责为类的静态成员分配内存,

并设置默认初始化值

      初始化

初始化成员变量等等

类的加载时机

创建类的实例

访问类的静态变量,或者为静态变量赋值

调用类的静态方法

初始化某个类的子类

使用反射方式

来强制创建某个类或接口

对应的java.lang.Class对象


五、类加载器

什么是类加载器classLoader

  负责将.class文件加载到内存中,

并为之生成对应的Class对象。

  虽然我们不需要关心类加载机制,

但是了解这个机制

我们就能更好的理解程序的运行。

类加载器可分为:

  根类加载器

  也被称为引导类加载器

负责Java核心类的加载

  比如System,String等。

在JDK中JRE的lib目录下rt.jar文件中

  扩展类加载器

  负责JRE的扩展目录中jar包的加载。

  在JDK中JRE的lib目录下ext目录

  系统类加载器

  负责在JVM启动时

加载来自java命令的class文件

  以及classpath环境变量

所指定的jar包和类路径

六、什么是反射

创建一个对象的三个阶段

  1.源文件阶段 .java的文件

  2.字节码阶段 .class

  3.创建对象阶段 new 对象

内省:

  在运行时能够获取

JavaBean当中的

属性名称和get与set

反射:

  JAVA反射机制是在运行状态中

对于任意一个类

都能够知道这个类

所有属性和方法;

  对于任意一个对象

都能够调用它的

任意一个方法和属性;

  这种动态获取的信息

以及动态调用对象的方法的功能

称为java语言的反射机制。

  想要使用反射,

就必须得要获取字节码文件

 

        获取字节码:

1.Object类的getClass()方法

2.静态属性class

3.Class类中静态方法

 

05-Servlet与内部加载机制(part1)的更多相关文章

  1. Java ClassLoader加载机制理解

    今天看到了一篇介绍Java ClassLoader加载机器的文章, 才发觉一直来自己的肤浅, 好好地给补了一课, 不得不存档! 原文地址: http://www.blogjava.net/lhulcn ...

  2. Spring Boot 2.4.0正式发布,全新的配置文件加载机制(不向下兼容)

    千里之行,始于足下.关注公众号[BAT的乌托邦],有Spring技术栈.MyBatis.JVM.中间件等小而美的原创专栏供以免费学习.分享.成长,拒绝浅尝辄止.本文已被 https://www.you ...

  3. 【前端】CommonJS的模块加载机制

    CommonJS的模块加载机制 CommonJS模块的加载机制是,输入的是被输出的值的拷贝.也就是说,一旦输出一个值,模块内部的变化就影响不到这个值. 例如: // lib.js var counte ...

  4. angular懒加载机制 刷新后无法回退解决方案

    今天在项目中遇到一个很奇怪的问题,使用oclazyload来懒加载angular的模块,刷新页面后,单击回退按钮无法返回上一个页面.估计是使用懒加载机制销毁了angular内部的state关联,导致无 ...

  5. 深入理解ClassLoader(四)—类的父委托加载机制

    上几次我们介绍到了JVM内部的几个类加载器,我们来重新画一下这个图,再来看一下他们之间的关系.

  6. Crystal框架配置参数加载机制详解?

    前言 定义 配置参数定义的形式 配置参数文件定义在哪里? 配置参数加载的优先级 如何使用配置参数? 最佳实践 Jar项目中如何定义配置参数? War项目中如何定义或重载Jar包中的配置参数? 开发人员 ...

  7. Java ClassLoader加载机制

    一.体系结构(自上向下) 1.Bootstrap ClassLoader(BootStrapClassLoader) --- 启动类加载器或者叫引导类加载器,加载jdk核心的APIs,这些APIs一般 ...

  8. Android UI之View的加载机制(二)

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/39961201,作者:skay 对于接触安卓开不到一年的自己来说,总结下view的生 ...

  9. JaveWeb学习之Servlet(一):Servlet生命周期和加载机制

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2018-07-22/19.html 作者:夜月归途 出处:http://www.guitu ...

随机推荐

  1. “全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. python 将列表嵌套字典的unicode字符串转换为str格式的字符串的方法

    今天在进行django开发的过程中遇到了一个非常棘手的问题, 因为需求原因, 需要将一份数据存为json格式到数据库中, 如下面这种格式: list_1 = [{"name":&q ...

  3. django使用haystack来调用Elasticsearch搜索引擎

    如何使用django来调用Elasticsearch实现全文的搜索 环境:django ==1.11.11 Haystack为Django提供了模块化的搜索.它的特点是统一的,熟悉的API,可以让你在 ...

  4. 引入阿里的druid

    Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. Druid支持所有JDBC兼容的数据库,包括 ...

  5. 【Map,HashMap,Vector,List】资料汇总

    深入学习HashMap实现原理 http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html 深入学习Vector原理 http:/ ...

  6. Java 文件本地上传、下载和预览的实现

    以下方法为通用版本 实测图片和pdf 都没有问题 上传方法需要前端配合post请求 ,下载前端用a标签就可以,预览 前端使用ifrme标签   ,就可以实现基本功能... 1.文件本地上传 publi ...

  7. 永久激活navicat_premium12.0,支持win32和64位

    1.下载软件以及注册机 链接:https://pan.baidu.com/s/1NGc6YLsgMQRQYEwnGSU16Q   提取码:guno 2.根据自己的电脑位数安装对应的软件,傻瓜式安全(注 ...

  8. P3622 [APIO2007]动物园

    题目链接 题意分析 这是一道状压\(DP\)的题 一个人只可以欣赏到\(5\)只动物 显然可以状压 我们用\(dp[i][j]\)表示当前\([i,i+4]\)中这\(5\)只动物的状态\(j\) 在 ...

  9. iOS开发~制作同时支持armv7,armv7s,arm64,i386,x86_64的静态库.a以及 FrameWork 的创建

    armv7,armv7s,arm64,i386,x86_64 详解 一.概要 平时项目开发中,可能使用第三方提供的静态库.a,如果.a提供方技术不成熟,使用的时候就会出现问题,例如: 在真机上编译报错 ...

  10. openproject安装与使用

    思路: 1.生成config配置文件 2.导出配置文件,修改配置文件,删除容器,重新部署容器 3.登录后配置, 4.配置git,可以从openproject里查看gitlab上的代码库 第一次安装: ...