【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- ...
随机推荐
- linux新建用户并分配sudo权限
新建用户 useradd [username] 给用户设置密码 passwd [username] 设置sudo权限 首先将sudoers权限设置可写入 chmod u+w /etc/sudoers ...
- aria2的安装与配置
aria2安装 安装 epel 源: yum install epel-release 然后直接安装: yum install aria2 -y 配置 Aria2 创建目录与配置文件 这一步需要切换到 ...
- tomcat同个端口配置多个项目后无后缀的页面跳转
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Nagios监控系统部署(源码)(四)
Nagios监控系统部署(源码) 1. 概述2. 部署Nagios2.1 创建Nagios用户组2.2 下载Nagios和Nagios-plugin源码2.3 编译安装3. 部署Nagios-pl ...
- source insight支持查看makefile、kconfig以及.s代码方法
在用sourceinsight查看linux内核源码的时候,大家会发现不能查看源码中的makefile和kconfig代码,即不能搜索到makefile和kconfig文件.这是因为source in ...
- jquery预览本地图片
本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群: 281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...
- 别再误解MySQL和「幻读」了
The so-called phantom problem occurs within a transaction when the same query produces different set ...
- 上传base64图片到七牛云前端遇到的坑
介意前端普通引入七牛云SDk上传图片到七牛云需要多个js,所以才有了base64的上传方式,简化操作,(懒.) 七牛云官方文档如下 https://developer.qiniu.com/kodo/k ...
- Rsync以守护进程(socket)的方式传输数据
Rsync以守护进程(socket)的方式传输数据 Rsync服务部署 一.以守护进程(socket)的方式传输数据(重点) 部署环境: 分别用uname命令查看各系统相关信息 1 2 ...
- Spring 跨重定向请求传递数据
在处理完POST请求后, 通常来讲一个最佳实践就是执行一下重定向.除了其他的一些因素外,这样做能够防止用户点击浏览器的刷新按钮或后退箭头时,客户端重新执行危险的POST请求. 在控制器方法返回的视图名 ...