JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Servlet/JSP 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
己加入精華區
by browser at 2006-04-29 13:21
本主題所含的標籤
無標籤
作者 [Servlet] hello servlet 新手練習篇 [精華]
qrtt1





發文: 1747
積分: 31
於 2006-04-29 12:37 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Hello all, 弟最近在學習網頁相關的技術。
但servlet雖然已經是非常古老的議題了,但自己始終沒有去面對Disapproved
這樣下去是不行的>"<
所以趁週末有空來為自己整理一下。
雖然有點老掉牙,俺還是由hello foo開始吧 ^^

[文章的風格]
因為俺最servlet深入的部分也不太了解,但是書上大致上都有說明。
不過讓此等膽小鬼無法提膽欲試的原因是: 對於整個流程和要做的事情不太明白。
所以,本文以指導性較高的流程指引來撰寫。

[工作流程]
1. servlet開發
2. 撰寫Deployment Descriptor (傳說中的web.xml)
3. 打開網頁一下測試

嗯,沒錯! 只有3個簡單的部分。
1和2是可以交換順序的,不過一般來說沒有事先設計好的話,
應該還是先寫servlet再來寫DD檔比較實際一點。

[servlet開發]
servlet開發簡單來說,繼承HttpServlet類別,覆寫doGet或doPost方法。
(再說下去俺的瓶子就見底了xd) 直接來看我們的HelloServlet class吧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
 
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class HelloServlet extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    PrintWriter out = response.getWriter();
    Date today = new Date();
    out.println("<html><body><h1> Hello Servlet " + today
        + "</h1></body></html>");
  }
}


* 編譯時別忘了在classpath中加入servlet-api.jar
* 編譯好後請放在web context的WEB-INF/classes子目錄中

[撰寫Deployment Descriptor]
Deployment Descriptor也就放在Web Context目錄下的WEB-INF/web.xml檔。

* 如果您沒新增Web Context請自行新增一個唄
* 如果您沒有web.xml檔,
以tomcat為例: 請偷拿一下tomcat_home/conf/web.xml檔,
刪除不需要的部分,即可當成我們要的template
1
2
3
4
5
6
7
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 
</web-app>


有了web.xml的範本後,我們就以加上<servlet>和<servlet-mapping>
設定我們剛剛撰寫好的servlet。

俺的設定如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 
    <servlet>
        <servlet-name>foo</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>foo</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
 
</web-app>


<servlet>和<servlet-mapping>都有一樣的nested element : <servlet-name>
他的功用是讓<servlet>和<servlet-mapping>能配成一對,只要"名字"一樣的就是一組。
<servlet>是寫給我們的web container看得,讓他知道現在我們有一個foo.foo.foo.fooServlet
依慣例foo代表的是一個使用者寫好的識別字,如同實際的開發情形。
有一長串的package name是司空見慣的事情,所以在DD檔中,幫servlet-name取個"小名"
<servlet-mapping>則是為了使用者寫的,讓使用者在網頁上寫出
http://www.foo.tw/web_context_name/test 時能呼叫到小名為foo的servlet,
而foo就是HelloServlet。

* servlet-name要成對出現呦
* 幫servlet取名字,基本上和為變數取名差不多儘量有意義些
* url-pattern設定時,路徑最前前的/ 不可以省略呦

[測試]
測試,大致上只要打開網頁能看到您hell servlet的結果。應該就是正確的了^^


qrtt1 edited on 2006-04-29 12:43
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
14654 [精華] [Servlet] hello servlet 新手練習篇 qrtt1 2923 2006-04-29 12:37
11799 Re:[Servlet] hello servlet 新手練習篇 yxm4720 85 2006-05-02 14:58
12054 Re:[Servlet] hello servlet 新手練習篇 qrtt1 228 2006-05-02 16:37
9479 Re:[Servlet] hello servlet 新手練習篇 皇宇t 637 2007-04-05 11:45
9452 Re:[Servlet] hello servlet 新手練習篇 koji 72 2007-04-05 14:09
7558 Re:[Servlet] hello servlet 新手練習篇 mkcup 612 2007-10-01 21:15
7781 Re:[Servlet] hello servlet 新手練習篇 mkcup 36 2007-10-01 23:51
7247 Re:[Servlet] hello servlet 新手練習篇 qrtt1 23 2007-10-24 22:26
3804 Re:[Servlet] hello servlet 新手練習篇 mkcup 62 2009-03-18 07:55
» JWorld@TW »  Servlet/JSP 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8