java web 学习笔记 - Java Bean
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的更多相关文章
- JAVA Web学习笔记
JAVA Web学习笔记 1.JSP (java服务器页面) 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . JSP全名为Java Server Pages,中文名叫java服务器 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
- Java Web 学习笔记 1
Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...
- [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Java Web学习笔记之---EL和JSTL
Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...
- Java Web学习笔记之---JSP
Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...
随机推荐
- C++开发人脸性别识别教程(16)——视频人脸性别识别
在之前的博文中我们已经可以顺利驱动摄像头来採集源图像.在这篇博文中将正式为其加入性别识别的代码,实现摄像头视频的人脸性别识别. 一.人脸检測 在得到摄像头採集的源图像之后,首先要做的就是对其进行人脸检 ...
- keepalived + lvs marster 与 backup 之间的 高可用
简介 keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的.功能完善的高可用软件,它提供了H ...
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...
- org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not
遇到这个问题之前,我去百度和谷歌去搜索了一下.发现各种说法.可是针对我的项目而言,也就是公司的项目而言,这个问题的根源并不是是网上所说的那样. 最后是通过自己的想法做測试得到了解决. 1.首先说说我的 ...
- Qt Quick之StackView具体解释(2)
在"StackView具体解释(1)"中,我们学习了StackView的基本使用方法,这次呢,我们来讲delegate的定制.被管理的View的生命周期.查找View等主题. 本文 ...
- python爬虫【第2篇】【多进程】
一.多进程 1.fork方法(os模块,适用于Lunix系统) fork方法:调用1次,返回2次.原因:操作系统经当前进程(父进程)复制出一份进程(子进程),两个进程几乎完全相同,fork方法分别在父 ...
- mysql group by 组内排序 group by 原理
mysql group by 组内排序 SELECT * FROM (SELECT MAX(id) AS t,wukong_uid, 1 AS tag FROM toutiao_uid_gath ...
- ROUND function and arithmetic overflow
遇到如下错误 Arithmetic overflow error converting expression to data type numeric. ), ); https://stackover ...
- openstack horizon 学习(2) navigation、dashboard、panels
本章的主要内容是如何用horizon的navigation结构添加一个应用的面板. Horizon中提供了两种为应用添加panel的方法,一种是通过Pluggable Settings的方式,另一种是 ...
- 洛谷 P3960 [ NOIP 2017 ] 列队 —— 线段树
题目:https://www.luogu.org/problemnew/show/P3960 NOIP 题,不用很复杂的数据结构...但又参考了许多: 要求支持维护删除第 k 个和在末尾插入的数据结构 ...