一、Java Bean行文
1.重點說明
Java Bean行為是一組與Java Bean相關的行為,包括useBean行為、setProperty行為、getProperty行為等。Java Bean就是普通的Java類。Java Bean類非常簡單,只有私有屬性與對應的getter方法和setter方法。(注意:對於boolean類型的屬性,習慣上一般把getter方法寫成isXxx(),而不是getXxx())
指明Java Bean對象的名稱。
JSP中可以使用該名稱引用該Java Bean對象。
class Java Bean類的全名 Java Bean類的全名。 scopepage,
request,
session,
application
該Java Bean對象的范圍。
當為page時,只在該JSP內有效。
當為request時,只在當前的request中有效。
當為session時,對當前用戶有效。
當為application時,當前Web應用程序內有效。默認為page。
2.代碼實踐
scope實現各種計數器
Counter.java
1 package com.bean; 2 3 public class Counter { 4 5 private int count; //計數器 6 7 public int getCount(){ //每訪問一次,計數器自加1 8 return ++count; 9 } 10 public void setCount(int count){ 11 this.count = count; 12 } 13 }
Counter.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'Counter.jsp' starting page</title> 13 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta http-equiv="cache-control" content="no-cache"> 16 <meta http-equiv="expires" content="0"> 17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 18 <meta http-equiv="description" content="This is my page"> 19 <!-- 20 <link rel="stylesheet" type="text/css" href="styles.css"> 21 --> 22 23 </head> 24 25 <body> 26 <!-- 定義一個session范圍內的計數器,記錄個人訪問信息 --> 27 <jsp:useBean id="personCount" class="com.bean.Counter" scope="session" /> 28 <!-- 定義一個application范圍內的計數器,記錄所有人的反問信息 --> 29 <jsp:useBean id="totalCount" class="com.bean.Counter" scope="application" /> 30 <div align="center"> 31 <form action="page/Counter.jsp" method="get"> 32 <fieldset > 33 <legend>計數器</legend> 34 <table align="center" width="400"> 35 <tr> 36 <td>您的訪問次數: 37 </td> 38 <td> 39 <!-- 獲取個人的訪問次數 --> 40 <jsp:getProperty property="count" name="personCount"/> 41 </td> 42 </tr> 43 <tr> 44 <td>總共的訪問次數: 45 </td> 46 <td> 47 <!-- 獲取所有人的訪問次數 --> 48 <jsp:getProperty property="count" name="totalCount"/> 49 </td> 50 </tr> 51 <tr> 52 <td colspan="2"> 53 <input type="submit" value="刷新"> 54 </td> 55 </tr> 56 </table> 57 </fieldset> 58 </form> 59 </div> 60 </body> 61 </html>
3.效果截圖
二、<jsp:plugin/>嵌入Applet
1.重點說明
Java Applet是運行在客戶端浏覽器裡的Java小程序。JSP提供了一組plugin行為簡化嵌入Applet的操作。plugin行為包括<jsp:plugin/><jsp:params/><jsp:param/><jsp:fallback/>。其中<jsp:plugin/>用於在JSP中定義Java Applet,並聲明Applet的寬度和高度等屬性;<jsp:params/>用於定義一組一對多的參數;<jsp:param/>用於定義單個的參數;<jsp:fallback/>用於定義不支持Applet時的替代信息。
2.程序實踐
Plugin.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'Plugin.jsp' starting page</title> 13 14 <meta http-equiv="pragma" content="no-cache"> 15 <meta http-equiv="cache-control" content="no-cache"> 16 <meta http-equiv="expires" content="0"> 17 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 18 <meta http-equiv="description" content="This is my page"> 19 <!-- 20 <link rel="stylesheet" type="text/css" href="styles.css"> 21 --> 22 23 </head> 24 25 <body> 26 <table align="center" bgcolor="#999999" cellpadding="1"> 27 <tr> 28 <td bgcolor="#FFFFFF"> 29 <jsp:plugin 30 code="Graph.class" 31 codebase="http://java.sun.com/applets/jdk/1.4/demo/applets/GraphLayout/" 32 type="applet" width="500" height="400"> 33 <jsp:params> 34 <jsp:param value="joe-food,joe-dog,joe-tea,table-plate/50" 35 name="edges"/> 36 </jsp:params> 37 <jsp:fallback>您的浏覽器不支持Java Applet</jsp:fallback> 38 </jsp:plugin> 39 40 </td> 41 </tr> 42 </table> 43 </body> 44 </html>
3.效果截圖
這裡不知道怎麼被阻止了。
三、<jsp:directive/>行為
<jsp:directice/>行為相當於JSP指令。<jsp:directive.page/>行為相當於<%@ page%>指令,<jsp:directive.include/>行為相當於<%@ include%>指令,<jsp:directive.taglib/>行為相當於<%@ taglib%>指令。
注意:現在的Java Web開發平台更傾向於使用directive行為而不使用JSP指令。這是因為<jsp:directive/>行為比JSP指令更整潔,可讀性更好。