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>