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>