天天看點

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

本篇檔案主要記錄下怎麼在jdk7+tomcat7下,使用eclipse建立并運作一個servlet工程。

安裝具體步驟從網上搜尋就可以找到,這裡不再贅述。

在eclipse中切換到j2ee下,

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

從導航菜單windows下找到show view選項,并在show view下找到server。

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)
Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

在server中建立tomcat server。

并從導航菜單file下找->new->dynamic web project.

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

在project name中輸入工程名稱MyServlet001

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

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

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

這裡一定要記得勾選Generate web.xml deployment description選項,否則在/WebContent/Web-INF/下會缺少web.xml檔案。

建立好的工程結構如下:

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

我們在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:\java\jdk1.6\jre7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;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:\SourceCode\lihui\Network\LTEPlanDesktop\LTEPlanDesktop-ZJ\DTGroup.LTEPlanDesktop.WinUI\References\SuperMap\;D:\Program Files\Java\jdk1.7.0_79\bin;D:\Program Files\Java\jdk1.7.0_79\jre\bin;D:\java\axis2-1.6.3\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\Tools\Binn\;D:\Program Files\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;D:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;D:\Program Files (x86)\scala\bin;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\scala\bin;C:\Program Files\Microsoft\Web Platform Installer\;%USERPROFILE%\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;d:\AppServ\php5.5;;D:\java\eclipse-jee-mars-1-win32-x86_64\eclipse;;.
二月 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生命周期的一個容器。

Java Servlet(一):建立工程(jdk7+tomcat7+eclipse)

Servlet工作原理:

web.xml是一個必須必須配置的,如果通路的路徑:http://localhost:8080/MyServlet001/hello,tomcat會根據配置的web.xml資訊找到對應的servlet-mapping集合,并根據該集合中的servlet-name找到servlet節點下的servlet-class選項,并調用該類的中的對應函數資訊,實作與用戶端接收與相應工作。

從Servlet工作原理中我們也可以發下,tomcat就是servlet的一個運作容器,它控制了servlet的整個生命周期。

下章節,我們記錄servlet怎麼使用及它的工作原理相關細節。