【SSH】---【Struts2、Hibernate5、Spring4】【散点知识】
一、Struts2
1.1、Struts2的概念
Struts2是一个用来开发MVC应用程序的框架,它提供了Web应用程序开发过程中的一些常见问题的解决方案:
->对来自用户的输入数据进行合法性验证;
->统一的布局;
->可扩展性;
->国际化和本地化;
->支持Ajax
->表单的重复提交
->文件的上传下载(文件上传中文件的类型不是普通类型,而是多媒体数据类型【*.txt、*.doc、*.xls等】,由于表单中存放的不是普通数据,所以表单类型也随之概念,在上传的时候表单的一个属性enctype的值必须是multipart/form-data)
1.2、Struts2的核心
->过滤器StrutsPrepareAndExecuteFilter(概念、工作业务流程)
1.3、Struts2的访问请求路径后缀
->*.action
->*.do
->*.input(自定义)
具体做法:<constant name="struts.action.extension" value="action,jsp,input" />
1.4、在Strus2中访问Web资源的方法/方式
1.4.1、什么是Web资源?
HttpServletRequest、HttpSession、ServletContext等原生的Servlet API。
1.4.2、为什么要访问Web资源?
B/S的应用 Controller中必然要访问WEB资源:如向域对象中读写属性,读写Cookie等。
域对象中读写属性(域对象就是四个作用域):request.setAttribute("xxx")
1.4.3、访问Web资源的方式:
1.4.3.1、通过要与Servlet API(application program interface)解耦的方式进行访问
1.4.3.1.1、通过com.opensymphony.xwork.ActionContext
1.4.3.1.2、通过Action实现如下的接口
->org.apache.struts2.interceptor.ApplicationAware
->org.apache.struts2.interceptor.RequestAware
->org.apache.struts2.interceptor.SessionAware
1.4.3.2、通过要与Servlet API(application program interface)耦合的方式进行访问
1.4.3.2.1、org.apache.struts2.ServletActionContext
1.4.3.2.2、通过实现对应的ServletxxxAware接口(ServletRequestAware,ServletContextAware,ServletResponseAware)
1.4.4、四个作用域范围:
1.4.4.1、page(作用域范围是当前页面有效)
1.4.4.2、request(作用域范围是一次请求,什么叫一次请求?当我们使用浏览器打开网络上的一个资源就算一次请求),应用场景举例:向服务器提交数据,如注册人人网账号等。
1.4.4.3、session(作用域的范围是一次会话,会话的概念就是当我们通过浏览器去真正的去访问上网络当中的一个资源(JSP/SERVLET/……)直到我们关闭浏览器这段时间就算一次请求),应用场景举例:跟踪用户会话状态。
1.4.4.4、application(作用域的范围是服务器范围(也就是服务器从开启开始到服务器关闭结束)),应用场景举例:检测当前网站的在线人数。
1.5、struts.xml配置相关
1.5.1、package—用来划分系统模块,相当于我们java包
1.5.2、action—配置请求要访问的行为类(行为是什么,java里面有属性和行为/方法的概念)
1.5.3、id—前台提交数据到后台action的请求路径
1.5.4、class—前台提交数据到后台action的请求路径(这里指类的全名)
1.5.5、method—前台提交数据具体要执行的方法/行为
1.5.6、extends—struts给我们提供了部分功能,如重定向、内部跳转等等
1.5.7、type—相应类型(具体来说有以下几种:chain、dispatcher、redirect、redirectAction)
Chain:表示转发到一个Action
Dispatcher:表示转发(默认值)
Redirect:表示重定向
redirectAction:表示重定向到一个action(通过redirect的结果相应类型也可以重定向到action)
1.5.8、name—action业务执行完毕要跳转的逻辑路径,一般是配合type使用
1.5.9、namespace—命名空间(可以跨命名空间访问请求路径)
1.5.10、result—action的一个子节点/请求路径
1.6、action中具体action的访问方法
1.6.1、通过通配符访问方式
1.6.2、通过动态方法调用(Struts2的动态方法调用默认处于禁用状态,如果要使用,必须开启,方法如下,在Struts.xml中配置: strict-method-invocation="false")
1.7、国际化
国际化的作用是为了同一套程序在不同的语言环境下能够正常显示,如在中国编写的中文网页如果想在岛国能够正常显示,那么就需要能够在日文环境下显示的native2ascii编码。
另外需要注意的是关于英文的显示,建议采用美式英语,而不是英式英语。
1.8、Struts2的表单标签,我们一般用JSTL替代
1.9、Struts2的工作流程(切记一定要去记忆)
二、Hibernate5
2.1、Hibernate5核心思想?
2.1.1、Object-Relational-Mapping(对象关系映射)
2.2、怎么做到ORM的?
2.2.1、要求有以下几点:
2.2.1.1、实体类的属性必须要和数据库表的字段一一对应;
2.2.1.2、实体类中必须有一个字段能够体现数据库行的唯一性,hibernate要求是自增的;
2.2.1.3、要求要和数据库表映射的实体类必须有相应的映射文件;
2.3、hibernate核心配置文件具体要配置哪些内容?
2.3.1、数据源(包括驱动地址、连接地址、用户名、密码)
2.3.2、方言 工作中一定要注意你用的是什么数据库平台以及版本(切记切记)
2.3.3、hbm2ddl 工作中我们都用update
2.3.4、加载实体类与表的映射文件
2.3.4.1、方式一、XML方式(写法是:<mapping resource="类的全路径,路径必须用/表示"/>)
2.3.4.2、方式二、Annotation方式(写法是:<mapping class="类的全路径,路径必须用.表示">)
2.3.5、此外还可以配置是否让hibernate显示和格式化sql
2.3.5.1、显示的写法:show_sql 值是:true
2.3.5.2、格式化的写法:format_sql 值是:true
2.4、Hibernate5的核心api
2.4.1、Configuration—作用是用来加载核心配置文件,官方建议核心配置文件的文件名和路径分别是hibernate.cfg.xml,路径是src下。
2.4.2、SessionFactory—作用是用来创建sessionFactory,他的对象是由Configuration来创建。
2.4.3、Session—作用是用来创建session,他的对象是由SessionFactory来创建,相当于jdbc里面的connection
2.4.4、Transaction—事务,表示哪些方法处于事务的控制之下(如果对事务有所疑问去问度娘,但是必须得知道有四个属性ACID-原子性、隔离性、持久性、一致性)
2.5、hibernate的主键生成策略(这里仅指出需要大家记住的)
2.5.1、native(根据数据库底层机制来进行自增)
2.5.2、uuid(由hibernate生成一个由32位字符组成的字符串,这个生成的时候采用当前时间,当前电脑网卡MAC地址以及时间戳来综合生成,所以是唯一的)
2.6、缓冲
2.6.1、缓冲概念(自己看去吧)
2.6.2、一级缓冲(session级别缓冲)
2.6.3、二级缓冲(工作中我们采用第三方缓冲机制实现,常用的有Shiro、Redis、Memcached)
2.6.4、缓冲特性(在获取数据的时候首先找的是缓冲,如果能找到就返回数据,如果找不到就去数据库里面去查询,查到后紧接着放到缓冲里面,下一次再找同样还是直接找缓冲)
2.7、Hibernate事务
2.7.1、事务概念,特性
2.7.2、如何使用事务
2.7.2.1、通过在spring的核心配置文件中配置
2.7.2.2、通过annotation的方式去使用(记住这个也得配置一部分xml)
2.8、Hiberante常用API
2.8.1、Query
2.8.2、Criteria
2.8.3、SQLQuery(知道即可,我们从来不用)
2.9、Hibernate关系映射(一定记住hibernate是双向关系维护的)
2.9.1、one-to-many
2.9.2、many-to-many
2.9.3、实现方式
2.9.3.1、XML配置
2.9.3.2、Annotation
2.9.4、级联操作(cascade)
2.9.5、维护权限放弃(inverse)
2.10、hibernate查询方式
2.10.1、对象导航图
2.10.2、OID(对象ID查询)
2.10.3、HQL
2.10.4、QBC
2.10.5、本地SQL
2.11、hibernate检索策略
2.11.1、get(只要一执行程序马上就会发送SQL语句给数据库去执行)
2.11.2、load(执行后不会马上发送sql语句给数据库执行,而是用到对象里面的具体属性的时候才会发送,相当于延迟加载)
2.11.3、批量抓取
2.11.4、Lazy(尽量少用)
2.11.4.1、true(延迟)-要用
2.11.4.2、false(不延迟)-不用
2.11.4.3、extra(相当滴延迟)-不用
2.12、数据库连接池(我们不用,因为我们框架集成要交给spring管理)
2.13、hibernate工作流程
三、Spring4
3.1、Spring的工作流程
3.2、Spring的两大核心
3.2.1、AOP—面向切面编程
3.2.2、IOC/DI—(IOC控制反转/反转控制,目的是把对对象的创建交给spring进行管理,DI依赖注入,可以注入的属性包括基本属性和对象属性)
3.3、bean标签
3.3.1、id—类的对象的名称
3.3.2、class—类的全名
3.3.3、name—功能和id是一样的,但是已经抛弃,不用了。只是一个遗留的属性,为了兼容struts1.
33.4、scope—单例和多例(需要大家知道因为我们采用struts的action操作,action是多例的,所以在开发的时候scope的值是prototype)
3.4、bean实例化的三种方式
3.4.1、通过无参构造方法(必须得会)
3.4.2、通过静态工厂类(必须得会)
3.4.3、通过实例化工厂(了解即可)
备注:对bean的实例化有两种方式:1、XML;2、Annotation
3.5、事务配置
3.5.1、首先得有数据源(前提条件)
2.5.2、配置事务sessionFactory、注入DataSource、注入hibernatetemplate(如果使用的话)
3.6、配置连接池(我们常用c3p0)
2017-08-18 18:49:37
【SSH】---【Struts2、Hibernate5、Spring4】【散点知识】的更多相关文章
- SSH框架的简化(struts2、spring4、hibernate5)
目的: 通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.本文提纲:本文通过一个新闻管理系统的实例来简化ssh框架的代码编写,功能包括查询数据库中 ...
- 基于Struts2,Spring4,Hibernate4框架的系统架构设计与示例系统实现
笔者在大学中迷迷糊糊地度过了四年的光景,心中有那么一点目标,但总感觉找不到发力的方向. 在四年间,尝试写过代码结构糟糕,没有意义的课程设计,尝试捣鼓过Android开发,尝试探索过软件工程在实际开发中 ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>
此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...
- 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境
上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...
- Struts2+Hibernate4+Spring4框架整合搭建Java项目原型
收藏 http://www.cnblogs.com/mageguoshi/p/5850956.html Struts2+Hibernate4+Spring4框架整合搭建Java项目原型
- SSH(Struts2+Spring4+HIbernate5)的简化
今天给大家带来的是一个简单的新闻发布系统 首先在学习过程中我是深有体会,做事情不要浮躁,不要想着一口吃下一个胖子, 最最重要的是理解,理解透了学什么东西都是随心所欲的. 开发环境:win10系统 jd ...
- SSH框架搭建和整合(struts2、spring4、hibernate5)
声明: 本博文是个人通过对ssh框架的学习.理解还有一些看法而描述出来的,可能有不足之处,请大家谅解,但希望能帮助到大家! 目的: 使初学者能更好的去了解SSH框架. 给以后的自己,也给别人一个参考. ...
- SSH:Struts2.2+Hibernate3.6+Spring3.1分页示例[转]
参考资料 1 ssh分页(多个例子) http://useryouyou.iteye.com/blog/593954 2 ssh2分页例子 http://459104018-qq-com.iteye. ...
- Struts2+Hibernate4+Spring4整合
jar包 配置文件 web.xml文件 <!-- needed for ContextLoaderListener --> <context-param> <param- ...
随机推荐
- 2019长安大学ACM校赛网络同步赛 L XOR (规律,数位DP)
链接:https://ac.nowcoder.com/acm/contest/897/L 来源:牛客网 XOR 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...
- AI换脸教程:DeepFaceLab使用教程(2.训练及合成)
如果前期工作已经准备完毕(DeepFaceLab下载(https://www.deepfacelabs.com/list-5-1.html),然后安装相应的显卡驱动,DeepFaceLab使用教程(1 ...
- Ubuntu下Cmake编译C++程序Helloworld
1.首选新建工程目录 mkdir helloworld 2.新建文件目录 cd helloworld mkdir bin mkdir lib mkdir src mkdir include mkdir ...
- node.js 实现 AES CTR 加解密
node.js 实现 AES CTR 加解密 node aesctr 前言 由于最近我们在做一款安全的文件分享 App, 所有文件均需要使用 aes ctr 来进行加密,aes key 还有一整套完整 ...
- Spring 核心之IOC 容器
核心概念: IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建.依赖的代码,反转给容器来帮忙实现. DI(Dependency Inje ...
- ie下不支持placeholder 用jquery来完成兼容
这是我的第一个博客,还是写点正经的,希望对做前端朋友有所帮助.最近在做的项目placeholder不兼容ie,这个可以兼容IE的输入框的HTML新增的placeholder的显示下面是代码:$( do ...
- 第二章Python入门
第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...
- HDU-3416-MarriageMatch4(最大流,最短路)
链接: https://vjudge.net/problem/HDU-3416 题意: Do not sincere non-interference. Like that show, now sta ...
- 由于代码环境有dev test prod ,每次提交代码需要很多环境,shell脚本即可解决重复命令问题
在项目外面写入push.sh 内容为 if [ $1!='' ] then msg=$1; else msg='bug'; fi git add . git commit -m $ ...
- Raspberry Pi3驱动Oled ssh1106屏
Raspberry Pi3可以直接使用GPIO接口驱动OLED屏 一.接线 根据网上随便找的图可以看到树莓派3的GPIO接口引脚顺序 PS:26pin的GPIO为前26针 根据OLED屏的引脚说明,如 ...