安裝並使用tomcat試驗Android網絡程序

首先,到 這裏 下載最新版本的tomcat,我下載的版本是7.0.32(Last modified 2012-10-07 18:36)


然後,解壓縮

  1. $ tar zxvf apache-tomcat-7.0.8.tar.gz 
$ tar zxvf apache-tomcat-7.0.8.tar.gz

運行之前,先要做一些配置工作(前提:Java我已經安裝過了吐舌頭

先是查看本機的java版本:

  1. tomxue@ubuntu:~/App$ java -version 
  2. java version "1.6.0_06" 
  3. Java(TM) SE Runtime Environment (build 1.6.0_06-b02) 
  4. Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing) 
  5.  
  6. tomxue@ubuntu:~/App$ sudo update-alternatives --config java 
  7. There are 4 choices for the alternative java (providing /usr/bin/java). 
  8.  
  9.   Selection    Path                                           Priority   Status 
  10. ------------------------------------------------------------ 
  11.   0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      auto mode 
  12.   1            /usr/bin/gij-4.6                                1046      manual mode 
  13.   2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode 
  14. * 3            /usr/lib/jvm/java-6-sun/jre/bin/java            63        manual mode 
  15.   4            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode 
  16.  
  17. Press enter to keep the current choice[*], or type selection number:  
tomxue@ubuntu:~/App$ java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)

tomxue@ubuntu:~/App$ sudo update-alternatives --config java
There are 4 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      auto mode
  1            /usr/bin/gij-4.6                                1046      manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode
* 3            /usr/lib/jvm/java-6-sun/jre/bin/java            63        manual mode
  4            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode

Press enter to keep the current choice[*], or type selection number: 

然後設置環境變量:

在~/.bashrc文件中加入下列語句,以設置相應的環境變量(會在每次開啓bash時自動設置)

  1. export JAVA_HOME="/usr/lib/jvm/java-6-sun/" 
  2. export CLASSPATH="$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar" 
export JAVA_HOME="/usr/lib/jvm/java-6-sun/"
export CLASSPATH="$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar"

存盤退出,再執行一次剛纔的設置(這次就省點兒事,先不退出bash了)

  1. $ . ~/.bashrc 
$ . ~/.bashrc

現在,可以執行了

  1. tomxue@ubuntu:~/App/apache-tomcat-7.0.32/bin$ ./startup.sh  
  2. Using CATALINA_BASE:   /home/tomxue/App/apache-tomcat-7.0.32 
  3. Using CATALINA_HOME:   /home/tomxue/App/apache-tomcat-7.0.32 
  4. Using CATALINA_TMPDIR: /home/tomxue/App/apache-tomcat-7.0.32/temp 
  5. Using JRE_HOME:        /usr/lib/jvm/java-6-sun/ 
  6. Using CLASSPATH:       /home/tomxue/App/apache-tomcat-7.0.32/bin/bootstrap.jar:/home/tomxue/App/apache-tomcat-7.0.32/bin/tomcat-juli.jar 
tomxue@ubuntu:~/App/apache-tomcat-7.0.32/bin$ ./startup.sh 
Using CATALINA_BASE:   /home/tomxue/App/apache-tomcat-7.0.32
Using CATALINA_HOME:   /home/tomxue/App/apache-tomcat-7.0.32
Using CATALINA_TMPDIR: /home/tomxue/App/apache-tomcat-7.0.32/temp
Using JRE_HOME:        /usr/lib/jvm/java-6-sun/
Using CLASSPATH:       /home/tomxue/App/apache-tomcat-7.0.32/bin/bootstrap.jar:/home/tomxue/App/apache-tomcat-7.0.32/bin/tomcat-juli.jar


看到上面的輸出,應該就成功了。


接下來,打開Firefox,並輸入網址:http://localhost:8080/

可以看到如下頁面






點擊頁面上的"Server Status",發現要賬號和密碼,怎麼辦?

進入conf目錄,修改文件如下:

  1. ubuntu:~/App/apache-tomcat-7.0.32/conf$ cat tomcat-users.xml  
  2. <?xml version='1.0' encoding='utf-8'?> 
  3.  
  4. <tomcat-users> 
  5. <!-- 
  6.   <role rolename="tomcat"/> 
  7.   <role rolename="role1"/> 
  8.   <user username="tomcat" password="tomcat" roles="tomcat"/> 
  9.   <user username="both" password="tomcat" roles="tomcat,role1"/> 
  10.   <user username="role1" password="tomcat" roles="role1"/> 
  11. --> 
  12.  
  13. <role rolename="manager-gui"/> 
  14. <user username="tomcat" password="tomcat" roles="manager-gui"/> 
  15. </tomcat-users> 
