| Version 14 (modified by waue, 16 years ago) (diff) | 
|---|
JSP 筆記
一、安裝
1.1 安裝
- 注意:
 
大部分的使用者都不建議用apt-get 安裝tomcat 因此建議用tarball方式解壓縮
- 下載:
 
- 安裝:
 
sudo mv ~/Desktop/apache-tomcat-6*.gz /opt/ cd /opt sudo tar -zxvf apache-tomcat-6*.gz sudo mv apache-tomcat-6* tomcat sudo chown -R `whoami`:`whoami` tomcat
1.2 bootstrap
若要系統開機就載入tomcat
cd /opt/tomcat/bin tar xvfz jsvc.tar.gz cd jsvc-src autoconf ./configure make cp jsvc .. cd /opt/tomcat/ ./bin/jsvc -cp ./bin/bootstrap.jar -outfile ./logs/catalina.out -errfile ./logs/catalina.err org.apache.catalina.startup.Bootstrap
1.3 啟動停止tomcat
建立 /etc/init.d/tomcat ,內容為:
#! /bin/sh
PATH=$PATH:/opt/tomcat/bin
do_start () {
  /opt/tomcat/bin/startup.sh
}
do_stop () {
  /opt/tomcat/bin/shutdown.sh
}
case "$1" in
  start)
  do_start
  ;;
  restart|reload|force-reload)
  do_stop
  do_start
  ;;
  stop)
  do_stop
  ;;
  *)
  echo "Usage: $0 start|stop" >&2
  exit 3
  ;;
esac
- 使用方法:
- 開啟 /etc/init.d/tomcat start
 - 關閉 /etc/init.d/tomcat stop
 
 
二、 Hello World
2.1 撰寫 hello.jsp
cd /opt/tomcat/webapps/ROOT/ mkdir test cd test touch hello.jsp chmod 755 hello.jsp
hello.jsp 的內容為
<html> <head> <title> Hello World </title> </head> <body> <% String s = "Eric"; %> <h1>Hello <%=s%></h1> </body> </html>
/etc/init.d/tomcat restart
三、 引入war檔
3.1 使用war
下載 sample.war到
/opt/tomcat/webapps/
重新啟動tomcat
/etc/init.d/tomcat restart
- 注意:
- sample.war 檔 放到/opt/tomcat/webapps/ 下,tomcat會動解開webapps下的war成該目錄資料夾,此時在網址內打該資料夾名稱
 - test/test.jsp卻是放在/opt/tomcat/webapps/ROOT下,
 - 若放了war檔載webapps內,重新啟動tomcat,就會看到被解開的資料夾在 webapps內
 
 
3.2 sample.war的範例結構
當解開sample.war檔,我們可以看到此目錄結構
META-INF 放MANIFEST.MF的目錄 ,用jar打包通常會有此資料夾 index.html 主頁,包含jps與servlet 的連結 images 放圖片的目錄 hello.jsp 此頁為jsp檔 ps1 WEB-INF servlet 的目錄 ps2 
- ps1: hello.jsp 為單一檔案,大部分的內容都是html的語法,jsp code僅為
<%= new String("Hello!") %>
 
- ps2:
 
servlet的內容較為複雜,因此WEB-INF的資料夾下還有目錄結構:
檔案 web.xml servlet的設定檔 資料夾 classes 放class檔 資料夾 lib 放函式庫 
web.xml的內容為
<web-app>
    <display-name>Hello, World Application</display-name>
    <description>
  標題   </description>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>mypackage.Hello</servlet-class>
        <description> 意指檔案完整路徑為 WEB-INF/classes/mypackage/Hello.class   </description>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
        <description> 意指瀏覽器所見目錄為http://localhost:8080/sample/hello  </description>
    </servlet-mapping>
</web-app>
