1. Java Bean 是一个简单的 java 类,一般放在WEB-INF下的 classes目录下(如果没有则需要手工新建)
一个简单的Bean包括属性,getter ,setter方法,如果没有申明构造函数则会默认建一个无参的构造函数。
jsp中引用javaBean有两种方式
<%@ page import="lib.liys.demo.*">
<jsp:useBean id="simpleBean" scope="page" class="lib.liys.demo.*">
2. javaBean与表单form的关系
javaBean中的成员变量与form中的输入项一一对应。
一个form提交后,可以用以下方式获得数据
<%request.setCharacterEncoding("GBK")%>
<jsp:useBean id="simpleBean" scope="page" class="lib.liys.demo.*">
<jsp:setProperty name="simpleBean" property="*">
显示属性时可以是<%=simpleBean.getNmae%>
也可以是<jsp:getProperty name="SimpleBean" property="name">标签形式
以后推荐用标签形式来获得
3. javaBean 的保存范围
有四种,page request session application
4. javaBean 的删除
内置对象之间删除,例如 session.removeAttribute("simpleBean");
***重点掌握***
5.DAO设计模式
企业级应用主要分一下几层:
DAO分以下几部分
a. DatabaseConnection:
新建一个DatabaseConnection.java文件,包名可设置为 lib.liys.dbc
申明几个数据库连接参数的常量
private static final String DBDRIVER="org.gjt.mm.mysql";
private static final String DBURL="jdbc:msyql:localhost:3006/mldn";
private static final String DBUSER="admin";
private static final String DBPASSWD="system";
主要用到了以下两个语句
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWD);
最后定义一个getConnection 一个close()函数
b.VO 也就是value对象,一个实例对象对应数据库中的一条实际记录
主要包括成员变量,get,set函数
c.定义一个DAO接口主要将核心函数列出来
package lib.liys.dao;
import lib.liys.vo.*
import java.util.*
public Interface IEmpDAO{
public boolean docreate(Emp emp) throws Exception;
public List<Emp> findAll(String keyWord) throws Exception;
public Emp findById(int empno) throws Exception;
}
d.再定义一个DAO的实现类 impl
package lib.liys.dao.impl;
import java.sql.*;
import java.util.*;
import lib.liys.vo.*;
import lib.liys.dao.*;
public class EmpDAOImpl implements IEmpDAO {
private Connection conn = null;
private PrepareStatement pstmt = null;
public void EmpDAOImpl( Connection conn){
this.conn = conn;
}
public boolean docreate(Emp emp) throws Exception{
boolean flag = false;
private String sql ="insert Emp(name,age,.......)value(?,?,?,?,?)";
pstmt = this.conn.prepareStatement(sql);
pstmt.setString(1,emp.getName());
pstmt.setInt(2,emp.getAge());
....
flag = pstmt.executeUpdate();
this.pstmt.close();
return flag;
}
public List<Emp> findAll(String keyWord) throws Exception{
private String sql ="select * from Emp where empname like ? or job like ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"%"+keyWord+"%");
pstmt.setString(2,"%"+keyWord+"%");
Result rs = this.pstmt.executeQuery();
List<Emp> listEmp = null;
Emp emp = null;
while(rs.next()){
emp = new Emp();
emp.setName(rs.getString(1));
。。。
listEmp.add(emp);
}
this.pstmt.close();
return listEmp;
}
public Emp findById(int empno) throws Exception{
String sql = "select name,job ... from emp where empno =?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,empno);
ResultSet rs = pstmt.executeQuery();
Emp emp =null
if(rs.next()){
emp = new Emp();
emp.setName(rs.getString(1));
.....
}
pstmt.close();
return emp;
}
}
d.接着定义一个DAO的代理类 proxy
package lib.liys.dao.proxy;
import java.util.*;
import lib.liys.dbc;
import lib.liys.vo.*
import lib.liys.dao.impl;
public class EmpDAOProxy implements IEmpDAO{
DatabaseConnection dbc= null;
IEmpDao dao= null;
public EmpDAOProxy(){
this.dbc = new DatabaseConnection();
this.dao= new EmpDAOImpl(dbc.getConnection());
}
public boolean docreate(Emp emp) throws Exception{
boolean flag = false;
try{
flag = this.dao.docreate(emp);
}catch (Exception e){
throw e;
}finally{
this.dbc.close();
}
return flag;
}
public List<Emp> findAll(String keyWord) throws Exception{
List<Emp> listEmp;
try{
listEmp = this.dao.findAll(keyWord);
}catch (Exception e){
throw e;
}finally{
this.dbc.close();
}
return listEmp;
}
public Emp findById(int empno) throws Exception{
Emp emp = null;
try{
emp = this.dao.findById(empno);
}catch (Exception e){
throw e;
}finally{
this.dbc.close();
}
return emp;
}
}
e.最后再建一个工厂类Factory
package lib.liys.dao.factory;
import lib.liys.dao.proxy.*;
import lib.liys.dao.*;
public Class DaoFactory{
EmpDAOProxy daoProxy = null;
public static IEmpDao getEmpDAOInstance(){
return new EmpDAOProxy ();
}
d.开始测试
写一个emp_insert.jsp
<html>
<form....action=“emp_insert_do.jsp” method =“post”>
...
</form>
</html>
再写一个emp_insert_do.jsp, 负责插入雇员信息
...
<%@page import = "ib.liys.dao.factory.*"%>
<%@page import = "java.text.*"%>
<% request.setCharacterEncoding("GBK"); %>
<jsp: useBean id ="emp" scope="request" class="lib.liys.dao.vo.Emp"/>
<jsp: setProperty name="emp" property="*">
try{
if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){
%>
<h3>雇员信息添加成功!</h3>
<%
} else {
%>
<h3>雇员信息添加失败!</h3>
<%
}
%>
.......
}
最后是一个模糊查询页面 list_emp.jsp
<%@page contentTyp="text/html" pageEncoding="GBK"%>
<%@page import="lib.liys.dao.vo.*, lib.liys.dao.factory.*"%>
<%@page import="java.text.*"/>
<html>
...
<form action = "list_emp.jsp" method ="post">
请输入查询条件: <input type="text" name="kw">
<input type="submit" value="查询"><br>
<%request.setCharacterEncoding("GBK");%>
<%
String keyWord = request.getParameter("kw") ;
if(keyWord == null){
keyWord = "" ; // 如果没有查询关键字,则查询全部
}
List<Emp> all = DAOFactory.getEmpDAOInstance().findall(keyWord );
iterator itr = all.getIterator();
while(itr.hasNext()){
Emp emp = itr.next();
。。。。
<td><%=emp.getName()%></td>
<td><%=emp.getAge()%></td>
<td><%=emp.getJob()%></td>
}
%>
</form>