自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无道圣教主

Java初学

  • 博客(53)
  • 收藏
  • 关注

原创 Struts2 笔记4

Struts2 1.运行流程 2.自定义拦截器 拦截器作用和Filter类似。 它可以在action方法调用之前被调用,可以拦截请求,也可以放行请求,还可以在action方法执行完毕之后做一些处理。 Struts中已经给我们定义好了多个拦截器,可以满足我们的大部分需求。 但是有时我们会需要一个个性化的需求,比如 权限验证。 实现自定义拦截的步骤: 1) 创建一个类并实

2016-04-11 22:08:42 387

原创 Struts2 笔记3

Struts2 1.主题 我们可以为struts的表单标签指定一个主题,常用的主题xhtml(默认)、simple(不会设置任何样式) 可以通过theme属性来设置元素的主题 theme的默认值是xhtml,如果我们不设置默认就是xhtml 设置主题的三种方式: 1.在标签的theme属性中指定

2016-04-11 22:02:08 451

原创 Struts2 笔记 2

Struts2中定义一组新的标签库,使用struts的标签库和JSTL类似。 Struts2标签需要结合OGNL表达式一起使用,注意Struts2中对EL支持不太好。 使用Struts标签库需要先导库: <%@ taglib prefix="s" uri="/struts-tags" %>1.通用标签<s:property value=""/>property标签可以输出对象栈中对象

2016-04-11 21:58:05 413

原创 struts2 笔记 1

1.Struts2简介Struts2是一个WEB端MVC框架。 MVC模式: 模型 视图 控制器 模型:分为业务模型和数据模型 视图:负责显示页面,渲染模型 控制器:接收用户请求,调用模型处理用户请求,选择视图显示页面、目前在Model2中我们使用Servlet作为控制器: Servlet主要

2016-04-11 21:53:10 2214

原创 高低算法

1.hilo 和 seqhilo生成器给出了两种hi/lo算法的实现。 配置方式如下:①hilo生成器<id name="id" type="id" column="id"> <generator class="hilo"> <paramname="table">hibernate_unique_key</param> <paramname="column"

2016-04-11 21:25:59 1848

原创 hbm文件元素属性说明

1 hibernate-mapping schema 指定所映射的数据库schema的名称。若指定该属性,则表明会自动添加该 schema前缀 catalog 指定所映射的数据库catalog的名称 default-cascade 默认值为none。设置hibernate默认的级联风格。若配置Java属性,集合映射时没有指定cascade属性,则Hibe

2016-04-11 21:23:25 825

原创 Hibernate管理Session

1.在Dao方法中获取Session对象 ①不建议通过参数的形式传入:使Dao层和上一层耦合 ②在Dao方法中单独获取,无法让多个Dao方法使用同一个事务 ③建议:将Session对象绑定到当前线程上,从当前线程上获取2.使用方式 ①配置<!-- 指定当前Session的管理方式是thread --><property name="hibernate.curr

2016-04-11 21:13:58 266

原创 二级缓存

1 Hibernate缓存 Hibernate维护了两个级别的缓存,一个是线程级别的一级缓存,一个是进程级别的二级缓存。其中一级缓存是由Session对象维护的,二级缓存是由SessionFactory维护的。 2 Web应用中的进程和线程 在Web应用中Servlet容器也就是服务器的运行对应一个大的进程,而具体每一个请求的处理则是由线程执行的。所以线程级别的一级缓存只能在当前请求处理

2016-04-11 21:12:35 506

原创 Hibernate 检索方式

1 概述 Hibernate提供了以下几种检索对象的方式 ●导航对象图检索方式:根据已经加载的对象导航到其他对象 ●OID检索方式:按照对象的OID来检索对象 ●HQL检索方式:使用面向对象的HQL查询语言 ●QBC检索方式:使用QBC(Query By Criteria) API来检索对象。这种API封装了基于字符串形式的查询语句,提供了更加面向对象的查询接口。 ●本地SQL检索方式:

2016-04-11 21:04:10 483

原创 Hibernate 检索策略

