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>