{{{ #!html

JSP 筆記

}}} [[PageOutline]] = 一、安裝 = == 1.1 安裝 == * 注意: 大部分的使用者都不建議用apt-get 安裝tomcat 因此建議用tarball方式解壓縮 * 下載: [http://ftp.twaren.net/Unix/Web/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz tomcat 6.0.20 2009/08/06] * 安裝: {{{ 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 ,權限為 755,內容為: {{{ #!text #! /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 = 二、 使用jsp檔 = == 2.1 撰寫 hello.jsp == {{{ cd /opt/tomcat/webapps/ROOT/ mkdir test cd test touch hello.jsp chmod 755 hello.jsp }}} hello.jsp 的內容為 {{{ #!text Hello World <% String s = "Eric"; %>

Hello <%=s%>

}}} {{{ /etc/init.d/tomcat restart }}} * 瀏覽: [http://localhost:8080/test/hello.jsp ] == 2.2 更多example code == * 請參考 [http://localhost:8080/examples/jsp/] == 三、 引入war檔 == == 3.1 使用war == 下載 [http://tomcat.apache.org/tomcat-6.0-doc/appdev/sample/sample.war sample.war]到 {{{ #!text /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僅為 {{{ #!java <%= new String("Hello!") %> }}} * ps2: servlet的內容較為複雜,因此WEB-INF的資料夾下還有目錄結構: || 檔案 || web.xml || servlet的設定檔 || || 資料夾 || classes || 放class檔 || || 資料夾 || lib || 放函式庫 || web.xml的內容為 {{{ #!xml Hello, World Application 標題 HelloServlet mypackage.Hello 意指檔案完整路徑為 WEB-INF/classes/mypackage/Hello.class HelloServlet /hello 意指瀏覽器所見目錄為http://localhost:8080/sample/hello }}} == 3.3 更多example code == * 請參考 [http://localhost:8080/examples/servlets/]