检索策略1 概述 在查询数据库时,通常可以从两个方面提升程序的性能: ①节约内存空间 当应用程序需要读取Customer对象的数据并从数据库中将Customer对象加载到内存中,如果同时加载所有关联的Order对象的集合,但是又不使用,那么这些关联的Order对象就白白浪费了许多内存空间。 ②少发送SQL语句 每发送一次SQL语句就需要获取一个数据库连接,与数据库进行一次完整的交互过程,而

2016-04-11 20:54:37 296

原创 Hibernate ORM映射:多对多

多对多关联关系概述 1 多对多关联关系的实际例子 一个分类可以包含很多种不同的商品 一个商品也可以属于不同的多个分类 2 域模型 3 关系模型 4 需要中间表描述多对多关联关系 5 多对多关联关系的方向 ①单向:Category中有Product的集合,反之没有。 ②双向:Category和Product中都有对方的集合。单向多对多1 实体

2016-04-11 20:45:52 664

原创 Hibernate ORM映射:基于主键的一对一

实现方式 Department表的主键作为外键关联到Manager表,让两个表中对应记录的主键一致 持久化类不变 创建映射文件 Department <class name ="Department" table="DEPARTMENTS"> <id name ="deptId" type="java.lang.Integer"> <column

2016-04-11 20:39:45 359

原创 Hibernate ORM映射:基于外键的一对一

概念 一一对应关系,要求双方都有对方的引用。 实现方式 在Department这一端设定many-to-one关联关系,但同时给关联到Manager的外键设定唯一约束 创建持久化类 创建映射文件 Department<many-to-one name= "manager" column ="MNG_ID_FK" class= "Manager" unique="true" />

2016-04-11 20:37:02 487

原创 hibernate ORM映射:双向多对一

概念 ①双向1-n和双向n-1是完全相同的情况,只是表述方式不同。 ②要求: [1]从one的一端访问many的一端:one.getManySet(); [2]从many的一端访问one的一端:many.getOne(); 创建持久化类 one的一端 many的一端创建hbm.xml映射文件 one的一端 <set name ="orders" tabl

2016-04-11 20:32:48 305

原创 Hibernate ORM映射多对一

多对一 生活中有很多数据直接是多对一的关联关系,例如:多个Order对应一个Customer。 关联的方向 关联是有方向的。如果从Order对象中能够获取到Customer对象,而从Customer对象中不能获取到Order对象,则关联是单向的。如果从Order和Customer对象中都能够获取到对方,则关联是双向的。我们首先来看单向的多对一关联关系。 创建持久化类 ①one:Custom

2016-04-11 20:27:38 313

原创 hibernate ORM映射——单表映射

1 映射关系总览 ①单类→单表 ②单向n对1 ③双向1对n ④1对1基于外键 ⑤1对1基于主键 ⑥单向多对多 ⑦双向多对多2 单类→单表的映射 ①映射主键 ②映射日期类型 ③映射大对象 ④hbm文件中的其他属性 ⑤数据类型映射对照表3 Hibernate中主键生成方式 3.1 increment ①由Hibernate以递增的方式为代理主键赋值 ②Hibernate会先

2016-04-11 20:08:11 639

原创 Hibernate Session 事务隔离级别回顾 持久化对象的状态 Session核心方法

1 Session概述 Session接口是Hibernate向应用程序提供的操纵数据库的最主要的接口,它提供了基本的保存、更新、删除和加载Java对象的方法。 每一个Session对象都在内存中维护了一个缓存,位于缓存中的对象称为持久化对象,它和数据库表中的相关记录保持着一种对应关系。通过Session缓存,Hibernate最大限度的减少了应用程序访问数据库的次数,实现了对内存空间更加有效的

2016-04-11 20:00:21 455

原创 Hibernate.cfg.xml 配置

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息、其他参数、映射信息!常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties数据库连接参数配置 例如: MySQLhibernate.dialect org.hibernate.dialect.MySQLD

2016-04-11 19:44:00 384

原创 Hibernate Api CRUD

