二十一、hibernate缓存概述
hibernate分为一级缓存即session缓存也叫事务级别的缓存以及
二级缓存sessionFactory即应用级别的缓存,还有查询缓存即三级缓存.
一级缓存的生命周期和session的生命周期保持一致,
hibernate默认就启用了一级缓存,
不能将其关闭,可以通过session.clear()和session.evict(object)来管理一级缓存。其中get,load,iterate都会使用一级缓存,一级缓存缓存的是对象。
二级缓存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多个session共享,hibernate3默认开启二级缓存,也可以手动开启并指定缓存插件如ehcache,oscache
等。二级缓存也只能缓存对象。
三级缓存也叫查询缓存,查询缓存是针对普通属性结果集的缓存,
对实体对象的结果集只缓存id。对query.list()起作用,query.iterate不起作用,也就是query.iterate不使用查询缓存
二十二、SSH的概述:
ssh是web开发中常见的一种框架
s-struts
s-spring
h-hibernate
其中struts在框架中充当控制器,实现MVC,主要用来处理用户的请求,和跳转页面。使项目结构清晰,开发者只需要关注业务逻辑的实现即可。
spring在ssh充当粘合剂,粘合struts-sping-hibernate,主要用来进行事物的控制,
hibernate-充当数据库持久层,主要用它来与数据库交互,提高开发效率,减轻程序员sql控制要求,而且hibernate通过反射机制,有灵活的映射性,还支持各种关系,一对一,一对多,多对多。
在进行ssh整合的时候,我们应该注意:
1. Action继承于ActionSupport
引入struts-spring-plugin.jar包,从而完成struts和spring的整合
在struts2的action中注入service,保证service的名字和配置文件中的一致,并生成get,set方法
Dao层继承于hibernateDaoSupport
在dao层的配置文件中注入sessionFactory
二十三、防止表单重复提交
针对于重复提交的整体解决方案:
1.用redirect来解决重复提交的问题
2.点击一次之后,按钮失效
3.通过loading
4.自定义重复提交过滤器
5.解决struts2重复提交
可以结合s:token标签来解决重复提交问题
利用token的原理:
1.在前端的jsp页面中加入s:token标签,在访问该页面时就会生成
隐藏域,该隐藏域中包含一个随机生成的字符串,并把该字符串
存入session中
2.在struts2的配置文件中加入token拦截器后,当正常访问action
的时候,会从session中取出该字符串,然后和页面隐藏域中提交
字符串做对比,如果一致则正常执行并删除session中存储的字符串。
二十四、JSP标签:
1.JSP include动作
jsp:include 动作
以“ ” 结束
比如:
2.JSP指令:
以“ ” 结束。比如:
3.JSP输出表达式:
输出变量的值,后边不能加
4.JSP Scriptlet【脚本】:
例子:
5.JSP声明:
例子:
String getHello(String name) {
return "Hi," + name + "!";
}
6.迭代标签:
Jstl中的核心标签(core)
7.JSP注释:
8.el表达式:${}
9.jsp:include动作是在运行时动态包含。
@include指令是在编译时包含。
它们两个都只能包含本项目的相关文件,不能包含其他项目的。
如果要包含其他项目的文件可以使用c:import
二十五、过滤器
filter的概述:
filter是一个过滤器,用来在请求前和响应后进行数据的处理。
filter的生命周期是:
实例化--->初始化(init)-->进行过滤(doFilter)--->销毁(destroy)-->释放资源
一个Filter必须实现javax.servlet.Filter接口
在项目中我们通常通过filter进行编码转换,
进行安全验证,进行重复提交的判断。
了解(不需要主动说)
filter相当于 拦截器 相当于Spring AOP
servlet+jsp+javabean+jdbc+filter
encodingFilter
encode
utf-8
encodingFilter
*