zoukankan      html  css  js  c++  java
  • Java Servlet(一):创建工程(jdk7+tomcat7+eclipse)

    本篇文件主要记录下怎么在jdk7+tomcat7下,使用eclipse创建并运行一个servlet工程。

    安装具体步骤从网上搜索就可以找到,这里不再赘述。

    在eclipse中切换到j2ee下,

    从导航菜单windows下找到show view选项,并在show view下找到server。

    在server中创建tomcat server。

    并从导航菜单file下找->new->dynamic web project.

    在project name中输入工程名称MyServlet001

    一直下一步,一直到如下步骤:

    这里一定要记得勾选Generate web.xml deployment description选项,否则在/WebContent/Web-INF/下会缺少web.xml文件。

    新建好的工程结构如下:

    我们在src中添加包com.dx.hello,并创建java类HelloServlet.class,并让该类实现servlet的init,service,distory,getServletConfig,getServletInfo函数,并添加HelloServlet类的构造函数,并在每个函数内部输出函数的名称。

     1 package com.dx.hello;
     2 
     3 import java.io.IOException;
     4 import javax.servlet.Servlet;
     5 import javax.servlet.ServletConfig;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.ServletRequest;
     8 import javax.servlet.ServletResponse;
     9 
    10 public class HelloServlet implements Servlet {
    11     public HelloServlet() {
    12         System.out.println("HelloServlet constructor");
    13     }
    14 
    15     public void init(ServletConfig config) throws ServletException {
    16         System.out.println("init");
    17     }
    18 
    19     public void destroy() {
    20         System.out.println("destroy");
    21     }
    22 
    23     public ServletConfig getServletConfig() {
    24         System.out.println("getServletConfig");
    25         return null;
    26     }
    27 
    28     public String getServletInfo() {                         
    29         System.out.println("getServletInfo");
    30         return null;
    31     }
    32 
    33     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
    34         System.out.println("service");
    35     }
    36 
    37 }

    修改配置文件web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xmlns="http://java.sun.com/xml/ns/javaee"
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     5     id="WebApp_ID" version="3.0">
     6     
     7     <!-- 配置和映射 servlet -->
     8     <servlet>
     9         <!-- Servlet注册的名字 -->
    10         <servlet-name>helloServlet</servlet-name>
    11         <!-- Servlet全类名 -->
    12         <servlet-class>com.dx.hello.HelloServlet</servlet-class>
    13     </servlet>
    14     <servlet-mapping>
    15         <!-- 对应servlet节点下的servlet-name的注册名字一致 -->
    16         <servlet-name>helloServlet</servlet-name>
    17         <!-- 映射具体的访问路径,其中/代表当前web的根目录 -->
    18         <url-pattern>/hello</url-pattern>
    19     </servlet-mapping>
    20     
    21 </web-app>

    启动tomcat,在浏览器中输入http://localhost:8080/MyServlet001/hello.回车将会在浏览器中出现一个空白页面。

    这是我们在eclipse中查看tomcat日志信息会发现如下信息:

    。。。
    INFO: Command line argument: -Dfile.encoding=GBK
    二月 27, 2016 10:10:44 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:javajdk1.6jre7in;C:WindowsSunJavain;C:Windowssystem32;C:Windows;D:/Program Files/Java/jdk1.7.0_79/bin/../jre/bin/server;D:/Program Files/Java/jdk1.7.0_79/bin/../jre/bin;D:/Program Files/Java/jdk1.7.0_79/bin/../jre/lib/amd64;E:SourceCodelihuiNetworkLTEPlanDesktopLTEPlanDesktop-ZJDTGroup.LTEPlanDesktop.WinUIReferencesSuperMap;D:Program FilesJavajdk1.7.0_79in;D:Program FilesJavajdk1.7.0_79jrein;D:javaaxis2-1.6.3in;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;D:Program Files (x86)Microsoft SQL Server100ToolsBinn;D:Program FilesMicrosoft SQL Server100ToolsBinn;D:Program FilesMicrosoft SQL Server100DTSBinn;D:Program Files (x86)Microsoft SQL Server100ToolsBinnVSShellCommon7IDE;C:Program Files (x86)Microsoft Visual Studio 9.0Common7IDEPrivateAssemblies;D:Program Files (x86)Microsoft SQL Server100DTSBinn;D:Program Files (x86)scalain;C:Program FilesMicrosoft SQL Server110ToolsBinn;C:Program Files (x86)scalain;C:Program FilesMicrosoftWeb Platform Installer;%USERPROFILE%.dnxin;C:Program FilesMicrosoft DNXDnvm;d:AppServphp5.5;;D:javaeclipse-jee-mars-1-win32-x86_64eclipse;;.
    二月 27, 2016 10:10:44 下午 org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["http-bio-8080"]
    二月 27, 2016 10:10:44 下午 org.apache.coyote.AbstractProtocol init
    INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
    二月 27, 2016 10:10:44 下午 org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 1481 ms
    二月 27, 2016 10:10:44 下午 org.apache.catalina.core.StandardService startInternal
    INFO: Starting service Catalina
    二月 27, 2016 10:10:44 下午 org.apache.catalina.core.StandardEngine startInternal
    INFO: Starting Servlet Engine: Apache Tomcat/7.0.65
    二月 27, 2016 10:10:46 下午 org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["http-bio-8080"]
    二月 27, 2016 10:10:46 下午 org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler ["ajp-bio-8009"]
    二月 27, 2016 10:10:46 下午 org.apache.catalina.startup.Catalina start
    INFO: Server startup in 1379 ms
    HelloServlet constructor
    init
    service

    之后,再eclipse中停止tomcat server服务,将会发下tomcat server日志信息:

    二月 27, 2016 10:12:45 下午 org.apache.catalina.core.StandardServer await
    INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
    二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["http-bio-8080"]
    二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol pause
    INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
    二月 27, 2016 10:12:45 下午 org.apache.catalina.core.StandardService stopInternal
    INFO: Stopping service Catalina
    destroy
    二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol stop
    INFO: Stopping ProtocolHandler ["http-bio-8080"]
    二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol stop
    INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
    二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["http-bio-8080"]
    二月 27, 2016 10:12:45 下午 org.apache.coyote.AbstractProtocol destroy
    INFO: Destroying ProtocolHandler ["ajp-bio-8009"]

    不错,上边日志信息标示为红色的字体信息,正是HelloServlet.java函数中打印出来的信息,这整个过程也就是从一个servlet的初始化,到结束的整个生命周期,而tomcat正是管理servlet生命周期的一个容器。

    Servlet工作原理:

    web.xml是一个必须必须配置的,如果访问的路径:http://localhost:8080/MyServlet001/hello,tomcat会根据配置的web.xml信息找到对应的servlet-mapping集合,并根据该集合中的servlet-name找到servlet节点下的servlet-class选项,并调用该类的中的对应函数信息,实现与客户端接收与相应工作。

    从Servlet工作原理中我们也可以发下,tomcat就是servlet的一个运行容器,它控制了servlet的整个生命周期。

    下章节,我们记录servlet怎么使用及它的工作原理相关细节。

  • 相关阅读:
    Quartz.net 定时任务在IIS中未按时执行
    扩展方法
    mysql 实用语句
    jquery each map
    js匿名函数多时注意
    ASP.NET MVC3调用分部视图
    eclipse快捷键
    regular 点滴
    适配器模式
    php代码实现简单图片下载
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/5223825.html
Copyright © 2011-2022 走看看