wiki:waue/2009/0806

Version 15 (modified by waue, 15 years ago) (diff)

--

JSP 筆記

一、安裝

1.1 安裝

  • 注意:

大部分的使用者都不建議用apt-get 安裝tomcat 因此建議用tarball方式解壓縮

  • 下載:

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 ,內容為:

#! /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>