範例一
JSP檔案(javabeandemo.jsp)
<jsp:useBean id="gcd" class="beantools.math.FindGCD" />
<jsp:setProperty name="gcd" property="*" />
<%= request.getParameter("m") %> 與 <%= request.getParameter("n") %>
最大公因數:<jsp:getProperty name="gcd" property="GCD" />
在property設定"*",表示將自動尋找request中符合JavaBean中setter名稱的參數值,
即如果request的參數名稱若符合setXXX()中XXX名稱,
則將request中對應的值設定給setXXX()。
JAVA檔案(FindGCD.java)
package beantools.math;
public class FindGCD
{
private int m, n;
public void setM(int m)
{
this.m = m;
}
public void setN(int n)
{
this.n = n;
}
public int getGCD()
{
int r = 0;
while(n != 0)
{
r = m % n;
m = n;
n = r;
}
return m;
}
}
執行網址:http://localhost:8080/myjsp/javabeandemo.jsp?m=100&n=14
執行結果:100 與 14 最大公因數:2
範例二
// 檔名:UserInfoBean.java // 編譯:javac -d ..\classes UserInfoBean.java package com.huanlin; public class UserInfoBean { private String userName; public void setUserName(String userName) { this.userName = userName; } public String getUserName() { return this.userName; } }// 檔案:HelloServlet2.java // 編譯:參考 Make.bat import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import com.huanlin.UserInfoBean; public class HelloServlet2 extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 下面兩行讓中文字能正確顯示 response.setContentType("text/html; charset=big5"); request.setCharacterEncoding("big5"); // 建立 userInfo 物件,並指定一個 session 的 attribute 與之繫結 UserInfoBean userInfo = new UserInfoBean(); userInfo.setUserName("令狐沖"); HttpSession session = request.getSession(); session.setAttribute("userInfo", userInfo); // 前往指定的網頁 RequestDispatcher rd; rd = getServletContext().getRequestDispatcher("/HelloFromServlet2.jsp"); rd.forward(request, response); } }
HelloFromServlet2.jsp<%@ page contentType="text/html;charset=big5" %> <jsp:useBean id="userInfo" scope="session"/> <html> <body> <p>從 servlet 傳入的 UserInfoBean.userName 是: <b> <jsp:getProperty name="userInfo" property="userName"/> </b> </body> </html>
有個地方要特別注意,如果在 servlet 儲存參數時是呼叫 session.setAttribute() 方法,也就是將參數存入 session 中,
執行範例:http://127.0.0.1:8080/myapp/HelloServlet2
那麼在 JSP 裡面的 <jsp:useBean> 標籤的 scope 就必須指明為 "session",否則會發生取不到參數的情形。
由於使用者登入之後,其帳號等相關資訊必須一直存在,直到這名使用者登出或將瀏覽器關閉之後才清除,
因此我們把 UserInfoBean 物件存放在 session 中。一般來說,為了節省記憶體資源,非必要時不要將變數存在 session 中,如果 bean 傳送到 JSP 中用完即丟,可以將它存放在 request 裡面。
全站熱搜