`
文章列表
service 启动时会初始化过滤器,其中最主要的过滤器是filterDispatcher这个过滤器,filterDispatcher的初始化代码如下 public void init(FilterConfig filterConfig) throws ServletException { try { this.filterConfig = filterConfig; initLogging(); ...
1.工程所需要的jar,struts版本struts:1.2.6 commons-beanutils.jar commons-digester.jar commons-logging.jar struts.jar 2.工程代码 package sun.com.struts.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.ap ...
一个http请求过来之后,tomcat的核心组件之一connector会接受这个请求,并从输入流InputStream中获取参数的信息,接受页面上的request,response对象,并封装成httprequest和httpresponse对象,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理这个请求的线程,处理这个请求的线程就是tomcat的另一核心组件 Container 要做的事了。 container接到这个请求后,会依次创建并链式调用engine--host--context--wrapper,其中wrapper是servlet在tomc ...
一、简介     WebSocket协议为web应用程序定义了一种全新的重要能力:在客户端和服务器端之间可以进行全双工的双向通信。简短来说,Websocket协议是先用http做初始化的握手,之后利用http向服务器发送一个协议升级(或者协议变 ...
本篇文章简单介绍一个Spring的schedule小例子。此定时任务放在一个mvc工程里面,配置以及代码都可以参考http://fengyilin.iteye.com/admin/blogs/2338830这篇文章,下面主要把关于schedule的内容记录下来。 变更点: 1.在servlet-context.xml文件中引入schedule的配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframewor ...
之前一篇文章写了个简单的Spring mvc例子,界面表示层用的是jsp,本篇文章结合thymeleaf将表示层改成html。和用jsp不一样的地方会加特殊说明。 同样本示例也是在内网环境下,没有采用maven,直接将jar包放在工程里面。 一、配置web.xml(和采用jsp作为表示层没有任何改动),主要作用 1.定义了一个servlet拦截器,以及Mapping规则 2.引入spring-context配置文件 3.添加log4j配置文件 具体文件: <?xml version="1.0" encoding="UTF-8"?> < ...
***因为在内网环境下,依赖的jar不能从网上直接下载,所以没有采用maven,此博客只为记录Spring+jsp所依赖的最小jar包集合。*** 一、配置web.xml,主要作用 1.定义了一个servlet拦截器,以及Mapping规则 2.引入spring-context配置文件 3.添加lo ...
    Java虚拟机动态的加载、链接、初始化类或接口。加载是通过特定的名字找到类或接口类型的二进制表示,根据找到的二进制表示创建类或接口的过程。链接是获得创建的类,将它们结合进Java虚拟机的运行时状态以使他们能够被执行的过程。初始化一个类或接口包括执行类或接口的初始化方法<clinit>. 5.1 运行时常量池     Java虚拟机为每一个类型维续一个常量池,一种运行时的数据结构,提供类似于传统语言中符号表的服务。     类或接口的二进制表示中的常量池表被用来在类或接口创建时构建运行时常量池。运行时常量池中的所有引用都是原始的符号,常量池中的引用按照如下规则从类或接口的二进制 ...
2.9 特殊方法     对于Java虚拟机,每一个用java语言编写的构造函数作为实例初始化方法都有一个特殊的名字:<init>。这个名字是编译器提供的。因为<init>不是一个正确的方法标识符,所以它是不能直接在Java编程语言中使用的。实例初始化方法只能通过Java虚拟机的invokespecial指令调用,并且只能用在未被初始化的类实例。关于实例初始化方法的访问权限可以参考Java语言规范的6.6章。     一个类或接口最多含有一个类或接口初始化方法,并且通过调用这个方法来初始化。类或接口的初始化方法也有一个特殊的名字<clinit>,此方法没有参数 ...
2.6 栈帧     栈帧用来存储变量值、中间结果,也用来进行动态链接、返回访法值和分发异常。     栈帧在一个方法调用时创建,在方法调用完成后销毁,不管方法是正常结束,还是非正常结束(方法抛出异常)。栈帧从创建此栈帧的线程对应的虚拟机栈中分配存储空间。每个栈帧有自己的本地变量表、操作数栈以及一个指向当前方法对应类的运行时常量池的引用。     本地变量表和操作数栈的大小在编译时确定,随着当前栈帧对应方法的代码一起提供。因此栈帧数据结构的大小只和虚拟机的实现相关,这些数据结构所需的内存可以在方法调用同时分配。     在一个线程中,任意时刻只有正在执行着的方法对应栈帧是活跃的。这个栈帧称为当前 ...
2.5 运行时数据区域     Java虚拟机定义了各种各样的运行时数据区,在程序执行过程中使用。这其中有些数据区域是在Java虚拟机启动时创建,只有在虚拟机结束时才被销毁。还有些数据区是各个线程的,线程的数据区在线程创建时创建,随线程的结束而销毁。 2.5.1 pc寄存器     Java虚拟机支持许多线程同时执行。每一个线程都有自己的pc(程序寄存器)。在任意时点,一个线程只能执行一个方法,称为这个线程的当前方法。如果这个方法不是本地方法,pc寄存器中存放着当前执行着的虚拟机指令的地址;如果当前方法是本地方法,则pc寄存器是未定义的。Java虚拟机的pc寄存器足够大的可以存下一个return ...
    这篇文章针对虚拟机的抽象描述,并不针对一个特定的Java虚拟机实现。     为了实现Java虚拟机,你仅仅需要能够读取class文件格式,并且执行里面的操作。哪些限制实现者创造力的具体细节并不是Java虚拟机规范的一部分 ...
Global site tag (gtag.js) - Google Analytics