五(1)、JSP的——Javabean

Javabean

1.Javabean的簡介:
Javabean就是符合某種特定的規範的Java類。使用Javabeans的好處是解決代碼重複編寫,減少代碼冗餘,功能區分明確,提高了代碼維護性。

2.Javabean設計原則:
公有類、屬性私有、無參的公有構造方法、getter和setter方法。

3.JSP動作元素
動作元素爲請求處理階段提供信息。動作元素遵循XML元素的語法,有一個包含元素名的開始標籤,可以有屬性、可選的內容、與開始標籤匹配的結束標籤。

如下
(1)第一類:與Javabean有關的(重點介紹)

<jsp:useBean><jsp:setProperty><jsp:getProperty>

(2)第二類:基本元素,包括6個

<jsp:include><jsp:foward><jsp:param><jsp:plugin><jsp:params><jsp:fallback>

(3)第三類:JSP Document有關

<jsp:root><jsp:declaration><jsp:scriptlet><jsp:expression><jsp:text><jsp:output>

(4)第四類:主要是用來動態生成XML元素標籤值

<jsp:attribute><jsp:body><jsp:element>

(5)第五類:Tag File

<jsp:invoke><jsp:dobody>

一、普通方式創建JavaBean

這裏寫圖片描述

1.創建項目DeMo在src中創建User類

package com.po;

public class User {
    private String username;
    private String password;
    public User(){

    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

2.在WebRoot中編輯index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.po.*"   %>//引入java類
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>

  <body>
    <%
    User user=new User();
    user.setPassword("1234");
    user.setUsername("admin");


     %>
     用戶名:<%=user.getPassword() %>
  密碼:<%=user.getUsername() %>
  </body>
</html>

二、第二種創建JavaBean(useBean動作元素創建“傳統獲取”)

1.<jsp:useBean>
作用:在jsp頁面中實例化或者在指定範圍內使用javabean。導入java類

<jsp:useBean id="標識符" class="java類名" scope="作用範圍" />

(1)id是實例名可隨便設
(2)scope的作用範圍

  • page:僅在當前頁面有效(獲取不到)
  • request:可以通過HttpRequest.getAttribute( )方法取得JavaBean對象
    scope=“request”時必須用服務器跳轉來傳遞參數
request.getRequestDispatcher("testScope.jsp").forward(request, response)
  • session:可以通過HttpSession.getAttribute( )方法取得JavaBean對象
  • application:可以通過application.getAttribute( )方法取得JavaBean對象

(3)測試
創建testScope.jsp

<body>
  <h1>測試scope動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User" scope="application">
     </jsp:useBean>
     <hr>
     <!-- 通過URL傳參給屬性賦值 -->
    用戶名: <jsp:getProperty property="username" name="myUsers" />
       密碼:  <jsp:getProperty property="password" name="myUsers"/>

</body>

創建dologin.jsp

<h1>setProperty動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User" scope="application"></jsp:useBean>
     <hr>

    用戶名: <jsp:getProperty property="username" name="myUsers" />
       密碼:  <jsp:getProperty property="password" name="myUsers"/>
      <br> <a href="testScope.jsp">測試</a>

2.<jsp:setProperty>
作用:給已經實例化的javabean對象的屬性賦值,一共四種形式。

(1):

<jsp:setProperty name="JavaBean實例名" property="*" />(跟表單關聯)

注:property=”*”:表示自動匹配表單中password、username和java類中的password、username。

例子:<根據表單自動匹配所有屬性>

1)創建login.jsp

<body>
 <form action="dologin.jsp"method="post" name="loginFrom">
  用戶名:<input type="text" name="username">
  密碼:<input type="password" name="password"> 
         <input type="submit" value="登入">
 </form>
</body>

2)創建dologn.jsp

<body>
  <h1>setProperty動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User">
     </jsp:useBean>
     <hr>
     <!-- 根據表單匹配所有屬性 -->
     <jsp:setProperty property="*" name="myUsers"/>
     用戶名:<%=myUsers.getUsername() %>
     密碼:<%=myUsers.getPassword() %>
</body>

注: “jsp:useBean” 中的id和 “jsp:setProperty”中的name一樣。property表示自動匹配“login.jsp”表單中的屬性“username”,“password”和“User”類中的“username”,“password”
(3)創建User類

package com.po;

public class User {
    private String username;
    private String password;
    public User(){

    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

2:

<jsp:setProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" />(跟表單關聯)

注:property=“JavaBean屬性名”(User類)表示匹配部分屬性

例子:<根據表單匹配部分屬性 >
(1)User類同上

(2)login.jsp同上

(3)創建dologin.jsp

<body>
  <h1>setProperty動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User">
     </jsp:useBean>
     <hr>
    <!-- 根據表單匹配部分屬性 -->
  <jsp:setProperty property="username" name="myUsers"/>
     用戶名:<%=myUsers.getUsername() %>
     密碼:<%=myUsers.getPassword() %>
</body>

3:

<jsp:setProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" value="BeanValue" />(手工設置)

property=“JavaBean屬性名”表示User類中的任意屬性名,value表示我們手動賦值
例子:< 跟表單無關 >
(1)User類同上

(2)login.jsp同上

(3)創建dologin.jsp

<body>
  <h1>setProperty動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User">
     </jsp:useBean>
     <hr>
      <!-- 跟表單無關,自己賦值 -->
      <jsp:setProperty property="username" name="myUsers" value="cxg"/>
     <jsp:setProperty property="password" name="myUsers" value="123"/>
     用戶名:<%=myUsers.getUsername() %>
     密碼:<%=myUsers.getPassword() %>
</body>

4:

<jsp:setProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" param="request對象中的參數" />(跟request參數關聯)

param表示在表單中action傳參的值
(1)login.jsp

<body>
<form action="dologin.jsp?mypass=999"method="post" name="loginFrom">
  用戶名:<input type="text" name="username">
 密碼:<input type="password" name="password"> 
  <input type="submit" value="登入">
</form>
</body>

(2)創建dologin.jsp

<body>
  <h1>setProperty動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User">   
     </jsp:useBean>
     <hr>
     <!-- 通過URL傳參給屬性賦值 -->
     <jsp:setProperty property="password" name="myUsers" param="mypass"/>
            用戶名:<%=myUsers.getUsername() %>
            密碼:<%=myUsers.getPassword() %>
</body>

三、通過getProperty獲取JavaBean對象屬性值

<jsp:getProperty>

作用:獲取指定JavaBean對象屬性值

<jsp:getProperty name="JavaBean實例名" property="JavaBean屬性名(User類)" />

(1)創建login.jsp

  <body>
  <form action="dologin.jsp"method="post" name="loginFrom">
  用戶名:<input type="text" name="username">
 密碼:<input type="password" name="password"> 
  <input type="submit" value="登入">
  </form>
  </body>

(2)創建User類

package com.po;

public class User {
    private String username;
    private String password;
    public User(){

    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

(3)創建dologin.jsp

<body>
  <h1>setProperty動作元素</h1>
     <jsp:useBean id="myUsers" class="com.po.User"></jsp:useBean>
     <hr>
     <jsp:setProperty property="username" name="myUsers"/>
     <jsp:setProperty property="password" name="myUsers" />

     <!-- 通過 -->
    用戶名:<jsp:getProperty property="username" name="myUsers" />
     密碼: <jsp:getProperty property="password" name="myUsers"/>
</body>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章