17.13 非阻塞 I/O

2019-04-27
阅读 3 分钟
1.4k
应用程序的web容器通常为每一个客户端请求分配一个服务端线程。开发可扩展的web应用,你必须确保关联请求的线程是没有空闲的,不需要等待一个阻塞操作完成。异步处理提供了在一个新线程处理阻塞操作的机制,把关联请求的线程返回给容器。即使你所有的阻塞操作都在service方法中异步执行,关联客户端请求的线程基于input/...

17.12 异步处理

2019-04-23
阅读 3 分钟
1.3k
应用服务器的web容器通常会为每个请求分配一个服务线程。在重负载的场景下,容器需要大量的线程去服务所有客户端请求。服务可扩展性的限制包括内存不足或者耗尽容器线程。创建可扩展web程序,你必须确保没有关联请求的线程是空闲的,所以容器可以使用他们处理新请求。 这里有两个关联请求的线程空闲的两个场景:

使用Servlet技术上传文件

2019-04-21
阅读 2 分钟
3.1k
支持文件上传是web程序最基本和常见的需求。在早期的servlet规范中,实现文件上传需要使用第三方库或者复杂的输入处理。针对此问题,servlet现在以通用和可移植的方式帮助提供了一个可行的解决方案。servlet技术现在提供开箱即用的上传文件方法,所以任何实现规范的web容器都能通过HttpServletRequest 对象解析multipart...

销毁servlet

2019-04-21
阅读 3 分钟
1.9k
web容器可能决定一个Servlet是否从servic中移除(例如,当一个容器想要回收内存资源时或者被关闭时)。在上面的场景中,容器会调用Servlet接口的destroy方法。在方法中,可以释放servlet使用的任何资源,保存持久化状态。destroy方法关闭在init方法中创建的数据库对象。 当servlet被移除时,它的service方法必须全部执行...

Prometheus hotspot监控指标解读

2019-04-20
阅读 4 分钟
12.7k
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

维持客户端状态

2019-03-26
阅读 2 分钟
1.4k
许多应用都需要一个客户端的多个请求是相互关联。例如,一个web程序能在多个请求间保存用户的状态。基于web的应用程序都有维护这些状态的能力,因为HTTP是无状态的。为了支持这些,web应用程序需要维护状态,servlet技术提供了管理session的api,并且有几种实现会话的机制。

访问Web上下文

2019-03-26
阅读 1 分钟
1.3k
web组件的上下文是实现了ServletContext接口的一个对象。你可以通过getServletContext方法获取这个对象。这个对象提供了一些方法访问下列信息:

调用其他web资源

2019-03-26
阅读 2 分钟
1.5k
web组件可以直接或间接的调用其他web资源。一个web组件通过内嵌返回客户端内容的另一个web资源的url来间接调用其他web资源。在执行时,一个web资源通过包含另一个资源的内容或者转发请求到另一个资源直接调用。 调用运行web组件服务的一个有效的资源,必须首先通过getRequestDispatcher方法获得一个RequestDispatcher对...

Filter : 过滤请求和响应

2019-03-25
阅读 3 分钟
5.4k
filter对象可以改变请求和响应的头信息和内容信息。过滤器和web组件的不同之处在于,过滤器通常不会自行创建响应。作为替代,过滤器提供附加到任意类型的web资源的功能。因此,过滤器不该对要过滤的web资源有任何依赖。这样,它可以由多种web资源组成。 过滤器可以执行的主要任务如下:

编写Service方法

2019-03-25
阅读 2 分钟
1.5k
servlet提供的service方法实现了GenericServlet的service方法,在HttpServlet 对象的doMethod( Get, Delete, Options, Post, Put, or Trace) 方法中,或者在其他实现了Servlet接口的类的方法中。术语service method用来描述Servlet类中的任何能提供给客户端调用的方法的。 通常,service方法用来从请求中读取信息,访...

创建并初始化一个Servlet

