jsp技術:day3#1---JavaBean的使用

1 、jsp:userBean相關

聲明一個javaBean –new一個javabean對象

<jsp:useBean id="user" class="cn.hncu.regServletPojo.domain.User"></jsp:useBean>

等價於Java腳本:

User user = new  cn.hncu.regServletPojo.domain.User()

給user對象設置屬性,即setName(),setPwd()

<jsp:setProperty property="name" name="user" value="張三"/>
        <jsp:setProperty property="pwd" name="user" value="qwert"/>

讀取user對象的屬性,即getName(),getPwd()

<jsp:getProperty property="name" name="user"/>,
<jsp:getProperty property="pwd" name="user"/>

用EL表達式獲取

${user}<br/>
${user.name },${user.pwd }<br/>

聲明一個javabean的時候,要將它放在指定的容器中即設置scope 默認是page也可以指定request、session、application,本質上是new一個對象,將它放到指定容器中去。拿的時候還是用的前面學過的pageContext.findAttribute()方法一次從page、request、session、application對象去讀取對應函數,讀取到返回相應對象,否則返回空字符串

<jsp:useBean id="user2" class="cn.hncu.regServletPojo.domain.User" scope="request"></jsp:useBean>
<jsp:setProperty property="name" name="user2" value="張三"/>
<jsp:setProperty property="pwd" name="user2" value="qwert"/>
out.print(request.getAttribute("user2"));

下面的el表達式等價於上面的輸出代碼

${user2 }

表單提交時候,property設爲“*”,就是讓系統自動根據提交上來的參數去找對應的屬性賦值 找到就賦值相應值 否則返回空字符串

<jsp:useBean id="user4" class="cn.hncu.regServletPojo.domain.User" ></jsp:useBean>
<jsp:setProperty property="*" name="user4"/>

當javaBean的屬性名與setter-getter方法比較特殊時的jsp:useBean用法

特殊的屬性(不是基本數據時,標記無法 直接使用)
解決方案:不寫它自己默認的setter-getter—setBirth(Date)
而是寫一結替代該屬性的setter-getter —setBirthday(String)
另外,在頁面使用時,屬性應該用替代setter-getter方法反推出的屬性名—-birthday

本文完整代碼如下:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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>
  </head>

  <body>
      <h2>演示javaBean的使用: jsp:userBean相關</h2>
          <a href="jsps/javaBean.jsp">演示javaBean的使用: jsp:userBean相關</a>
          <br/>
          <br/>
          <br/>
          <br/>
          <br/>
          <br/>
          <br/>
  </body>
</html>

javaBean.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
        <!-- 聲明一個javaBean  --new一個javabean對象 -->
        <jsp:useBean id="user" class="cn.hncu.regServletPojo.domain.User"></jsp:useBean>
        <!-- 上一句等價於Java腳本: User user = new  cn.hncu.regServletPojo.domain.User()-->
        <!-- 給user對象設置屬性,即setName(),setPwd() -->
        <jsp:setProperty property="name" name="user" value="張三"/>
        <jsp:setProperty property="pwd" name="user" value="qwert"/>
        <!-- 讀取user對象的屬性,即getName(),getPwd() -->
        <jsp:getProperty property="name" name="user"/>,
        <jsp:getProperty property="pwd" name="user"/>

        <br/>
        <br/>
        <!-- 用EL表達式獲取 -->
        ${user}<br/>
        ${user.name },${user.pwd }<br/>
        <br/>
        <br/>

        <!-- 聲明一個javabean的時候,要將它放在指定的容器中 默認是page也可以指定request、session、application -->
        <jsp:useBean id="user2" class="cn.hncu.regServletPojo.domain.User" scope="request"></jsp:useBean>
        <jsp:setProperty property="name" name="user2" value="張三"/>
        <jsp:setProperty property="pwd" name="user2" value="qwert"/>
        <%
            out.print(request.getAttribute("user2"));
         %>
        <br/>
        <!-- 下面的el表達式等價於上面的代碼 -->
        ${user2 }

        <br/>
        <br/>
        <br/>
        <form action="/jspDemo2_jun/jsps/doBeanForm.jsp" method="post">
            姓名:<input type="text" name="name" /><br>
            密碼:<input type="password" name="pwd" /><br>
            <input type="submit" value="提交" />
        </form>

        <br/>
        <hr/>
        <!-- 演示當javaBean的屬性名與setter-getter方法比較特殊時的jsp:useBean用法 -->
        <jsp:useBean id="p" class="cn.hncu.regServletPojo.domain.Person"></jsp:useBean>
        <jsp:setProperty property="name" name="p" value="張三"/>
        <jsp:setProperty property="age" name="p" value="25"/>
        <jsp:setProperty property="birthday" name="p" value="1995-04-12"/>
        <!-- 
            特殊的屬性(不是基本數據時,<jsp:setProperty>標記無法 直接使用)
            解決方案:不寫它自己默認的setter-getter---setBirth(Date)
            而是寫一結替代該屬性的setter-getter ---setBirthday(String)
            另外,在頁面使用<jsp:setProperty>時,屬性應該用替代setter-getter方法反推出的屬性名----birthday
          -->

        ${p}
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>


  </body>
</html>

cn.hncu.regServletPojo.domain.Person

package cn.hncu.regServletPojo.domain;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Person {
    private String name;
    private Integer age;
    private Date birth;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getBirthday() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(birth);
    }
    public void setBirthday(String strDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date d = sdf.parse(strDate);
            this.birth=d;
        } catch (ParseException e) {
            throw new RuntimeException("日期格式錯誤");
        }
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", birth=" + getBirthday()
                + "]";
    }


}

cn.hncu.regServletPojo.domain.User

package cn.hncu.regServletPojo.domain;

public class User {
    private String name;
    private String pwd;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", pwd=" + pwd + "]";
    }

}

doBeanForm.jsp

<%@page import="java.io.PrintWriter"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

  <body>
    <h1>處理註冊界面</h1>
    <jsp:useBean id="user3" class="cn.hncu.regServletPojo.domain.User" ></jsp:useBean>
    <!-- 下面這句相當於user3.setName( request.getParameter("name") )  -->
    <jsp:setProperty property="name" name="user3" param="name"/>
    <jsp:setProperty property="pwd" name="user3" param="pwd"/>
    ${user3 }<br/>

    <jsp:useBean id="user4" class="cn.hncu.regServletPojo.domain.User" ></jsp:useBean>
    <!-- 屬性用“*”號,就是讓系統自動根據提交上來的參數去找對應的屬性賦值 
        找到就賦值相應值 否則返回空字符串
    -->
    <jsp:setProperty property="*" name="user4"/>
    ${user4 }

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