Changes between Version 10 and Version 11 of waue/2010/0608


Ignore:
Timestamp:
Jun 8, 2010, 4:46:59 PM (14 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2010/0608

    v10 v11  
    3030 * 2.1.1~ 2.1.3 的範例 (p2-1~p2-10)
    3131
     32  == 2.0 ==
     33 
     34  * 專案目錄將呈現以下結構
     35  || /opt/tomcat/webapps/servlet1 || || || || ||
     36  || + || WEB-INF/ || || || ||
     37  || || - || web.xml ||  ||  ||
     38  || || + || classes ||  ||  ||
     39  || || || - || HelloServlet.java ||  ||
     40 
    3241  == 2.1 建立目錄 ==
    3342 
     
    3746cd /opt/tomcat/webapps/
    3847mkdir -p /opt/tomcat/webapps/servlet1/WEB-INF/classes
    39 mkdir /opt/tomcat/webapps/servlet1/WEB-INF/lib
    4048}}}
    4149
     
    137145 = 範例二 =
    138146
    139  * 2.1.4 的範例 (p2-10 ~ p2-11)
     147 * 此範例對應到手冊 2.1.4 的範例 (p2-10 ~ p2-11)
    140148 
     149 
    141150  == 2.1 管理網頁帳號 ==
    142151{{{
     
    185194
    186195 == 練習 ==
    187  ,將專案建立、開啟、停止、移除
     196 透過網頁介面,將專案分別進行[[br]]
     197 1. 停止 2. 開啟 3. 移除
    188198 
    189   = 範例三 =
     199 = 範例三 =
    190200 * 2.2 節 (p2-11~p2-20)
     201  == 3.0 ==
     202 
     203  * 專案目錄將呈現以下結構
     204  || /opt/tomcat/webapps/servlet3 || || || || ||
     205  || - || hello.jsp|| || || ||
     206  || + || WEB-INF/ || || || ||
     207  || || - || web.xml ||  ||  ||
     208  || || + || classes ||  ||  ||
     209  || || || - || HelloServlet.java ||  ||
     210  || || || - || Hello.java ||  ||
     211
     212 
     213  == 3.1 建立control:HelloServlet.java ==
     214 
     215{{{
     216cd /opt/tomcat/webapps/
     217mkdir -p /opt/tomcat/webapps/servlet3/WEB-INF/classes
     218cd /opt/tomcat/webapps/servlet3/WEB-INF/classes
     219gedit HelloServlet.java
     220}}}
     221
     222{{{
     223#!java
     224import java.io.IOException;
     225import javax.servlet.ServletException;
     226import javax.servlet.http.HttpServlet;
     227import javax.servlet.http.HttpServletRequest;
     228import javax.servlet.http.HttpServletResponse;
     229public class HelloServlet extends HttpServlet {
     230    private Hello hello;
     231    public HelloServlet() {
     232        hello = new Hello();
     233    }
     234         protected void doGet(HttpServletRequest request,
     235                               HttpServletResponse response)
     236                            throws ServletException, IOException {
     237              String name = request.getParameter("user");
     238              String message = hello.doHello(name);
     239              request.setAttribute("message", message);
     240              request.getRequestDispatcher("hello.jsp").forward(request, response);
     241         }
     242}
     243}}}
     244
     245  == 3.2 建立model:Hello.java ==
     246{{{
     247gedit /opt/tomcat/webapps/servlet3/WEB-INF/classes/Hello.java
     248}}}
     249
     250{{{
     251#!java
     252import java.util.*;
     253public class Hello {
     254    private Map<String, String> messages;
     255    public Hello() {
     256        messages = new HashMap<String, String>();
     257        messages.put("caterpillar", "Hello");
     258        messages.put("Justin", "Welcome");
     259        messages.put("momor", "Hi");
     260    }
     261  public String doHello(String user) {
     262      String message = messages.get(user);
     263      return message + ", " + user + "!";
     264  }
     265}
     266
     267}}}
     268
     269
     270  == 3.3 建立view:hello.jsp ==
     271{{{
     272gedit /opt/tomcat/webapps/servlet3/hello.jsp
     273}}}
     274
     275{{{
     276#!java
     277<%@page contentType="text/html" pageEncoding="UTF-8"%>
     278<html>
     279    <head>
     280        <meta http-equiv="Content-Type"
     281              content="text/html; charset=UTF-8">
     282        <title>${param.user}</title>
     283    </head>
     284    <body>
     285        <h1>${message}</h1>
     286    </body>
     287</html>
     288}}}
     289這個jsp檔為servlet所respone的呈現頁
     290
     291  == 3.4 佈署web容器:web.xml ==
     292{{{
     293gedit /opt/tomcat/webapps/servlet3/WEB-INF/web.xml
     294}}}
     295
     296{{{
     297#!xml
     298<?xml version="1.0" encoding="UTF-8"?>
     299<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     300    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     301    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
     302    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     303    <servlet>
     304        <servlet-name>HelloServlet</servlet-name>
     305        <servlet-class>HelloServlet</servlet-class>
     306    </servlet>
     307    <servlet-mapping>
     308        <servlet-name>HelloServlet</servlet-name>
     309        <url-pattern>/hello.do</url-pattern>
     310    </servlet-mapping>
     311</web-app>
     312}}}
     313注意,HelloServlet 的 url-pattern 可任意命名,但千萬不可命名成 '''''hello.jsp'''''
     314
     315   == 3.5 編譯control與model ==
     316{{{
     317cd /opt/tomcat/webapps/servlet3/WEB-INF/classes
     318javac -cp /opt/tomcat/lib/servlet-api.jar ./Hello.java
     319javac -cp /opt/tomcat/lib/servlet-api.jar:. ./HelloServlet.java
     320
     321}}}
     322 上面的步驟順序很重要,並且在編譯HelloServlet 時,classpath 必須引入本身目錄,否則會出現錯誤訊息:找不到Hello這個symbol
     323
     324 == 3.6 重新啟動tomcat ==
     325{{{
     326cd /opt/tomcat
     327bin/shutdown.sh
     328bin/startup.sh
     329}}}
     330
     331 == 3.7 測試 ==
    191332 
    192  
     333比較以下網址的不同處
     334[http://localhost:8080/servlet3/hello.do?user=momor]
     335[http://localhost:8080/servlet3/hello.do?user=caterpillar]
     336[http://localhost:8080/servlet3/hello.do?user=Justin]
     337[http://localhost:8080/servlet3/hello.do?user=waue]
     338
     339 == 練習 ==
     340 改寫程式碼,當輸入 user=rock,passwd=123456時,秀出歐八講的圖片,否則回應帳號密碼錯誤