Day01 项目框架(SSH)
1、项目介绍
2、项目框架(SSH)
第一步:创建数据库
第二步:创建项目(导入jar包SSH)
第三步:持久层
(1)在cn.itheima.domain中创建ElecText.java文件
(2)在cn.itheima.elec.domain下创建ElecText.java对应的映射文件ElecText.hbm.xml
(3)在src下创建hibernate.cfg.xml的配置文件
(4)使用junit在test包中进行测试(导入log4j的配置文件)
第四步:DAO层
(1)在cn.itheima.elec.dao中创建2个接口 公用接口和业务接口
公用接口:ICommonDao 业务接口:IElecTextDao
(2)在cn.itheima.elec.dao.impl中创建2个接口的实现类
公用类:CommonDaoImpl(需要继承HibernateDAOSupport,这样可以方便使用HibernateTEMplate对象)
业务类:ElecTextDaoImpl(需要继承公用类,这样可以使用公用类中的定义的方法)
(3)在src创建spring的配置文件(beans.xml)
(4)使用junit完成测试
第五步:Service层
(1)在cn.itheima.elec.service中创建接口
(2)在cn.itheima.elec.service.impl中创建接口的实现类
(3)使用junit测试
第六步:控制层(MVC)
(1)在cn.ieheima.elec.web.action中创建Action(业务Action)类和BaseAction(公用Action)
Action类:(注意:这里要设置成多例,即@Scope(value=prototry),因为Struts2的Action是多例,多线程)
BaseAction类(封装模型驱动对象,HttpServletRequest和HttpServletResponse对象):
(2)在cn.itheima.elec.util包下创建公用类(泛型转换)。
泛型转换的目的子类传递真实对象模型,在父类中使用泛型转换成真实对象模型。以后util包下封装的就是公用类。
(3)在src在创建Struts2的配置文件struts.xml
(4)在web.xml中添加配置
(5)导入css,script,jsp,images进行测试
使用system/textAdd.jsp进行测试:页面如图
3、底层方法封装(CommonDaolmpl)
4、使用Maven开发系统
优点:自动从互联网中获取jar包,并实现了一步构建,这里要记住处于联网状态。
pom.xml的配置
依赖管理(导入对应的.jar包)
通过坐标(定位到仓库中的包的位置,并将jar包导入到项目中,如果版本升级,只需要修改坐标即可)
5、使用SVN版本控制
优点:使得项目组开发代码统一使用svn服务器进行版本控制
第一步:要求开发项目的框架上传到svn服务器
第二步:让项目组的其他成员,从svn服务器上获取代码,并进行开发
6、java代码的编码规范
7、需要掌握的知识总结
重点:SSH框架的代码(Struts2+Spring+Hibernate),底层公用方法的封装。
了解:maven,svn
Day02 运行监控
1、项目页面登录框架
(1)index.jsp(转发到指定包下的页面)
(2)menu/index.jsp(提供用户名和登录页面)
(3)menu/home.jsp(页面布局)
(4)menu/title.jsp(显示上方的标题)
(5)menu/left.jsp(显示左侧的功能菜单)
(6)menu/change.jsp(完成框架的改变,其中parent表示调用父页面(home.jsp)中的对象)
(7)menu/loading.jsp(显示站点运行情况和设备运行情况)
2、运行监控
(1)需要的表
(2)使用DIV标签控制数据的隐藏和显示
使用操作步骤:
第一步:添加js和css:
第二步:jsp的代码,其中使用
标签:
(3)控制文本域的输入字数(js)
第一步:在actingIndex.jsp添加
第二步:添加文本域
第三步:使用js加载文本域
(4)弹出窗口(window.open())
3:FCK文本编辑器
新版本:CkEditor+CKFinder
4:js添加进度条
应用场景:
1:文件上传、下载(IO流)
2:数据的导入、导出(IO流)
3:大批量数据的增删改查
4:远程数据访问
页面效果:
整合项目:
详情请见【\技术资料\js浮动框】中的《帮助(运行监控).doc》
5:js浮动框
应用场景:
1:通知系统
2:公告系统
3:监控系统(产生监控报告)
…
在系统首页使用浮动框窗口。
页面效果:
6:highslideJs
应用场景:
1:当页面的一个table表格无法显示所有内容的时候,可以使用。
页面效果:
点击【查看详细信息】
整合项目:
详情请见【\技术资料\highslideJS】中的《帮助.doc》
7:需要掌握的知识点总结
重点:运行监控的开发。
了解:FCK文本编辑器(包括数据库设计),js进度条,js浮动框,js使用highslideJs
Day03 数据字典
1:需要的表
2:hql和sql语句的投影查询
3:页面使用select进行遍历List
(1)方案一:使用遍历
(2)方案二:使用
4:掌握js的写法(
标签的添加行和删除行)
5:DOM对象的ajax(封装在pub.js)
第一步:在dictionaryIndex.jsp中添加:
第二步:调用js的代码:实现:
第三步:在pub.js中定义:
方法一:(Pub.submitActionWithForm)
方法二:创建ajax引擎(Pub.newXMLHttpRequest)
方法三:传递表单Form1中的元素作为参数(Pub.getParams2Str)
方法四:接收服务器端返回的结果(Pub.getReadyStateHandler)
方法五:将返回的结果dictionaryEdit.jsp,并放置到dictionaryIndex.jsp的Form2中(Pub.handleResponse)
6:DOM对象去掉空格的方法
7:实现百分比效果的进度条
8:需要掌握的知识点总结
重点:数据字典的在项目中的应用及开发,ajax(DOM)对象的使用
了解:spring的c3p0,大家只要会配置即可,进度条(百分比)
Day04 用户管理
1:需要的表
2:项目中配置hibernate一对多的关系
一对一端
(1)ElecUser.java
(2)ElecUser.hbm.xml
多的一端
(3)ElecUserFile.java
(4)ElecUserFile.hbm.xml
3:jquery的ajax实现二级联动
(1)页面效果:
(2)操作步骤:
第一步:引入struts整合json的插件包
第二步:在struts.xml中定义:
第三步:页面使用jquery的ajax调用二级联动的js
第四步:在Action中定义,这里要将返回的List集合放置到栈顶,struts2将其转换成json数据:
4:jquery的ajax实现登录名的校验
(1)页面效果:
(2)操作步骤:
第一步:引入插件包
第二步:在struts.xml中定义:
第三步:页面的写法
第四步:在Action类的代码中定义:将String类型的message放置到栈顶:例如
第五步:在Service类的代码中查询message标识的值
5:正则表达式的使用(js)
6:文件上传
多文件上传的要求:
第一步:在util包下封装一个方法:
第二步:jsp页面的表单要求:
并且表单提交:
第三步:文件上传的要求:
在VO对象中:
7:文件下载
(1)不使用struts2提供的文件下载
(2)使用struts2提供的文件下载
第一步:配置struts.xml
第二步:在模型驱动的对象中,添加InputStream类型的属性,用来存放文件的输入流
其中属性名称要与struts.xml中定义的inputName的值一致。
第三步:将查询的文件输入流放置到模型驱动定义的inputStream属性中,用来输出文件。
第四步:Action类中代码:
8:使用md5的密码加密,处理用户的密码
第一步:导入工具类,放置到cn.itcast.elec.util包下
第二步:在保存用户和更新用户的前添加一个方法(md5Password):
9:需要掌握的知识点总结
重点:用户管理开发,熟练使用jquery的ajax完成业务操作,文件的上传和下载
了解知识:md5的密码加密
Day05 角色管理
1:用户、角色、权限的设计
2:需要的表
3:项目中配置hibernate多对多的关系
(1)用户和角色的关系:使用hibernate
(2)角色和权限的关系:不使用hibernate
创建角色权限关联表
4:掌握js的写法(页面复选框的用法,控制全选/全不选)
页面效果:
5:多对多级联删除中间表的数据
效果:的确中间表elec_user_role的数据可以删除,但是角色表中数据也会被删除,这样显然是不合理的。
由于在ElecUser.hbm.xml中设置:inverse=”true”
说明,由角色一端负责维护关联关系:也就是说角色可以操作用户,用户不能操作角色。
目的:删除用户表的同时,需要删除中间表的数据。此时需要修改删除用户的方法。
6:需要掌握的知识点总结
重点:角色管理的开发,多和多的关联关系(使用hibernate,不使用hibernate)
Day06 系统登录
1:struts2的validator校验(后台校验)
第一步:在Action中定义:如果出现校验问题,使用:
第二步:在struts.xml中定义:
第三步:在menu/index.jsp中,定义:
第五步:修改错误的样式:字体变红;去掉前面的圆圈
2:hibernate的懒加载问题
解决方案:
方案一:
在Session关闭之前,查询对象关联的集合或者对象,所有在业务层的方法上添加:
方案二:在Service层的方法中(Session关闭之前),初始化对象关联的集合或者对象
方案三:在ElecUser.hbm.xml中,添加lazy=”false”,查询用户的同时,立即检索查询用户关联的角色集合:
方案四:使用spring提供的过滤器OpenSessionInViewFilter,在web容器中添加该过滤器
3:验证码
第一步:index.jsp页面:
第二步:在Action中进行校验,创建LoginUtils类
4:记住我
第一步:index.sp页面
第二步:Action代码的处理,创建LoginUtils类
第三步:在index.jsp页面中读取Cookie中的数据,jsp中嵌套java代码
第四步:添加过滤器
第五步:在web.xml中添加:
5:jquery的ztree插件的使用(完成动态加载树型结构)
第一步:在left.jsp中
第二步:在treeMenu.js中定义:
第三步:在Action中添加:
第四步:(hql语句嵌套查询),Service类定义:
第五步:在struts.xml中添加:
6:自定义标签
7:粗颗粒度权限控制(使用过滤器完成)
第一步:定义一个过滤器:
第二步:在web容器中添加对应的过滤器:
8:系统中的异常处理+日志备份(使用struts2的拦截器)
9:细颗粒权限控制(使用struts2的拦截器)
10:今天知识点总结
11:需要掌握的知识点总结
重点:登录操作,项目中后台校验和前台校验,hibernate的懒加载处理
了解:验证码,记住我
必须掌握的分析问题的能力思想:
例如:粗颗粒权限控制
异常处理+日志备份
细颗粒权限控制
Day07 webservice+二级缓存+导出设置
1:使用webservice发布系统元数据,分公司调用的过程(axis2)
2:hibernate的二级缓存(cache)
二级缓存整合项目:
第一步:导入jar包:
第二步:在hibernate.cfg.xml中添加配置:
第三步:在DAO中执行的hql语句的时候,调用setCacheable(true),例如:
3:sql语句的联合查询
项目用使用sql语句的联合查询
4:导出设置
(1)需要的表
(2)需求分析
按照导出字段列表的内容,动态的导出excel文档
(3)数据库存放的方式
(4)掌握js的写法(标签的左右移动)
5:需要掌握的知识点
重点:导出设置的开发,sql语句联合查询
了解知识:webservice(axis2)
二级缓存(ehcache的查询缓存)
Day08 资料图书管理
1:导入Lucene相关的jar包
2:lucene原理图
(1)索引库操作原理
(2)索引库中存放数据原理
3:lucene开发原理(数据库与索引库同步)
4:配置文件
(1)导入以下3个配置文件,放置到项目的资源路径下(类路径)
5:索引库基本代码
(1)导入以下3个文件,放置到项目的util包下
6:需要掌握的知识点
先掌握lucene的思想,不用lucene实现看看是什么效果
在添加lucene的代码(LuceneUtils)试试lucene添加后的现象
Day09 分页+报表
1:分页
整合项目步骤:
第一步:导入2个java文件,放置到util包下
第二步:导入一个js文件,page.js放置到script包下
第三步:修改userIndex.jsp的内容:
(1)添加:
(2)修改【查询】按钮的连接
(3)在Form1的表单中添加2个隐藏域
(4)在Form2的表单中,加载pageUI.jsp,这个jsp页面显示分页的相关信息,添加:
第四步:将userIndex.jsp的Form2表单的内容,单独提取出来,命名为userList.jsp
第五步:在struts.xml中添加:
第六步:在Action类中添加:
第七步:在Service类中添加:
第八步:在Dao类中添加:
2:POI报表(excel文件的导出)
(1)POI报表整合项目
第一步:导入jar包:
第二步:导入java文件(使用poi生成excel报表,放置到输出流中),类放置到util包下
第三步:在userIndex.jsp中定义:
(1)添加按钮
(2)js代码:
第四步:在Action类中定义:
第五步:在Service类中定义(构造数据集合):
第六步:使用struts2方式的导出
(1)配置struts.xml
(2)在模型驱动的对象中添加:
(2)POI报表的几个核心对象
(3)POI报表(应对面试)
3:Get请求出现乱码的解决方案
解决方案:
方案一:
在jsp中的js代码定义:
在Action类中定义:
方案二:
在jsp中定义:
在Action类中定义:
方案三:
修改服务器(tomcat)的配置文件
Server.xml中的配置:
4:JXL报表(excel文件的导入)
(1)JXL报表整合项目
第一步:导入jar包:
第二步:导入java文件(完成封装),从文件中获取Excel的数据,读取excel的数据,写到集合中,将类放置 到util包下。
第三步:导入jsp文件,实现文件上传,使用标签
第四步:在userIndex.jsp中定义:
第五步:在struts.xml中定义:跳转到导入excel的页面(文件上传)
第六步:在Action类中定义:
第七步:在Service类中定义:
第八步:在Dao类中定义:
(2)JXL报表的几个核心对象
(3)JXL报表(应对面试)
(4)扩展:excel字段实现动态导入
5:需要掌握的知识点总结
重点:分页+报表
了解:报表的导入和导出的设计思想、分页思想
Day10 图形报表与项目开发流程
1:Jfreechart报表
属于工厂模式:提供ChartFactory类,由ChartFactory类创建各种图形
(1)柱状图:
(2)线状图
(3)饼图
2:使用Jfreechart完成整合国家电力系统
整合项目的操作步骤:
第一步:导入jar包
第二步:导入一个jap的文件,userReport.jsp,跳转到页面后传递生成图片的文件名,用来加载图片:
第三步:在userIndex.jsp中定义:
第四步:在Dao中定义:使用聚合函数进行分组统计。
第五步:封装ChartUtils的工具类,生成各种图形
第六步:在userReport.jsp中加载:
3:FCF报表(FusionChartsFree报表)
4:项目实施流程说明书
合同控制
5:技术点总结
基本信息
1:针对自己的基本情况去写
2:工作年限:可以虚拟(结合自己的年龄),上学的过程中可以参加工作了(2年以上)
6:附录:项目【技术资料】说明介绍
目录:
1:ajax校验
jquery的ajax相关用法:项目中用到了jquery的ajax以及jquery对象的相关用法
例如:jquery对象ajax的二级联动,jquery对象ajax的数据校验,jquery对象的相关用法
2:FCK文本编辑器
项目中文本编辑器在项目中的用法
可以参考:【技术资料\FCK文本编辑器\旧版本】中的《FCKeditor配置说明(电力项目).doc》,以及【技术资料\FCK文本编辑器\最新版本\ckeditor配置资料】中的《CKEditor_CKFinder_整合项目开发.doc》进行配置
3:JBPM
jbpm4.4工作流的相关技术操作
可根据视频进行学习,参考【技术资料\JBPM\视频】中的视频教程
JBPM的资料大全,附录在【技术资料\JBPM\资料】中,可以根据资料进行项目开发和学习
如果想整合项目,大家可以按照【技术资料\JBPM\配置整合】中的《帮助.doc》进行配置
4:jfreechart
jfreechart图形报表(柱状图,饼图,线状图),学习可以参考【技术资料\jfreechart\文档】
FusionChartsFree图形报表,学习可以参考【技术资料\jfreechart\炫\文档】
5:js浮动框
项目中开发中,右小角的浮动框提示,参考【\技术资料\js浮动框】中的《帮助.doc》
6:jxl导入
操作excel报表的jxl技术,学习大家可以参考《技术资料\jxl导入\文档》
7:lucene
全文检索功能,项目中资料图纸管理模块的开发
学习可以参考【技术资料\lucene\视频】
系统可以按照【技术资料\lucene】中的《帮助.doc》进行配置
8:maven附加
使用maven开发项目
【技术资料\maven(附加)\电力项目(整合电力项目)】中的《帮助.doc》整合整个项目的jar包(pom.xml)
【技术资料\maven(附加)\ssh(整合SSH)】中的pom.xml只整合ssh
学习可参考《maven课堂.doc》
9:md5密码加密
【技术资料\md5密码加密】存放md5密码加密的java文件
10:poi报表
存放导出/导入excel报表的技术POI
导出文件在【技术资料\poi报表\java】中的ExcelFileGenerator.java
导入文件在【技术资料\poi报表\附加:使用poi报表完成excel文件的导入】中的GenerateSqlFromExcel.java,大家可参考《帮助.doc》的配置
附加iReport技术,在【技术资料\poi报表\ireport详解】中
11:spring企业开发调度器(quartz)
【技术资料\spring企业开发调度器(quartz)】中存放的时候类似定时器的功能,可以定时或者按照周期执行某个任务,可以参考《spring企业开发调度器.ppt》进行配置,
可以查看视频和源码,位置在【技术资料\spring企业开发调度器(quartz)\视频+源码】
12:svn(附加)
svn整合项目,配置可按照【技术资料\svn(附加)】中的《svn.doc》进行配置
学习可按照《svn课堂.doc》进行学习
13:webservice远程技术
webservice可以完成2个独立的系统调用数据,我们使用的技术是axis2
国家电力系统发布数据字典,其他分公司系统调用,可以参考【技术资料\webservice远程技术\axis的jar包】中的《axis发布webservice(使用eclipse的插件生成服务端和客户端.doc》
学习可以参考视频,位置在【技术资料\webservice远程技术\视频】中
14:ztree树型菜单
配置jquery的树型菜单,使用ztree插件
15:二级缓存
配置二级缓存,即查询缓存,解决系统频繁操作数据字典表,性能优化
16:分页
项目中使用ajax完成分页,即2个Form表单的数据交互
17:过滤器(实现粗颗粒权限控制)
过滤器完成粗颗粒的权限控制,可以按照【技术资料\过滤器(实现粗颗粒权限控制)】中的《过滤器实现粗颗粒权限控制 .doc》进行配置
如果项目中使用ajax处理session失效,可以参考【技术资料\过滤器(实现粗颗粒权限控制)\附加文档(ajax处理session失效)】中的《session失效,处理ajax请求.doc》
18:简易代码生成器
项目中可以根据创建的持久化类,自动生成Dao类,Service类,Action类以及类中的响应方法
可以参考【技术资料\简易代码生成器】中的《使用说明.txt》
也可以参考【技术资料\简易代码生成器\程序代码2\test】中的《帮助.txt》
附有视频可做调试【技术资料\简易代码生成器\使用视频】
19:角色(使用hibernate映射多对多的关系)
完全使用hibernate完成系统多对多的关联维护,即用户和角色多对多,角色和权限多对多
可以参考文件《创建表+初始化数据(多对多).txt》
内有源码可以进行调试
20:进度条
项目中实现进度条
【技术资料\进度条\进度条(不添加百分比)】,即进度条没有百分比,完全使用js控制,附有视频,可以按照《帮助.doc》进行调试
【技术资料\进度条\进度条(百分比)】,即进度条添加百分比,使用ajax配合js进行控制,附有视频,可以按照《帮助.doc》进行调试
21:屏蔽火狐等浏览器,限制用户使用IE浏览器,去除修改脚本的插件浏览器(附加)
【技术资料/屏蔽火狐等浏览器,限制用户使用IE浏览器,去除修改脚本的插件浏览器(附加)】中可以按照《帮助.doc》完成屏蔽浏览器的功能,保证系统使用指定的浏览器调试
22:项目如何处理异地登录(附加)
【技术资料/项目如何处理异地登录(附加)】处理的是异地登陆的操作,即一个用户只能在1台机器操作系统,如果再其它机器登录系统,则要踢掉之前的登录,大家可以参考【技术资料\项目如何处理异地登录(附加)】中《异地登录.doc》,附有视频可做参考
23:项目在oracle数据库的框架配置(附加)
项目框架开发,使用ssh+oracle数据库进行开发,附有开发的源码
24:验证码+记住我
【技术资料\验证码+记住我】添加验证码和记住我功能,可以参考《帮助.txt》进行操作
25:运行监控中保存长字符串时截取短字符串进行保存(附加)
解决运行监控使用FCK文本编辑器之后,使用截取字符串的方式存放长文本字段
可以参考【技术资料\运行监控中保存长字符串时截取短字符串进行保存(附加)】中的《帮助.doc》进行配置
26:自定义标签+struts2标签控制访问链接权限
项目中自定义标签的时候,使用权限控制按键和链接的隐藏和显示
可以参考【技术资料\自定义标签+struts2标签控制访问链接权限】中的《自定义标签(帮助).doc》
27:自定义拦截器(实现异常处理+细颗粒权限控制)
struts2的自定义拦截器实现异常处理+日志备份,可以参考【技术资料\自定义拦截器(实现异常处理+细颗粒权限控制)\异常处理】中的《struts2的拦截器实现异常处理.doc》,附有视频大家可以查看
struts2的自定义拦截器实现细颗粒的权限控制,可以参考【技术资料\自定义拦截器(实现异常处理+细颗粒权限控制)\细颗粒度权限控制】中的《struts2的拦截器实现细颗粒度权限控制.doc》
28:技术资料\自定义类型转换
自定义类型转换,增强struts2开发的优势,使用模型驱动的对象获取页面中传递的值,该值不仅可以是String类型,同时也可以是Date类型,Integer类型,Long类型,File类型,但是日期格式如果不符合要求,需要自己处理日期转换,可以参考【技术资料\自定义类型转换】中的《帮助.doc》进行配置