一.如何编写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,如下图:
欢迎小伙伴来评论啊~~