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.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.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) {
= 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) {
= 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>
















