Servlet处理日期 Servlet 文件上传 Servlet 请求重定向 Servlet 处理日期 使用 Servlet 的最重要的优势之一是,可以使用核心 Java 中的大多数可用的方法。本章将讲解 Java 提供的 java.util 包中的 Date 类,这个类封装了当前的日期和时间。 Date 类支持两个构造函数。第一个构造函数初始化当前日期和时间的对象。 Date() 下面的构造函数接受一个参数,该参数等于 1970 年 1 月 1 日午夜以来经过的毫秒数。 Date(long millisec) 一旦您有一个可用的 Date 对象,您可以调用下列任意支持的方法来使用日期: 序号方法 & 描述 1boolean after(Date date)如果调用的 Date 对象中包含的日期在 date 指定的日期之后,则返回 true,否则返回 false。 2boolean before(Date date)如果调用的 Date 对象中包含的日期在 date 指定的日期之前,则返回 true,否则返回 false。 3Object clone( )重复调用 Date 对象。 4int compareTo(Date date)把调用对象的值与 date 的值进行比较。如果两个值是相等的,则返回 0。如果调用对象在 date 之前,则返回一个负值。如果调用对象在 date 之后,则返回一个正值。 5int compareTo(Object obj)如果 obj 是 Date 类,则操作等同于 compareTo(Date)。否则,它会抛出一个 ClassCastException。 6boolean equals(Object date)如果调用的 Date 对象中包含的时间和日期与 date 指定的相同,则返回 true,否则返回 false。 7long getTime( )返回 1970 年 1 月 1 日以来经过的毫秒数。 8int hashCode( )为调用对象返回哈希代码。 9void setTime(long time)设置 time 指定的时间和日期,这表示从 1970 年 1 月 1 日午夜以来经过的时间(以毫秒为单位)。 10String toString( )转换调用的 Date 对象为一个字符串,并返回结果。 获取当前的日期和时间 在 Java Servlet 中获取当前的日期和时间是非常容易的。您可以使用一个简单的 Date 对象的 toString() 方法来输出当前的日期和时间,如下所示: package com.xxkt; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/TestDate") public class TestDate extends HttpServlet { private static final long serialVersionUID = 1L; public TestDate() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间-编程字典(CodingDict.com)"; Date date = new Date(); String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<h2 align=\"center\">" + date.toString() + "</h2>\n" + "</body></html>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 程序运行结果 日期比较 正如上面所提到的,您可以在 Servlet 中使用所有可用的 Java 方法。如果您需要比较两个日期,以下是方法: 您可以使用 getTime() 来获取两个对象自 1970 年 1 月 1 日午夜以来经过的时间(以毫秒为单位),然后对这两个值进行比较。 您可以使用方法 before()、after() 和equals()。由于一个月里 12 号在 18 号之前,例如,new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回 true。 您可以使用 compareTo() 方法,该方法由 Comparable 接口定义,由 Date 实现。 使用 SimpleDateFormat 格式化日期 SimpleDateFormat 是一个以语言环境敏感的方式来格式化和解析日期的具体类。 SimpleDateFormat 允许您选择任何用户定义的日期时间格式化的模式。 让我们修改上面的实例,如下所示: package com.xxkt; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/FormatDate") public class FormatDate extends HttpServlet { private static final long serialVersionUID = 1L; public FormatDate() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "显示当前的日期和时间-编程字典(CodingDict.com)"; Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss E a "); String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<h2 align=\"center\">" + ft.format(dNow) + "</h2>\n" + "</body></html>"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 运行结果 简单的日期格式的格式代码 使用事件模式字符串来指定时间格式。在这种模式下,所有的 ASCII 字母被保留为模式字母,这些字母定义如下: 字符描述实例 GEra 指示器AD y四位数表示的年2001 M一年中的月July 或 07 d一月中的第几天10 h带有 A.M./P.M. 的小时(1~12)12 H一天中的第几小时(0~23)22 m一小时中的第几分30 s一分中的第几秒55 S毫秒234 E一周中的星期几Tuesday D一年中的第几天360 F所在的周是这个月的第几周2 (second Wed. in July) w一年中的第几周40 W一月中的第几周1 aA.M./P.M. 标记PM k一天中的第几小时(1~24)24 K带有 A.M./P.M. 的小时(0~11)10 z时区Eastern Standard Time 'Escape for textDelimiter "单引号` 如需查看可用的处理日期方法的完整列表,您可以参考标准的 Java 文档。 Servlet 文件上传 Servlet 请求重定向