SSH的整理
1.Struts2
a.struts2的工作原理
1.所有的请求发给前端控制器(web.xml有Struts2的核心控制器)
2.前端控制器维护一个配置文件(Struts2.xml),配置文件中指明了不同的请求和某个Action的对应关系
3.前端控制器可以根据不同的请求调用不同的Action
4.Action调用Model(模型层:实体或数据访问),实现业务功能
5.请求转发给view层(jsp)
6.jsp显示数据
b.实现机制(AOP)
struts2中有拦截器的概念,通过它的拦截器可以拦截Action,struts2的拦截器是通过AOP机制来实现的
c.拦截器相关
1.拦截器的工作原理
采用AOP编程思想,将struts2对于请求处理的某些方面,抽取出来,利用反射加动态,在运行时织入Action的前后
2.如何配置
自定义拦截器:
struts-*.xml
<!-- 项目基础包 -->
<package name="base" extends="struts-default">
<interceptors>
<!-- 定义mylog拦截器 -->
<interceptor name="mylog1" class="com.it.intercp.MyLogger1"></interceptor>
<interceptor name="mylog2" class="com.it.intercp.MyLogger2"></interceptor>
<!-- 定义 mylog拦截器栈-->
<interceptor-stack name="mylogz1">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="mylog1"></interceptor-ref>
</interceptor-stack>
<interceptor-stack name="mylogz2">
<interceptor-ref name="defaultStack"></interceptor-ref>(引用原来默认的拦截器)
<interceptor-ref name="mylog2"></interceptor-ref>(引用自己定义的拦截器)
</interceptor-stack>
<interceptor-stack name="mylogz3">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="mylog1"></interceptor-ref>
<interceptor-ref name="mylog2"></interceptor-ref>
</interceptor-stack>
</interceptors>
</package>
<package name="usersLogic" namespace="/users" extends="base">
<default-interceptor-ref name="mylogz3"></default-interceptor-ref>
<!-- 添加action -->
<action name="add" class="com.it.action.OptUserAction" method="addUser">
<result name="ok" type="redirectAction">show</result>
</action>
</package>
如果这个拦截器放到了package下面那么所有的action会被作用
如果放到了某个action下面那就只作用那一个action
3.如何创建
d.struts2的配置文件
Struts.xml:
先在web.xml中配置struts2的核心控制器,然后在struts.xml中配置不同的请求对应不同的action,通过result返回页面显示
e.比较Struts1的优点
1.Action的实现方面:struts1的action需要继承Action类,struts2的action可以不继承任何类;
2.线程模型方面:Struts1的Action工作在单例模式,一个Action的实例处理所有的请求,线程不安全。Struts2的Action是一个请 求对应一个实例,线程安全。
3.封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接 使用Action的属性。
4.表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph NavigationLanguage)。
5.绑定值到视图技术:Struts1使用标准的JSP,Struts2使用“ValueStack”技术。
类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。
6.数据校验:Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架。
7.Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。Struts2 支持通过拦截器堆栈为每一个Action创建不同的生命周期
2.hibernate
a.orm----Object Relational Mapping,即对象关系映射,通过对象模型操作数据库模型
(将关系数据库中的表的数据映射成为对象,以对象的形式展现,这样可以把对这些对数据库的操作转为对这些对象的操作)
b.核心组件(session、sessionFactory)
session---对数据库的一次业务操作---轻量级操作
sessionFactory----整个数据库的操作---重量级的操作
c.pojo的三中状态
瞬时态:session域中无,数据库中无
持久态:session域中有,数据库中有
游离态:session域中无,数据库中有
d.一级缓存、二级缓存(使用场合)
1.一级缓存(也叫session缓存)
一级缓存是基于session 的缓存,利用hiberate执行查询的时候,
hibernate会首先从session缓存去找,如果存在,则直接返回,如果不存在,
则利用orm执行查询 将得到的对象保存至session缓存。
优点:提高hibernate查询效率。
缺点:可能会因并发,产生数据不一致。(发生的概率极低)
注意:一级缓存,自动开启着的。
可以使用session.evict(obj);将obj从session缓存移除。
2.二级缓存(也叫 sessionFactory缓存)。
二级缓存是基于sessionFactory的缓存,利用hiberate执行查询的时候,
hibernate会首先从session缓存去找,如果存在,则直接返回,如果不存在,
则去二级缓存找,存在则返回,不存利用orm执行查询 将得到的对象保存至session缓存,可以存至二级缓存。
一个事物一个session,所有的session来自sessionFactory,说明可以跨事物共享
注意:二级缓存需要在sessionFactory配置文件中,进行两处配置。
(a.配置启用二级缓存)
(b.配置二级缓存实现类)
需要对缓存本身进行专门配置。(xxx.xml--配置缓存)
适用场合:频繁查询,极少修改的对象。
e.关联映射的配置(使用场合)
关联映射--将对象模型之间的关系映射至数据库关系模型
f.hql相关
hql(hibernate query language)是一种 除了 orm 操作对象的另一种 操作对象的技术(基于orm)。
主要用于查询(支持增删改)。
g.Query接口,关键方法---.list/.uniqueRequest
h.常见的错误(映射,主键生成策略)
orm忘记关联
(映射文件配错了)
i.hbm.xml配置{主键生成策略(序列)}
3.Spring相关
a.IOC原理---scope配置,集成Struts2
spring的IOC:控制反转---将操作对象的管理权限交给外部管理,在编码阶段,既没有实例化对象,也没有
设置依赖关系,而是把它交给spring,由spring在运行阶段实例化,组装对象,这种做法颠覆了传统的写代码
实例化,组装对象,然后一步步执行的做法,因此称为控制反转。
IOC的优点:
低耦合,效率高,提高了模块的可重用性
热拔插特性
b.AOP体现(声明事务管理)
AOP是面向切面编程,Aop将于程序业务无关的内容分离提取,应用对象只实现它们应该做的,完成业务逻辑,仅此而已,
它们并不负责任它的系统关注点,例如日志或事物的支持。
4.SpringMVC工作原理
5.myibatis相关
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML 或注解用于配置和原始映射,
将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
--------扩展----------------------------------------
1.Linux常见命令
a.Linux系统与windows的不同
Linux严格区分大小写,Linux系统中的所有内容以文件的形式保存,包括硬件
Linux不靠扩展名区分文件类型(压缩包:.gz/.bz2/.tar.bz2/.tgz)
Linux靠权限区分文件(windows下的程序不能直接在Linux中安装和运行)
b.常见的操作命令:
切换用户:su -s 切换到root用户,su luwendi 切换到luwendi用户
所有目录:ls (查当前用户下的所有文件)。ls -a 显示所有文件,包括隐藏的文件。
ls -l 显示详细信息
建立目录: mkdir +目录的名字(ko)
在建的目录下建文件:先cd ko (到此目录下)----touch +文件名(xmz)
cd ~ 返回目录
cd..进入上一级目录(到家目录)
cd.进入当前目录
删除空目录:rmdir +目录名
删除文件或目录:rm-rf
cd/:根目录----home-----用户
cd ~:到用户目录(家目录home)cd..返回上一级目录---用户目录的上一级目录就是home目录
在home的目录下(可以有多个用户,也可创建用户)---cd luwendi/:找到luwendi这个用户的目录下
~:ls 查所有目录 ls -lh(ll):查详细信息
在 ~ :下touch + 文件,在用户目录下建文件
~:cd qq/ ----进入qq目录 再 touch + 文件(在qq目录下创建文件)
rm : 删除
rm-rf:强制删除文件
复制: cp qq Music 复制qq到Music
压缩和解压文件:(zip 和 gz 格式)
1.zip格式
a.压缩:zip 文件.zip 文件
b.解压:unzip 文件.zip
2.gz格式
a.压缩:gzip 文件
b.解压:gzip 文件.gz
打包命令:.tar.gz格式(表示先打包,再压缩成 .gz文件)
打包:tar-zcvf 文件.tar.gz 文件(要打包压缩的文件)
解压:tar-zxvf 文件.tar.gz
tar.xf 文件.tar.gz
2.webService是什么?在什么场合用?基于什么协议?有J2EE
webService是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务
可以互操作。
一.hibernate 的核心思想是什么?并简述其工作原理
hibernate核心思想:
是利用ORM(object relation/mapping)机制将表与表之间的操作,映射为对象与对象之间的操作,简化了持久层的代码,使用更加方便
工作原理:
1.读取并解析hibernate.cfg.xml文件
2.读取并解析映射信息
3.创建sessionFactory
4.打开session
5.创建并启动事务Tansation
6.操作数据,持久化操作
7.提交事务
8.关闭session
9.关闭sessionFactory
二.struts的好处
struts 框架MVC实现低耦合,便于程序的维护
配置文件控制流程的转向很清晰,主要负债具体业务的实现和页面的转向
三.IOC容器的概念
IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装
IOC的优点:
低耦合,效率高,提高了模块的可重用性
热拔插特性
四:动态include与静态include区别
动态include用jsp:include动作实现<jsp:include page="included.jsp" flush="true" />他总是会检查所含文件的变化,适用于包含动态页面,并且可以带参数,静态include用include伪码实现定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm"%>
五 .java中实现分页有哪几种方法
1.是根据查询出来的结果集进行分页查询
2.就是用数据库查询语句进行查询,如果是oracle数据库就用rownum这个关键字,如果是SQL Server 就用top这个关键进行查询;
3.还有就是在数据库里写存储过程
六.什么是springmvc
springMVC是spring框架的一个模块,分为
前端控制器,处理器映射器,处理器适配器,视图解析器
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找handler
可以根据xml配置进行查找
第三步:处理器映射器HandlerMapping向前端返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完给适配器返回ModelAndView
第七步:处理器适配器向前端控制器还回ModelAndView,
ModelAndView是springMVC框架的一个底层对象,包括model和view
第八步:前端控制器请求视图解析器去进行视图解析根据
逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回view
第十步:前端控制器进行视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果