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>

 

  

java web 学习笔记 - Java Bean的更多相关文章

  1. JAVA Web学习笔记

    JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...

  2. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. java web 学习笔记 编码问题总结

       java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...

  6. Java Web 学习笔记 1

    Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...

  7. [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. Java Web学习笔记之---EL和JSTL

    Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression  Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...

  9. Java Web学习笔记之---JSP

    Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...

随机推荐

  1. Project Perfect让Swift在server端跑起来-Perfect in Visual Studio Code (四)

    编者语 : 本系列文章已经被Perfect官方引用了,这样的感觉非常好.感恩!Thx all ! Visual Studio Code是一个轻量级的编辑器,但也功能丰富,通过插件你能够完毕如Cordo ...

  2. 【Unix编程】C/C++获取目录下文件或目录

    在Unix/Linux系统中,要获取一个指定目录下所有的文件或文件夹,一般用dirent.h(POSIX标准定义的目录操作头文件). 一.数据类型 在头文件<dirent.h>中定义了两种 ...

  3. 异步FIFO的编程

    对于异步FIFO.最基本的两个方面是地址控制和空.满标志位的产生.首先地址控制分别为读地址和写地址,每次读写时能读写地址应该加1.计数次数为ram深度的2倍.当读写地址相等时则空标志位有效,当读写地址 ...

  4. Cocos2D-X2.2.3学习笔记12(瞬时动作)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVjYmxvZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  5. APICloud平台的融云2.0集成

    融云2.0的官方文档地址:http://docs.apicloud.com/端API/开放SDK/rongCloud2 项目须要IM模块,最后还是选择了融云.在iOS原生开发中,融云sdk集成了聊天界 ...

  6. HDU 1018 Big Number (log函数求数的位数)

    Problem Description In many applications very large integers numbers are required. Some of these app ...

  7. 仰视源代码,实现strcmp

    //这是系统库的实现 int strcmp(const char* src, const char* dest) { int rtn = 0; while(!(rtn = *(unsigned cha ...

  8. [办公自动化]PPT文件太大,如何压缩?

    如果你经常需要制作PPT,文件太大的确是个问题. 那么应该如何压缩呢? 以office 2007为例 第一.可以选中图片,然后双击,在弹出的菜单栏中,选择压缩图片. 然后选择选项, 有三种比例可选,建 ...

  9. linux用于文件解压缩的命令

    1 gzip gzip -<压缩率> 压缩率用数字(1-9)来表示,越大,则压缩率越大. 2 bz2 解压bz2 bzip2 -d filename.bz2

  10. js 获取函数的所有参数名

    具体思路: 利用Function.toString()方法,获取到函数的源码,再利用正则匹配获取到参数名字. 实现代码(代码基于ES6): // 获取函数的参数名 function getParame ...