企業建置前端 JSP 程式設計
Download
Report
Transcript 企業建置前端 JSP 程式設計
企業建置前端
Java Server Page 程式設計
井民全
outline
JSP
Container
網頁表單的處理
Web 伺服器(Apache或IIS)
JSP 執行的過程
1. Request
瀏覽器
IE
Netscape
JSP page
產生 Servlet 程
式碼
4. Response
編譯 Servlet 程
式碼
JSP Container
就是能夠執行
JSP 的伺服器
JSP Container List
Name
Price
Descript
Apache Tomcat Free
3.2.1
不支援
EJB
Inprise Application $8500/CPU
Server
Jbuilder
完全整合
Caucho Resin
2.1
開發或個人使用免費
所有的container: http://www.flashline.com/Components/appservermatrix.jsp
Caucho Resin 2.1
網址:
http://www.caucho.com/download/index.xtp
HTTP/1.1
Servlets
JSP
Processing
Load Balancing
最重要的是, 可以與 IIS 整合
Resin Installation
安裝
IIS 套件 in W2000
解壓縮 resin-ee-2.1.2.zip 到 c:\
會在
c:\建立 resin-ee-2.1.2 目錄
設定
執行
c:\ resin-ee-2.1.2 \bin\ setup.exe
指定 resin home
指定 c:\inetpub\scirpts
Resin Installation
指定
IIS Server:
設定
C:\resin-ee-2.1.2\conf\ resin.conf
C:\inetpub\wwwroot
執行:
C:\resin-ee-2.1.2\bin\ httpd.exe
Test
建立 test.jsp 放到 c:\Inetpub\wwwroot
<%@ page language=javascript %>
2 + 2 = <%= 2 + 2 %>
鍵入 http://localhost/test.jsp
Scripting Element
Declarations
<%!
宣告要用到的類別或變數 %>
Scriptlets
<%
out.println(“Hello World”); %>
Expressions (運算式)
<%=
1+1 %>
注意: 沒有分號
注意分號
Declarations
可以定義 class 嗎?
宣告變數
<%!
class Person {
String Name;
public Person(){
Name=“Guest”;
}
}
<%! int I=0; %>
<%! int a, b, c; %>
宣告物件變數
<%! Circle a = new Cirlce(2,0);
%>
%>
<%
Person Tom=new Person();
%>
定義 function
<%!
public String f(int I) {
if ( I < 3 ) return “I 小於三”;
Scriptlets
可包含任何有效程式片斷
主程式的撰寫區,只要合乎
可
<%
起始
程式片斷
%>
結束
Java 語法即
Scriptlets範例
<%
String name=null;
if( request.getParameter(“name”) == null){
%>
沒有輸入 name (html 的部分)
<%
}
else
out.println(“Hi….”+ name);
1+…+100 的範例
宣告變數
<!% int I=0 , Sum=0; %>
<%
for (I=0; I<= 100; I++) Scriptlets
Sum+=I;
%>
Html 的部分
<font color="blue"> <%=Sum%> </font>
試試看!
Resin 設定
設定為
NTServer:
當系統reboot
時, Resin 自動啟動
dos> resin-ee-2.1.2/bin/httpd -install
• 取消:
dos> resin-ee-2.1.2/bin/httpd -remove
Resin 設定
與Jbuilder
整合
Copy resin-jbuilder.jar 到 Jbuilder lib/ext目錄.
參考資料:http://www.caucho.com/resin/ref/ide-jbuilder.xtp
參考資料
http://www.jsptw.com/
Resin
操作參考: http://www.caucho.com/resin/java_tut/index.xtp
網頁表單的處理
參考資料: JavaServer Pages 技術手冊
如何利用表單傳送資料
表單的功能:
讓使用者透過網頁輸入資料
基本的傳送方法
Get
http:// URL位址 ? Name1=Value1 & Name2=Value2
Post
控制項Name 與 Value 和 URL 位址分開傳送
簡單的 Form
選擇傳送的方法
選擇傳送的地點
Test.htm
<Form method="Get" action="test.jsp">
<Input Type="Text" Name="name">
</Form>
Test.jsp
<% String Name=null;
Name=request.getParameter(“name”);
out.println(“你輸入的內容“+name);
%>
常見的輸入型態
本文輸入型態
(Text)
密碼 (Password)
選項按鈕 (Radio)
核取方塊 (Check)
下拉選項 (Select)
檔案輸入 (File)
本文區輸入(Textarea)
本文輸入型態
單行輸入
<Input Type= “Text” >
屬性
Name
MaxLength
Size
Value
名稱
允許輸入最大字數
欄位寬度
預設值
範例:
<Input Type ="Text" Name="Jing" MaxLength=10 Size=5 Value="TextInput">
密碼輸入型態
遮掩使用者所輸入的資料.
(沒有編碼)
<Input Type= “Password” >
屬性
Name
MaxLength
Size
Value
名稱
(與 Text 相同)
允許輸入最大字數
欄位寬度
預設值
範例:
<Input Type =“Password" Name="Jing" MaxLength=10 Size=5 Value="TextInput">
選項按鈕
讓使用者可以選擇
(單選)
<Input Type= “Radio” >
屬性
Name
Value
Checked
群組名稱
傳到對方網頁的值
預設被選到
範例:
<Input Type = Radio Name=“群組1” Value=“M” Checked> 男
<Input Type = Radio Name=“群組1” Value=“W”> 女
<Input Type = Radio Name="群組1“ Value=“None”> 第三性公關
核取方塊
可多重選擇
<Input Type= “CheckBox” >
屬性
同選項方塊
範例:
<p> 興趣:  
<Input Type="CheckBox" Name="Habit" Value="Reading">閱讀
<Input Type="CheckBox" Name="Habit" Value="Game"> 打電動
<Input Type="CheckBox" Name="Habit" Value="Travel"> 旅行
</p>
下拉選項
所佔空間較小,廣被大家使用
<Select Name=“Old”>
<Option Value=“10”> 10 – 20 </Option>
<Option Value=“20” Selected> 20 – 30 </Option>
<Option Value=“30”> 30 – 40 </Option>
</Select>
Name
Option Value
Selected
Size
選項控制項名稱
傳到對方網頁的值
預設被選到
欄位大小
利用 JSP 讀取表單傳來的資料
綜合範例
<html> 檔名: Form.htm
<Form Name="Example" method="Post" action="Form.jsp">
<p> 姓名:   <Input Type="Text"
Name="Name">
<p> 密碼:   <Input Type="Password" Name="Passwd">
</p>
</p>
<p> 性別:  
<Input Type="Radio"
Name=“Sex" Value="Man">
<Input Type="Radio"
Name=“Sex" Value="Woman"></p>
Select 控制項
<input type="submit" value="傳送檢核">
Check Box 控制項
<input type="reset" value="重新輸入">
</Form>
</html>
傳送按鈕
清除按鈕
<p>年齡:  
<Select Name="Old">
Select 控制項
<Option Value="10"> 10 - 20 </option>
<Option Value="20"> 20 - 30 </option> </Select> </p>
<p>興趣:  
Check Box 控制項
<Input Type="Check Box" Name="Habit" Value=Reading"> 閱讀
<Input Type="Check Box" Name="Habit" Value=Game"> 打電動 </p>
回上一頁
接收資料的JSP端
<html> 檔名: Form.jsp
<body>
<%
String Name=request.getParameter("Name");
String Password = request.getParameter(“Password”);
String Sex=request.getParameter(“Sex”);
String Old=request.getParameter(“Old”);
String [] Habit=request.getParameterValues(“Habit”);
%>
姓名:  <%=Name%>
</body>
</html>
進一步的程式處理(push)
下一頁
進一步的程式處理
<%
if(Sex.equals(“Man”)
out.println(“男 <br>”);
else
out.pritnln(“女 <br>”);
%>
回上一頁
測試 (最簡單)
將專案的
defaultroot中的所有內容
Copy -> www root中即可
注意: 要先把 Jbuilder 正在debug的專案停下來
測試
在 IIS中加入虛擬目錄 test
Step 1: 複製整個 jsp 專案到 c:\test
Step 2: 複製 Form.htm 到defaultroot目錄中
Step 3:虛擬目錄連到defaultroot中
設定 Resin 目錄mapping
Step 4: 編輯 resin.conf 加入
<path-mapping url-pattern='/test/*'
real-path='C:\test\Form\defaultroot'/>
Restart the Resin
完整程式範例: Form
檔案上傳
允許使用者將自己的檔案上傳到伺服器
傳送檔案的編碼方式
<Form ENCType=“multipart/form-data” >
<Input Type=“File”>
</Form>
規格:
http://www.ietf.org/rfc/rfc1867.txt
伺服器不能直接用 request.getParameter() 取得檔案資料.
利用 O’Reilly 的MultipartRequest
提供原始碼
隨時都在
update
下載網址: http://www.servlets.com/cos/index.html
安裝
1: 解壓縮 cos-27May2002.zip
Step 2: 把 cos.jar Resin 目錄下的lib中
Step
cos.jar C:\jakarta-tomcat-4.1.12\common\lib (Tomcat)
Step
3: 重新啟動 Resin (bin/httpd)
參考資料:
http://www.servlets.com/cos/index.html
http://www.caucho.com/support/resin-interest/9912/0123.html
Html 檔的撰寫
檔名: UpLoadFile.htm
<Form Name=“Form1” ENCType=“multipart/form-data”
Method=“Post” Action=“UploadFile.jsp”>
<p> 上傳檔案 1:
<input type="file" name="File1" size="20" maxlength="20"> </p>
控制項的名稱
控制項大小
<input type="submit" value="上傳檔案">
<input type="reset" value="清除所有的資料">
傳送按鈕
</Form>
清除按鈕
最大可輸入大小
Jsp 檔撰寫– JBuilder 設定
檔名: UpLoadFile.jsp
Step 1: 利用 Jbuilder 建立一個 JSP 專案
Step 2: 建立一個新的 JSP 檔
Step 3: 設定Library
加入新的library
1
選擇cos.jar所在的目錄
2
Jsp 檔撰寫
<%@ page import="com.oreilly.servlet.MultipartRequest"%>
<Body>
<%
MultipartRequest multi=new MultipartRequest(request, 讀取資料物件
檔案放置位置 "c:\\Test",
5*1024*1024); 限制檔案大小
取出控制項的名稱
java.util.Enumeration FileName=multi.getFileNames();
取出檔案名稱
%>
</Body>
下一頁
取出檔案名稱
while(FileName.hasMoreElements()){
String Name=(String) FileName.nextElement();
String SystemFileName=multi.getFilesystemName(Name);
out.println(SystemFileName+"<BR>");
}
回上一頁
安裝與測試
1: 把 Jsp project c:\test
Step 2: 把 UpLoadFile.htm Jsp Project \defaultroot
Step 3: 設定 IIS 虛擬目錄 TEST c:\test
Step 4: 設定 Resin resin.conf 對應 IIS 目錄
Step
<path-mapping url-pattern='/test/*'
real-path='C:\test\'/>
Step 5: 重新啟動 Resin
完整程式範例: UpLoadFilename