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. ajax请求同步与异步的区别

    //同步请求 $.ajax({    type:'post', url:"<c:url value='/device/org/' />"+val, data:{'org ...

  2. 怎样在win8系统下建立wifi热点

     2012年10月26日,微软正式推出Windows 8操作系统,不少用户也都升级到了最新的Win8.大家知道.在Win7系统下,我们非常方便的就在命令提示符下建立了WIFI热点.那么Win8上是 ...

  3. start com.android.settings/com.android.settings.SubSettings activity

    1. get class name: adb shell shell@android:/mnt/sdcard/books $ dumpsys window windows >dump.txt g ...

  4. Codeforces Round #324 (Div. 2)C. Marina and Vasya set

                                                          C. Marina and Vasya   Marina loves strings of ...

  5. linux内核对块设备的使用

    1 partition table 这里的分析以经典的MBR为例. 在MBR里面有partition table,每一项对应一个逻辑的块设备,partion table中的每一项是16个字节. 第一个 ...

  6. Redis内存使用达到maxmemory设定值后玩家数据无法写入解决 Redis数据“丢失”问题

    Redis数据“丢失”问题 - CSDN博客 https://blog.csdn.net/real_myth/article/details/52582739 Redis内存使用达到maxmemory ...

  7. 局部优化与整体效果 新增时间>节省时间 权衡利弊

    原代码 from selenium import webdriverimport requests,timeurl_l=[]with open('DISTINCT_url.txt', 'r', enc ...

  8. 容器ArrayList原理(学习)

    一.概述 动态数组,容量能动态增长,元素可以为null,用数组存储,非线程同步(vector线程同步) 每个 ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小,自动增长(默 ...

  9. js验证手机号,身份证,车牌号验证

    js验证手机号  <input type="text" class="identificationno"> // 身份证号码为15位或者18位,15 ...

  10. UVa10288 Coupons 分数模版

    UVa10288 题目非常简单, 答案就是 n/n+n/(n-1)+...+n/1; 要求分数输出.套用分数模板.. #include <cstdio> #include <cstr ...