首页 > 代码库 > 二、Java Web -- 使用servlet显示服务器时间

二、Java Web -- 使用servlet显示服务器时间

一、在项目下创建如下包、及servlet

技术分享

 

技术分享

技术分享

 生成servlet如下:

@WebServlet(name="TimmerServlet" ,urlPatterns = "/showtime.do" )
public class TimmerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public TimmerServlet() {
       super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
          // 设置刷新自动加载的事件间隔为 1 秒
          response.setIntHeader("Refresh", 1);
          // 设置响应内容类型
          response.setContentType("text/html");
     
          // 获取当前的时间
          Calendar now = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
     
          PrintWriter out = response.getWriter();
          
          out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
          out.println("<HTML>");
          out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
          out.println("  <BODY>");
          out.print(now.getTime());
          out.println("  </BODY>");
          out.println("</HTML>");
          out.flush();
          out.close();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
        doGet(request, response);
    }

}

 

 

二、@WebServlet注解

在servlet3.0下,提供了WebServlet的注解,可以取代在web.xml下配置<servlet>、<servlet-mapping>的步骤。

注解源码如下:

package javax.servlet.annotation;

import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ java.lang.annotation.ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {
    
    //指定 Servlet 的 name 属性,等价于 <servlet-name>。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。
    public abstract String name();
    
    //该属性等价于 urlPatterns 属性。两个属性不能同时使用。
    public abstract String[] value();

    //指定一组 Servlet 的 URL 匹配模式。等价于 <url-pattern> 标签。
    public abstract String[] urlPatterns();

    //指定 Servlet 的加载顺序,等价于 <load-on-startup> 标签。
    public abstract int loadOnStartup();

    //指定一组 Servlet 初始化参数,等价于 <init-param> 标签。
    public abstract WebInitParam[] initParams();

    //声明 Servlet 是否支持异步操作模式,等价于 <async-supported> 标签。
    public abstract boolean asyncSupported();
   
    public abstract String smallIcon();

    public abstract String largeIcon();

    //该 Servlet 的描述信息,等价于 <description> 标签。
    public abstract String description(); 
    
    //该 Servlet 的显示名,通常配合工具使用,等价于 <display-name> 标签。
    public abstract String displayName();
}

 

二、urlPatterns通配符

匹配方法只有三种,要么是路径匹配(以“/”字符开头,并以“/*”结尾),要么是扩展名匹配(以“*.”开头),要么是精确匹配,三种匹配方法不能进行组合,不要想当然使用通配符或正则规则。

  如<url-pattern>/user/*.action</url-pattern>是非法的

  另外注意:<url-pattern>/aa/*/bb</url-pattern>是精确匹配,合法,这里的*不是通配的含义

<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/action/*</url-pattern>
</servlet-mapping>

 

三、启动Tomcat,键入http://localhost:8080/jeb/showtime.do,可以看到每一秒钟显示一下服务器时间

技术分享

 

二、Java Web -- 使用servlet显示服务器时间