2019-03-24
阅读 1 分钟
1.8k
可以在一个web程序中使用@WebServlet注解定义一个servlet组件。这个注解使用在类上并包含servlet定义的元数据。被注解的servlet必须指定一个url规则。这是由urlPatterns 或value属性完成的。其他属性都是可选的,有默认设置。当只有唯一一个url匹配规则时使用value属性;其他情况下,当其他属性使用时使用urlPatterns属...

共享信息

2019-03-23
阅读 1 分钟
1.2k
Web组件,和大多数对象一样,通常与其他对象一起完成他们的任务。Web组件实现共享通过下列步骤: 使用私有帮助对象(例如,JavaBeans组件) 共享公共范围的对象 使用数据库 调用其他web资源。Java Servlet 提供访问其他web资源的机制 Invoking Other Web Resources。 使用范围对象 web组件使用4种范围对象来共享信心。你...

Servlet生命周期

2019-03-23
阅读 3 分钟
1.2k
Servlet的生命周期是由它部署的容器控制的。当一个请求映射到一个Servlet,Servlet容器执行下面的步骤。 1 如果不存在这个Servlet的实例,容器执行: a. 加载Servlet类 b. 创建Servlet类实例 c. 通过调用init方法初始化Servlet(initialization is covered in Creating and Initializing a Servlet)2 容器调用Servlet的...

17.1 什么是Servlet?

2019-03-22
阅读 1 分钟
1.3k
一个Servlet是一个Java类,用来扩展托管请求-响应模型的应用程序的服务器的功能。尽管Servlet可以响应任何类型的请求,但通常用来扩展Web应用服务器托管的应用程序的功能。对于这些应用程序,Servlet定义了特定的Http协议的Servlet类。 javax.servlet和javax.servlet.http包提供了编写Servlet的类和接口。所有的Servlet...

JAVA EE 6官方教程-17 Java Servlet

2019-03-22
阅读 1 分钟
1k
Java Servlet技术使用请求-响应编程模型提供动态的面向用户的web应用程序。 这里将讨论一下主题: 什么是Servlet? Servlet的生命周期 信息共享 创建并初始化一个Servlet 编写Servlet方法 请求和响应过滤器 调用其他Web资源 访问Web上下文 维持客户端状态 不可变Servlet(?) 使用Servlet技术上传文件 异步请求处理 NIO...

Java反射-模块

2018-10-16
阅读 2 分钟
2.1k
Java模块反射教程将解释如何通过反射访问Java类所属的模块。模块的概念是Java 9Java Platform Module System添加的。一个Java模块是一个Java包的集合。因此,每一个类都属于一个包,且每一个包都属于一个模块。一个Java模块被java.base模块的反射类java.lang.Module 代表。通过这个类可以和Java模块系统交互,获得给定模...

Java反射-动态类加载和重新加载

2018-10-16
阅读 5 分钟
7.8k
Java中可以在运行时加载和重新加载类,虽然并不像我们想像中那么简单。本文将解释何时、怎样在Java中加载、重新加载类。你可以争论动态加载类是Java反射的一部分还是Java核心的一部分。不管怎样,我把它放在了Java反射中,因为没有更好的地方放置它。

Java反射-动态代理

2018-10-15
阅读 3 分钟
2.1k
使用反射可以在运行时动态实现接口。这可以使用类java.lang.reflect.Proxy。这个类的名称是我将这些动态接口实现称之为动态代理的原因。动态代理有多种不同的用途,例如,数据库连接和事务管理、用于单元测试的动态模拟对象、其他类似AOP的方法拦截。

Java反射-数组

2018-10-12
阅读 3 分钟
5.5k
通过反射使用数组有时会比较棘手。特别是需要获得一个特定类型数组的Class对象,如int[]等。本文将讨论如何通过反射创建数组和获得他们的Class对象。注意:本文在阅读Eyal Lupu的博客"Two Side Notes About Arrays and Reflection" 后已更新,他的博客是本文第一个版本的评论。当前版本考虑了他的评论内容。