ubuntu:~/App/apache-tomcat-7.0.32/conf$ cat tomcat-users.xml 
<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->

<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users>

那麼,只需要輸入賬號和密碼均爲tomcat即可,現在再點擊"Server Status",呈現出的頁面如下:



jsp試驗


接下來,可以試試服務器端的jsp執行了。

進入下面的路徑並創建jsp文件test.jsp

  1. tomxue@ubuntu:~/App/apache-tomcat-7.0.32/webapps/ROOT$ vi test.jsp 
tomxue@ubuntu:~/App/apache-tomcat-7.0.32/webapps/ROOT$ vi test.jsp

文件內容如下:

  1. <%@ page language="java" contentType="text/html;charset=gb2312"%> 
  2. <% 
  3. out.print("I love jsp!"); 
  4. %> 
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%
out.print("I love jsp!");
%>

存盤退出。

在Firefox網址欄輸入:http://localhost:8080/test.jsp

結果怎麼樣?




在Android模擬器上連接tomcat


目的:

在Android上跑一個project,可以通過3種方式申請http連接至tomcat服務器。


代碼在這裏:https://github.com/tomxue/snippet_Android_HttpRequest.git

聲明:這份代碼(1st commit)基本原封不動來自這本書《Android應用開發揭祕》

tomcat作爲JSP容器,可與程序進行動態互動,這是很有意思的驚訝


上面說代碼基本原封不動,那麼其中的一個改動就是http申請的鏈接地址。

原代碼中給出的地址是這樣的:http://192.168.1.110:8080/http1.jsp

書我沒看過,不太清楚爲什麼是這樣的,誰知道?請告訴我。


但是,在Ubuntu下運行的tomcat服務器和Android模擬器,要想能夠通信,那麼

Android模擬器內訪問的tomcat上的網址就不再是這個:http://localhost:8080/

爲什麼?因爲模擬器有自己的localhost,這個網址指向的是它自己的主機。


如果模擬器想要訪問Ubuntu主機,也就是tomcat服務器的網址,那麼就使用android內置的IP 10.0.2.2 吧,

10.0.2.2 是模擬器設置的特定ip,是Ubuntu主機的別名。


tomcat上要運行的兩個jsp文件如下:

http.jsp

  1. <html>   
  2.   <head>    
  3.     <title>My JSP 'index.jsp' starting page</title>   
  4.   </head>   
  5.   <body>   
  6.     <%   
  7.         out.println("<h1>HTTP TEST<br/>http test</h1>");   
  8.      %>   
  9.   </body>   
  10. </html>   
    <html>  
      <head>   
        <title>My JSP 'index.jsp' starting page</title>  
      </head>  
      <body>  
        <%  
            out.println("<h1>HTTP TEST<br/>http test</h1>");  
         %>  
      </body>  
    </html>  

httpGet.jsp

  1. <html> 
  2.   <head> 
  3.     <title>My JSP 'index.jsp' starting page</title> 
  4.   </head>  
  5.   <body> 
  6.     <% 
  7.         String type = request.getParameter("par"); 
  8.         String result = new String(type.getBytes("iso-8859-1"),"gb2312"); 
  9.         out.println("<h1>parameters:"+result+"</h1>"); 
  10.      %> 
  11.   </body> 
  12. </html> 
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head> 
  <body>
    <%
    	String type = request.getParameter("par");
    	String result = new String(type.getBytes("iso-8859-1"),"gb2312");
    	out.println("<h1>parameters:"+result+"</h1>");
     %>
  </body>
</html>

第一個文件會給出固定的輸出,而第二個文件會根據交互的參數傳遞給出相應的輸出。


現在,可以運行Android程序了,要在模擬器中跑,這樣,上面提到的訪問地址纔會有效。

運行一下,3個按鈕挨個試試,比如第2個按鈕“以GET方式傳遞數據”


結果是這樣的:


有點失望,怎麼是一堆源碼?

仔細看,裏面有一行:

  1. <h1>parameters:test</h1> 
<h1>parameters:test</h1>
這個就是與httpGet.jsp交互的結果!





注意


我的Firefox安裝了goagent + FoxyProxy,在其開啓的情況下使用tomcat沒什麼問題。

發佈了12 篇原創文章 · 獲贊 5 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章