- 浏览: 141421 次
- 性别:
- 来自: 深圳
最新评论
-
freesea:
不错,还没注意java 7已经增加了这么多类了
[NIO.2] 第十篇 NIO.2 中的文件属性 -
SpringJava:
有个问题,想请教一下楼主:在代码中经常看到try catch语 ...
[NIO.2] 第二十九篇 删除、复制、移动目录和文件 -
xiaohu7924:
高
什么是 Java ? -
jiiming:
这种方法可以借鉴
[Java EE 7] Servlet 异步支持 -
cucaracha:
jahu 写道有中文文档没有啊。请留意我的博客:http:// ...
Java EE 7 技术一览
文章列表
web fragment 文件可以是一部分或者全部的 web.xml 文件,它放在工程或者 jar 包的 META-INF 文件夹下。Web 容器将会自动加载全部的 web fragment 文件,而不需要开发者参与。
它可以定义几乎全部 web.xml 文件可以定义的内容。但它的根元素是 web-fragment,并且文件名必须是 web-fragment.xml。有了 web fragment 可以对应用程序做更好的逻辑分离。
<web-fragment>
<filter>
<filter-name>MyFilter</filt ...
调用 Files.readSymbolicLink() 方法可以返回链接所指向的目标文件的 Path 对象。这个方法接受一个 Path 类型的参数,这个参数必须是一个链接,否则会抛出 NotLinkException 异常。
调用 Files.isSameFile() 方法可以判断链接和文件是否指向同一文件。
下面的例子中,链接为 rafael.nadal.6,目标文件是 C:\rafaelnadal\photos\rafa_winner.jpg,随后读取了链接指向的文件位置,并判断了链接是否与文件是否指向同一文件。
Path link = FileSystems.getDefault() ...
Path 对象可能表示文件或链接。如果 Path 对象指向软链接,可以调用 Files.isSymbolicLink() 方法来进行判断,这个方法接收一个 Path 类型的参数,并返回 boolean 值。下面的代码创建了一个名为 rafael.nadal.5 的软链接,并指向 C:\rafaelnadal\photos\rafa_winner.jpg 文件,随后校验了 Path 对象。
…
Path link = FileSystems.getDefault().getPath("rafael.nadal.5");
Path target = FileSystem ...
可以调用 createLink() 方法创建硬链接,它将会创建已存在文件的硬链接。这个方法返回新链接的 Path 对象,你可以使用这个 Path 对象来访问文件。
如果你的文件系统不支持硬链接,那么将会抛出 UnsupportedOperationException 异常。另外,要记住,硬链接只能为已存在的文件创建。
下面的代码演示了如何创建一个硬链接,名为 rafael.nadal.4 目标文件为 C:\rafaelnadal\photos\rafa_winner.jpg(这个文件必须存在,并且文件系统必须有创建硬链接的权限)。
import java.io.IOException;
...
在 NIO.2 中,创建软链接非常简单,只需要调用 Files.createSymbolicLink() 方法即可。这个方法需要传入软链接和目标文件的 Path 对象,并且可以传入一组文件属性,返回软链接的 Path 对象。
如果你的文件系统不支持软链接,那么将会抛出 UnsupportedOperationException 异常。记住,目标文件可以使用绝对路径也可以使用相对路径来定义,并且目标文件本身可以存在也可以不存在。
下面的代码将会简单创建一个拥有默认属性的软链接。软链接名为 rafael.nadal.1 目标文件文件为 C:\rafaelnadal\photos\rafa_win ...
Servlet 3.0 虽然支持异步请求处理,但却只允许使用传统 I/O,这会限制应用程序的可扩展性。在普通的应用程序中,ServletInputStream 是在 while 循环中进行读取:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
ServletInputStream input = request.getInputStream();
byte[] b = new byte[ ...
服务器资源非常宝贵,因此需要节省开销。比如 servlet 需要等待数据库查询数据、等待生成报表、等待读取文件系统数据,等等。这些“长时间处理”将会完全地占用容器线程,于是,这些被占用的线程将无法再接收其它的请求,这对于珍贵的服务器资源来说,并没有做到最佳优化。
这些需要“长时间处理”的地方我们可以使用异步处理来进行优化,servlet 接收到请求后,开启新的线程来进行长时间处理,并将容器线程返还给容器,这样容器线程就可以继续接收其它请求,等长时间运行的线程执行完成后,再使用和请求相同的容器线程响应到客户端。
异步行为需要显示地在 servlet 中声明,可以在 @WebServlet 中添 ...
事件监听器提供了 ServletContext、HttpSession 和 ServletRequest 对象生命周期的回掉事件。
事件监听器类需要实现接口,用于接收这些对象状态发生改变时所发出的通知。
每个监听器都可以通过 @WebListener、或 web.xml、 或 ServletContext.addListener 方法来进行注册。
同一个事件,可能注册了多个监听器进行监听,容器会按照监听器的顺序依次调用监听器的方法。但是在应用程序关闭的时候,监听器会反序调用。
实现 ServletContextListener 用于监听 servlet 上下文的初始化和销毁:
@We ...
Windows 用户可以通过命令行的 mklink 命令来创建软链接或硬链接。这个命令有很多选项可用,部分选项列举如下:
/D 创建目录的软链接,默认创建的是文件软链接。
/H 创建硬链接。
/J 创建目录节点(Junction)。
Link 定义新的符号链接名。
Target 指定符号链接指向的文件路径(可以是相对或绝对路径)。
例如,如果要创建 C:\rafaelnadal\photos 文件夹的软链接 C:\rafaelnadal,那么需要使用下面的命令:
mklink /D C:\rafael ...
Filter 可以用来更改请求和响应的数据。有一点非常重要的就是,Filter 自己不会产生响应,它只能更改和调整请求和响应数据。Filter 最普遍的用途是用户鉴权、日志、数据压缩、数据转码等。Filter 和 Servlet 一起打包部署,并作用 ...
Servlet 的规范是 JSR 340,完整的规范内容可以到这里下载。
Servlet 是放在 servlet 容器中的 Web 组件,可以生成动态内容。客户端通过请求/响应的方式来访问 Servlet。Servlet 容器负责管理 servlet 的生命周期,接收请求并发送响应,以及编码/解码等其它工作。
定义 servlet 需要使用到 @WebServlet 注释,并且需要继承 javax.servlet.http.HttpServlet 类。
下面是定义 servlet 的例子:
@WebServlet("/account")
public class A ...
Java EE 7 简介
Java EE 7 平台规范基于 JSR 342,JCP 版本是 2.9。Java EE 7 包含了跨平台使用的平台规范,也包含了下面的组件规范:
Web 技术
JSR 45: Debugging Support for Other Languages 1.0
JSR 52: Standard Tag Library for JavaServer Pages (JSTL) 1.2
JSR 245: JavaServer Pages (JSP) 2.3
JSR 340: Servlet 3.1
JSR 341: Expres ...
对于 Unix 用户(特别是管理员)来说,要非常熟悉链接的概念。链接分为两种:软链接(符号链接)和硬链接。如果你是 Windows 用户,可能对链接不是很熟悉,但是 Windows 系统却完全支持它们,尤其是软链接,在 Windows 中通常叫做快捷方式。
NIO.2 同时支持这两种链接,每个 Path 类的方法都能判断当前文件是否为链接,并且按你的要求做相应的处理。
链接简介
当你只通过文件名就能得到文件,而不需要经过层层目录的时候,那么这个文件就被称为链接。链接分为软链接(符号链接)和硬链接。当一个文件的两个名字具有相同的权重,并且在索引节点表(inode table,在 Linux 中 ...
如果你发现 NIO.2 内置的属性视图不能满足你的要求,或者你想给文件设置某些特殊的属性,那么你可以使用自定义属性视图。NIO.2 提供了 UserDefinedFileAttributeView 接口来支持这个功能。使用这个视图,你可以添加任何你认为有用的 ...
如果将电脑看作文件存储的容器,那么有很多类型的文件存储,例如:分区、硬盘、卷标,等等。NIO.2 中可以通过 FileStore 这个抽象类来得到每种类型的文件存储信息。你可以获取文件存储的名字、类型、总空间、已用空间和剩余空间。
获得所有文件存储的属性
首先调用 FileSystems.getDefault() 方法获取默认文件系统,然后再调用 FileSystem.getFileStores() 方法得到文件存储列表。列表中的每个对象都是 FileStore 类型,可以调用上面的 name(),type(),getTotalSpace() 等方法来获取文件存储的信息。下面的代码片段将打印 ...