|– Configuration 配置管理类对象 config.configure(); 加载主配置文件的方法(hibernate.cfg.xml) 默认加载src/hibernate.cfg.xmlconfig.configure(“cn/config/hibernate.cfg.xml”); 加载指定路径下指定名称的主配置文件 config.buildSes

2016-04-11 19:36:50 316

原创 Hibernate框架,简单实例

ORM概念 O, Object 对象 R, Realtion 关系 (关系型数据库: MySQL, Oracle…) M,Mapping 映射ORM, 对象关系映射!ORM, 解决什么问题? 存储: 能否把对象的数据直接保存到数据库? 获取: 能否直接从数据库拿到一个对象? 想做到上面2点,必须要有映射!总结: Hibernate与ORM的关系?

2016-04-11 19:27:46 276

原创 模型驱动

Struts运行时候,会执行默认的拦截器栈,其中有一个拦截器,模型驱动拦截器:<interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>@Override public String intercept(ActionInvocation invoca

2016-04-11 19:18:27 368

原创 Struts中数据回显,防止表单重复提交

数据回显 数据回显,必须要用struts标签!Action中:// 进入修改页面 public String viewUpdate() { // 模拟一个对象(先获取一个id,再根据id调用service查询,把查到的结果保存到域) User userInfo = new User(); userInfo.setUserName("Jack"

2016-04-11 19:15:17 318

原创 Struts 简单UI标签,ognl表达式语言几个符号

<!-- 服务器标签 : 最终别解析为html标签--> <s:form action="/user_login" method="post" name="frmLogin" id="frmLogin" theme="simple"> 用户名:<s:textfield name="user.name"></s:textfield> 密码:<s:textfield

2016-04-11 19:09:51 351

原创 Struts数据效验

表单数据的验证: 前台验证:主要是通过JS验证, 表达数据是否合法! 后台验证:通过后台java代码进行验证! Struts也提供了数据效验的方式!Struts数据效验, 通过拦截器完成:<interceptor name="validation" class="org.apache.struts2.interceptor.validation.Annota

2016-04-11 19:02:06 243

原创 Struts

Struts就是基于mvc模式的框架! (struts其实也是servlet封装,提高开发效率!)Struts开发步骤: 1. web项目,引入struts - jar包 2. web.xml中,引入struts的核心功能 配置过滤器 3. 开发action 4. 配置action src/struts.xml1. 引入8个jar文件2. web.xml<!

2016-04-11 18:46:17 320

原创 枚举

1.1 问题引入:如何限制用户输入?class Student{ private String name; // 考试等级 private String grade; //等级只能是ABCDE五个等级之一 // .. 省略get/set }// 程序调用public static void main(String[] args) { Stude

2016-04-11 18:37:53 332

原创 Log4J日志组件

程序中为什么用日志组件? 简单来说,为了项目后期部署上线后的维护、错误排查!Log4j, log for java, 开源的日志组件!使用步骤: 1. 下载组件,引入jar文件; log4j-1.2.11.jar 2. 配置 : src/log4j.properties 3. 使用通过根元素指定日志输出的级别、目的地: 日志输出优先级: de

2016-04-11 18:31:57 254

原创 注解

概述 注解与注释, 注解,告诉编译器如何运行程序! 注释, 给程序员阅读,对编译、运行没有影响;注解作用, 1. 告诉编译器如何运行程序; 2. 简化(取代)配置文件 【案例后再看】常用的注解,// 重写父类的方法 @Override public String toString() { return super.toSt

2016-04-11 18:30:08 202

原创 反射

反射,可以在运行时期动态创建对象;获取对象的属性、方法;public class Admin { // Field private int id = 1000; private String name = "匿名"; // Constructor public Admin(){ System.out.println("Admin.Admin()")

2016-04-11 18:27:06 177

原创 泛型

掌握的知识: 基本用法、泛型擦除、泛型类/泛型方法/泛型接口、泛型关键字、反射泛型(案例)!a. 概述 泛型是JDK1.5以后才有的, 可以在编译时期进行类型检查,且可以避免频繁类型转化!// 运行时期异常 @Test public void testGeneric() throws Exception { // 集合的声明 List

2016-04-11 18:25:14 348

原创 JavaMail邮件开发

开发中,邮件的应用? 注册,填写生日; 后期系统会自动发送生日祝贺 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件;【程序中如何发邮件!】 2. 收邮件;【很多客户端工具, foxmail 】邮件开发准备: 准备工作, 环境搭建: 1. 搭建一个邮件服务器 2. 新建邮箱账号 3. 安装foxmail 配置邮件发送服务器(smtp): localho

2016-04-11 18:12:05 302

原创 文件上传与下载完整案例

步骤: 1. 文件上传 2. 列表下载文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件 commons-fileupload-1.2.1.jar 【文件上传组件核心jar包】 commons-io-1.4.jar 【封装了对文

2016-04-11 18:01:29 607

原创 国际化—— i18n:internationalization

如何做到国际化的软件,要求: 1. 软件中存储特定的字符串 2. 知道浏览器当前使用哪种语言(Locale )Locale 本地化 Java提供了一个本地化的对象!封装当前语言、国家、环境等特征!public class App { @Test //1. 本地化对象:Locale // 封装语言、国家信息的对象,有java.util提供 public vo

2016-04-11 17:55:02 846

原创 监听器

1.1 概述 监听器: 主要是用来监听特定对象的创建或销毁、属性的变化的! 是一个实现特定接口的普通java类!对象: 自己创建自己用 (不用监听) 别人创建自己用 (需要监听)Servlet中哪些对象需要监听? request / session / servletContext 分别对应的是request监听器、session相关

2016-04-11 17:46:55 277

原创 过滤器处理编码问题

过滤器:/** * 编码处理统一写到这里(servlet中不需要再处理编码) */public class EncodingFilter implements Filter { // 过滤器业务处理方法:处理的公用的业务逻辑操作 @Override public void doFilter(ServletRequest req, ServletResponse res,

2016-04-11 17:31:55 329

原创 mysql权限

mysql数据库权限问题:root :拥有所有权限(可以干任何事情)权限账户,只拥有部分权限(CURD)例如,只能操作某个数据库的某张表 – 如何修改mysql的用户密码? – password: md5加密函数(单向加密) SELECT PASSWORD(‘root’); – *81F5E21E35407D884A6CD4A731AEBFB6AF209E1Bmysql数据库,用户配置

2016-04-11 17:05:47 385

原创 mysql触发器

* 触发器作用* 当操作了某张表时,希望同时触发一些动作/行为,可以使用触发器完成!! 例如: 当向员工表插入一条记录时,希望同时往日志表插入数据需求: 当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据-- 创建触发器(添加)CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW -- 当往员工表插入

2016-04-11 16:36:15 308

原创 mysql存储过程

1 什么是存储过程 存储过程是带有逻辑的sql语句 之前的sql没有条件判断,没有循环 存储过程带上流程控制语句(if while)2 存储过程特点 1)执行效率非常快!存储过程是在数据库的服务器端执行的!!! 2)移植性很差!不同数据库的存储过程是不能移植。3 存储过程语法 创建存储过程DELIMITER $ -- 声明存储过程的结

2016-04-11 16:33:43 559

原创 多表查询(关联查询)

需求:查询员工及其所在部门(显示员工姓名,部门名称) 1 交叉连接查询(不推荐。产生笛卡尔乘积现象:4 * 4=16,有些是重复记录)SELECT empName,deptName FROM employee,dept;– 需求:查询员工及其所在部门(显示员工姓名,部门名称) – 多表查询规则: 1)确定查询哪些表 2)确定哪些哪些字段 3)表与表之间连接条件 (规律:连接条件数量是表数量

2016-04-11 16:21:16 509

原创 数据库设计三大范式

第一范式: 要求表的每个字段必须是不可分割的独立单元 student : name – 违反第一范式 张小名|狗娃 sutdent : name old_name –符合第一范式 张小名 狗娃第二范式: 在第一范式的基础上,要求每张表只表达一个意思。表的每个字段都和表的主键有依赖。 employe

2016-04-11 16:16:03 263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除