天天看点

重新学习JSP之八——JavaBean一.如何编写JavaBean属性二.在JSP中使用JavaBean三.DAO和VO

一.如何编写JavaBean属性

1.1给boolean类型设置属性

JavaBean规定,给boolean类型设置属性,要将getter方法改为is方法。代码如下:

package bean;
    public class Customer{
         boolean member;
         public boolean isMenber(){
                return member;
         }
         public void setMember(boolean member){
              this.member - member;
         }
   }
           

1.2数组属性

代码如下:

private String[] phones;
   public String[] getPhones(){
         return phones;
   }
   public void setPhones(String[] phones){
        this.phones - phones;
   }
           

1.3索引属性

private String[] phones;
    public String getPhone(int index){
        return phones[index];
    }
    public void setPhone(int index, String phone){
         phones[index] = phone;
    }
           

二.在JSP中使用JavaBean

2.1定义JavaBean

有两种方法。

(1)代码如下:

<%
   Student stu = new Student();
  %>
           

(2)代码如下:

<jsp:useBean id = "idName" class = "package.class" scope = "page/session/..." >
 </jsp:useBean>
           

id是指定JavaBean对象的名称。class是指定哪个类来实例化JavaBean对象。scope是指定对象的作用范围。jsp:useBean动作其实相当于java代码中的new操作,在jsp页面实例化了JavaBean对象。

2.2设置JavaBean属性

同样有两种方法。

(1)代码如下:

<jsp:useBean id = "stu" class = "bean.Student">
</jsp:useBean>
<%
   stu.setStuname("张海");
  %>
           

(2)使用

<jsp:setProperty>

标签。

由于属性值的来源可以是字符串,请求参数或者表达式等,因此```jsp:setProperty动作的基本语法要根据相应的来源而定。

当值的来源是String常量时,jsp:setProperty动作的语法如下:

<jsp:setProperty property = "属性名称" name = "bean对像名" value = "常量" />
<!-- name属性值必须与jsp:useBean动作定义的id属性值相同 -->
           

所以第一种情况下的代码可以改为

<jsp:useBean id = "stu" name = "bean.Student"></jsp:useBean>
<jsp:setProperty property = "stuname" name = "stu" value = "张海" />
           

当值的来源是request参数时,jsp:setProperty动作的语法如下:

<jsp:setProperty property = "属性名称" name = "bean对象名" param = "参数名" />
           

如下代码:

<jsp:useBean id = "stu" class = "bean.Student"></jsp:useBean>
<jsp:setProperty property = "stuname" name = "stu" param = "stuname" />
           

等价于

<jsp:useBean id = "stu" class = "bean.Student"></jsp:useBean>
<% String str = request.getParameter("stuname"); %>
<jsp:setProperty property = "stuname" name = "stu" value = "<&= str %>" />
           

2.3获取JavaBean属性

获取JavaBean属性同样也有两种方法。

(1)使用JSP表达式或JSP程序段,如下:

<jsp:useBean id = "stu" class = "bean.Student"></jsp:useBean>
<jsp:setProperty property = "stuname" name = "stu" value = "Jack" />
<%= stu.getStuname %>
           

(2)使用

<jsp:getProperty>

动作。语法如下:

<jsp:getProperty property = "属性名称" name = "bean对象名" />
           

三.DAO和VO

3.1为什么需要DAO和VO

JavaBean的一个重要应用是,将数据库查询的代码,从JSP中移到Java中。因为JSP是表示层,因此在表示层中调用这个特定的类提供的方法去对数据库进行操作。通常将该Java类叫做DAO(Data Access Object)类,专门负责对数据库的访问。

通常情况下,使用VO(Value Object)来配合DAO使用。在DAO中,每查询到一条记录,就将其封装为Student对象,该Student对象就属于VO。最后将所有实例化的VO存放在集合内返回。这样可以降低耦合度。

3.2编写DAO和VO

VO就是一个JavaBean,代码如下:

Student.java

package bean;
public class Student{
     private String stuno;
     private String stuname;
     private String stusex;
     public String getStuno(){
          return stuno;
    }
    public void setStuno(String stuno){
         this.stuno = stuno;
    }
    public String getStuname(){
         return stuname;
    }
    public void setStuname(String stuname){
        this.stuname = stuname;
    }
    public String getStusex(){
         return stusex;
    }
    public void setStusex(String stusex){
         this.stusex = stusex;
    }
}
           

将数据库的操作都封装在DAO内,把从数据库查询到的信息实例化为VO,放到ArrayList里返回。代码如下:

StudentDAO.java

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import bean.Student;

public class StudentDAO {
       private Connection conn = null;
       
       public void initConnection() throws Exception{
    	   Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
    	   conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=GMT", "root", "123456");
    	   }
       
       //返回所有学生
       public ArrayList getAllStudents() throws Exception{
    	   ArrayList al = new ArrayList();
    	   initConnection();
    	   String sql = "select * from t_student";
    	   Statement stat = conn.createStatement();
    	   ResultSet rs = stat.executeQuery(sql);//执行查询
    	   while(rs.next()){
    		   Student stu = new Student();
    		   stu.setStuno(rs.getString("stuno"));
    		   stu.setStuname(rs.getString("stuname"));
    		   stu.setStusex(rs.getString("stusex"));
    		   al.add(stu);
    	   }
    	   closeConnection();
    	   return al;
       }
       
       public void closeConnection() throws Exception{
    	    conn.close();
       }
}
           

3.3在JSP中使用DAO和VO

首先用page指令导入前面写好的StudentDAO和Student类,接着使用DAO类的实例去访问数据库,将查询的信息存储在ArrayList中,最后显示各个VO的学生的信息。代码如下:

display.jsp

<html>
  <head>
    <title>display</title>
  </head>
  
  <body>
         <table align = "center">
                <caption>所有学生信息</caption>
                <tr bgcolor = "yellow" >
                    <th>学号</th>
                    <th>姓名</th>
                    <th>性别</th>
                </tr>
                <%
                    StudentDAO sdao = new StudentDAO();
                    ArrayList stus = sdao.getAllStudents();
                    for(int i = 0; i < stus.size(); i++){
                        Student stu = (Student)stus.get(i);
                 %>
                       <tr bgcolor = "pink" >
                       <td><%= stu.getStuno() %></td>
                       <td><%= stu.getStuname() %></td>
                       <td><%= stu.getStusex() %></td>
                       </tr>
                  <%
                     }
                   %>
         </table>
  </body>
</html>
           

在浏览器输入http://localhost:8080/Prj09/display.jsp,如下图:

重新学习JSP之八——JavaBean一.如何编写JavaBean属性二.在JSP中使用JavaBean三.DAO和VO

摘自《Java Web开发与应用》,主编郭克华,副主编宋虹,清华大学出版社

欢迎小伙伴来评论啊~~