Java反射-范型

2018-10-12
阅读 3 分钟
1.4k
我经常在文章或论坛中读到所有的Java范型信息都会在编译时搽除,所以不能在运行时访问范型的任何信息。这并不完全准确。某些案例下可以在运行时访问范型信息,这些案例实际上覆盖了我们对范型信息的一些需求。本文将解释这些案例。

Java反射-注解

2018-09-30
阅读 4 分钟
1.5k
注解是Java5的新特性。注解是可以添加到Java代码中的一种注释或者说是元数据。注解可以使用预编译工具在编译时处理,或者通过反射在运行时处理。下面是类注解的示例:

Java反射-私有属性和方法

2018-09-30
阅读 3 分钟
5.2k
尽管普遍认知是,实际可以通过反射访问其他类的私有属性和方法。它甚至并不难。这个特性在单元测试中特别有用。本文将告诉你如何做。注意:这只能在单体Java应用程序中运行,比如单元测试和常规程序。如果你尝试在Java Applet程序中使用,可能需要注意SecurityManager问题。但是,你并不常做这些操作,并且到目前为止已...

Java反射-Getters and Setters

2018-09-28
阅读 1 分钟
1.5k
使用反射可以在运行时检视类的方法并调用它们。这被用来发现类的getters和setters。你不能直接得到getters和setters,必须扫描类所有的方法并依次检查是否getter或setter。首先,我们需要建立getters和setters方法的特征:

Java反射-方法

2018-09-25
阅读 2 分钟
1.1k
使用反射可以检视类的方法,并在运行时调用。这是通过类java.lang.reflect.Method实现的。本文将深入介绍Method对象。

Java反射-属性

2018-09-25
阅读 1 分钟
1.4k
使用反射可以检视类属性(成员变量),并且可以在运行时get/set。这些是通过类java.lang.reflect.Field实现的。本文将详细介绍javaField对象。别忘了参考Sun的JavaDoc。

Java反射-构造函数

2018-09-25
阅读 1 分钟
4.1k
使用反射可以检视类的构造函数,并且能在运行时实例化对象。这些是通过java 类java.lang.reflect.Constructor实现的。本文将更详细的介绍Constructor类。

java反射-类

2018-09-18
阅读 3 分钟
1.2k
使用反射可以在运行时检视Java类。检视类通常是使用反射时所做的第一件事情。从类中可以获得下面的信息。 类名 类修饰符(private、public、synchronized等) 包信息 超类 所实现的接口 构造函数 方法 属性 注解 Java类中附加了很多信息,你可以在JavaDoc for java.lang.Class获得一个完整列表。本文将简要接触访问所有...

Java 反射教程

2018-09-17
阅读 2 分钟
2.4k
Java反射可以在运行时检视类、接口、属性和方法,而无需在编译时知道类名、方法名等等。它也同样使用反射支持实例化新的对象、调用方法和get/set属性值。 Java反射非常强大和有用。例如, Java反射可以用在映射JSON文件的属性到Java 对象的get/set方法,如Jackson、Gosn、Boon等库的实现。另外,反射可以用在映射JDBC结...

Broadleaf概念

2018-09-11
阅读 3 分钟
2.5k
本部分是可以找到有关Broadleaf功能和概念的大部分信息的地方。我们描述了购物车修改,定价和付款等操作的重要性,以及Broadleaf支持的其他配置。请使用左侧的菜单浏览本文档。

从外部连接Broadleaf Demo数据库

2018-08-28
阅读 1 分钟
1.3k
有许多数据库客户端允许您连接到数据库和管理数据。我们建议使用免费的SQL客户端DBeaver。 DBeaver是一个基于eclipse的跨平台数据库客户端,它使用JDBC连接到数据库,这允许您连接到多个不同的数据库并在同一客户端中管理所有这些数据库。