springmvc对静态资源的映射
<mvc:resources mapping="/js/**" location="/resources/js/" />
<mvc:resources mapping="/css/**" location="/resources/css/" />
<mvc:resources mapping="/img/**" location="/resources/img/" />
springmvc静态资源访问的三种方式:https://www.cnblogs.com/caoyc/p/5639078.html
web.xml
1、*.do *.action 拦截以.do结尾的请求 (不拦截 jsp png jpg .js .css)
2、/ 拦截所有请求(不拦截.jsp) 建议使用此种 方式 (拦截 .js.css .png) (放行静态资源)
3、/* 拦截所有请求(包括.jsp) 此种方式 不建议使用
无法存数据库
spring和hibernate整合,save,delete,update,失效,数据无法保存进数据库,或者没有sql语句执行。没有使用datasource,用的是hibernate的连接。
applicationContext-*.xml配置失效
applicationContext-dao.xml,
applicationContext-service.xml,
applicationContext-transac.xml
不能直接放在classes根目录下,需要建个目录,放目录里。
不然会报找不到bean,可能是没有扫描到配置文件。
单独配一个文件不用通配符可以直接放根目录,多个文件使用通配符需要放一个目录里。
配置事务时,报错需要datasource
使用transactionManager时,xml中配置了以后,运行报错,需要javax.datasource,sessionFactory没有配置datasource,用的是hibernate自己的连接。
openSessionInView
配置openSessionInView是为了扩大session范围。
使用场景:lazy懒加载,关联的对象是个代理对象,不会立即查数据库,而是等到用的时候再去查数据库。
因为no session,因为session关闭了,
spring springmvc hibernate整合高阶阶段:
1.配置文件中事务的添加,spring的aop的使用,advice和pointcut。
2.hibernate中 no session问题的处理,扩大session范围,openSessionInView的配置使用。
3.多对一many to one的使用,人员表和部门表的外键维护问题。
4.lazy懒加载问题,碰到关联的数据需要扩大session范围。测试的时候需要将测试类加入spring管理。
no session的本质是session关闭,session关闭的本质是走出了transaction。
以懒加载为例,查出person类后,session就关闭了,person类里的dept是只有id的代理类,当person.getDept()的时候,hibernate又会去数据库查一次。这时候因为session已经关闭,无法断点续传,所以报错lazyInitializeException,no session。
5.hibernate一级缓存问题。如果在一个session中进行保存、获取相同数据,获取到的数据不会去查数据库,直接从缓存中取,导致部分值为空。需要清理缓存。clear evict
6.contextSpringListener not found,tomcat lib里的jar包没有。
7.上传upload tomcat mvc文档里
8.前端页面通过foreach获取到index,生成name形如item[index].pname item[index].age
9.maven导出包到指定目录
10.transaction,spring和hibernate整合后,想要增删改需要加transaction。
因为单独使用hibernate进行save update也需要加事务。
10.使用transaction,需要连接池c3p0,druid。
11.sessionFactory和localSessionFactory,FactoryBean getObect(),spring启动会调用这个方法。
HibernateDaoSupport为什么会要求sessionFactory required 启动时报错。
12.autowired
启动spring时,spring会调用加了autowire的方法
接口 按实现类查找 如果有多个实现类 则按名字查找。
13.flush onlyread 不需要setflushauto 不需要setcheckfalse,只需要将增删改的代码写在加了transaction的类里。
14.测试类加入spring管理。
15.hibernate.current,thread,getCurrentThread,因为transaction在service层要开启,需要session,而dao层增删改查也需要session,为了保证session一致,将session和thread绑定。
如果报错no active transaction,很有可能是spring hibernate整合时没有删除current thread配置,导致hibernate的session和spring的session不一致。
联系客服