JavaBean
符合Java规范的类都是JavaBean
- 封装数据
- 按照面向对象(OOP)原则,属性与数据库表字段相对应
- 属性私有
- 具有public的set/get方法
- 封装业务
- 具有实现特定功能的方法和方法实现
- 通常与一个封装数据的JavaBean对应
数据库
--创建student表
create table student(
stuno number(11) primary key ,
sname varchar2(20) not null,
bir date
);
commit;
select * from student;
--添加数据
insert into student values(1,'陈圆圆','23-2月-1880');
insert into student values(2,'李师师','23-2月-1770');
insert into student values(3,'赵飞燕','23-2月-1666');
commit;
JavaBean
package com.entity;
import java.sql.Date;
/*
* 创建学生对象,属性与数据库student表字段相对应
*/
public class Student {
private int stuno;//学生编号
private String sname; // 姓名
private Date bir;// 出生年月
// 构造方法
public Student() {
super();
}
public Student(int stuno, String sname, Date bir) {
super();
this.stuno = stuno;
this.sname = sname;
this.bir = bir;
}
//提供公有的get()和set()方法
public int getStuno() {
return stuno;
}
public void setStuno(int stuno) {
this.stuno = stuno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public Date getBir() {
return bir;
}
public void setBir(Date bir) {
this.bir = bir;
}
@Override
public String toString() {
return "Student [stuno=" + stuno + ", sname=" + sname + ", bir=" + bir
+ "]";
}
}
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* Oracle数据库连接的工具类
*/
public class DBOracle {
private static String driver = "oracle.jdbc.driver.OracleDriver"; // 数据库驱动类完全限定名
private static String url = "jdbc:oracle:thin:@localhost:1521:orcl"; // 数据库连接字符串
private static String user = "Micro"; // 用户名
private static String password = "mjsw"; // 密码
private static Connection conn = null;
private static Statement exeSQL = null;
//加载驱动以及连接数据库
public static Statement getOracleConn() throws ClassNotFoundException, SQLException{
// 加载驱动
Class.forName(driver);
// 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
// 创建执行SQL载体
exeSQL = conn.createStatement();
return exeSQL;
}
//关闭数据库连接
public static void closeOracleConn() throws SQLException{
if(conn!=null && exeSQL!=null){
exeSQL.close();
conn.close();
}
}
}
JSP访问数据库
<%@ page language="java" import="java.util.*,com.entity.*,com.util.*,java.sql.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<%
// 连接数据库,获取数据库执行体对象
Statement exeSQL = DBOracle.getOracleConn();
// 执行SQL语句查询,返回结果集
String sql = "select * from student";
ResultSet rs = exeSQL.executeQuery(sql);
// 创建对象集合
List<Student> list = new ArrayList<Student>();
// 遍历结果集,并将数据存入集合
while(rs.next()){
// 获取数据
int stuno = rs.getInt(1);
String sname = rs.getString(2);
java.sql.Date bir = rs.getDate(3);
// 存入集合
list.add(new Student(stuno, sname, bir));
}
//关闭连接
rs.close();
DBOracle.closeOracleConn();
// 循环遍历集合
for(Student stu : list){
/*
input标签和println都属于循环体,
但是input是标签,所以不能写在脚本标签中,标签中的值,也可以通过表达式标签赋值
所以使用了脚本标签的拼接,使标签和Java语句并存于循环体中
*/
%>
<input type="text" value="<%=stu.getSname() %>"/><br />
<%
System.out.println(stu);
}
%>
</body>
</html>
JSP动作标签
- 将 JavaBean 嵌入 JSP 页面
- 设置和获取 JavaBean 的属性
- 将用户请求转发给其他页面
- 将其他页面的内容嵌入当前页面
Java标准动作
<jsp:useBean></jsp:useBean> ---- 定义Java实体类
<jsp:setProperty /> ----设置JavaBean的属性值
<jsp:getProperty /> ----获取JavaBean的属性值
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>标准动作</title>
</head>
<body>
<!--用标准动作标签使用useBean-->
<!--创建Student对象,名字为stu,作用域为整个页面-->
<jsp:useBean id="stu" class="com.entity.Student" scope="page"></jsp:useBean>
<!--给名字为stu的对象的sname属性赋值墨渐生微-->
<jsp:setProperty property="sname" name="stu" value="墨渐生微"/>
<!--获取名字为stu的对象的sname属性的值,并输出到页面-->
<jsp:getProperty property="sname" name="stu"/><br />
<!--也可以将获取的值作为标签的值-->
<input value="<jsp:getProperty property="sname" name="stu"/>"/>
</body>
</html>
<jsp:forward></jsp:forward> ----跳转页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>跳转</title>
</head>
<body>
<!--界面请求跳转标签-->
<jsp:forward page="index.jsp"></jsp:forward>
</body>
</html>
<jsp:include></jsp:include> ----引入页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index.jsp</title>
</head>
<body>
墨渐生微
<%
String str = "欢迎关注";
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>include标准动作</title>
</head>
<body>
<jsp:include page="index.jsp"></jsp:include>
<%
//error: 动态引入,在运行期间引入被引入页面所生成的HTML,完全是独立的页面运行,所以数据不能共享
// str 是在index页面定义的String变量,include标准动作引入,不能实现数据共享,不能访问str字符串
//out.write(str);
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>include指令</title>
</head>
<body>
<%@include file="index.jsp" %>
<%
//right: 静态引入,在翻译期间,直接将被引入页面copy到相应的位置,相当于是同一个界面,所以数据是共享的
// str是在index页面定义的String变量,include指令引入,可以实现数据共享,能访问str字符串
out.write(str);
%>
</body>
</html>