框架整合

原创 2016年05月31日 16:25:28

今天老师布置了几个作业都是关于框架的整合的,记录一下其中遇到的问题和后来的解决方法:

框架这个东西多的没什么好讲的   按照步骤来就行了,第一步先加入spring,再加入hibernate,但是因为在加入hibernate的时候多点了spring(与前面的冲突了)  ,然后就各种问题。。。

后来重新弄了一遍后面的步骤没有再加入spring就可以了

另外逆向工程生成bean 和dao之后我向往常一样使用dao  直接new出来的对象,结果调用dao里面的方法的时候老是报空指针的错误,上网查了一下才发现应该使用注入式的方法,(这才是使用spring的原因) 

但是使用spring获取bean的时候又出现了问题 FileSystemXmlApplicationContext("applicationContext.xml")一直找不到文件  但是我是按照老师给的步骤来的,无语,找了很久,最后改用了绝对路径才找到。

6-4找到了别的解决办法,可以在applicationContext.xml里面直接给bean填写ref字段  然后在bean里面写上一个成员变量和一个set函数即可。

整合完毕hibernate和spring之后开始加入struts出现了一个错误:

严重: Exception starting filter struts2 

Caught exception while loading file struts-default.xml - [unknown location] 

在这个链接找到了解决方法:  http://bbs.csdn.net/topics/350193538

这种错误真正原因不是JDK 6和Struts 2冲突, 而是 MyEclipse Hibernate 类库中多了两个包: xml-apis.jar和xerces-2.6.2.jar, 这两个包的功能和JDK的冲突了. 解决办法: 1. 删除发布后目录的 WEB-INF/lib/ 下的这两个文件; 2. 或者使用JDK 1.5来启动Tomcat 6. 

6-2继续整合框架

昨天因为AOP没搞对,切入到了ACTION里面结果导致action里面的对象都成了空,后来只能老老实实将service和action分离到不同的包中

6-4

到今天为止基本上都整合完毕了,遇到了一个问题,做完分页功能后   在页面见进行切换的时候  如果切的次数过多会造成后来无法再连接,这个跟datasource里的配置

<property name="maxActive" value="255"></property>
有关  而且最主要的在于我在DAO里面没有关闭session造成每点一次都新建了一次session


public List<Item> getItemsInPage(int page,int numOfPage)
	{
		log.debug("finding itemsInPage instances");
		Session se = null;
		Query query = null;
		try {
			String queryString = "from Item item order by item.itemId desc";
			se = this.getSession();
			query = se.createQuery(queryString);
			query.setFirstResult(page*numOfPage);
			query.setMaxResults(numOfPage);
			List<Item> list = query.list();
		 	return list;
		} catch (RuntimeException re) {
			log.error("getItemsInPage failed", re);
			throw re;
		} finally{
			if(se != null){
				se.close();
			}
		}
	}

如果没关闭se  会导致session随着操作增加  不断增加,最终导致数据库连接池的数量被占满,无法接受新的请求。


整合dwr的时候需要改成这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
	<allow>
		<create creator="spring" javascript="mytest1">
			<param name="beanName" value="test"/>
		</create>
	</allow>
</dwr>


6-11今天用到了AOP注入的around


@Around("test()")
public String before(ProceedingJoinPoint  pjp) {
	ActionContext ac = ActionContext.getContext();
	Map session = ac.getSession();
	if (session==null)
	{
		session = new HashMap();
	}
	
	try {
		String result = (String) pjp.proceed();
		String username = (String) session.get("username");
		if(username==null||session==null)
		{
			return "input";
		}
		return result;
	} catch (Throwable e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	return "success";
}

如上面的代码  如果把 String username = (String)session.get("username");放在proceed()方法之前  就会导致一些错误,因为around这个方法proceed前面的代码是运行在被拦截方法前面的,之前陷入一个误区,导致一直出错。这样算是实现了一个简单的权限管理(处理游客和会员)


6-16今天用ssh做课程设计

有个一对多的问题,查了半天不知道hql怎么写

最后发现可以在逆向工程的时候勾选被引用的类,比如:

userId是Comment表的外键是User表的主键,可以在逆向工程的时候勾选include referencing tables(A<-B)

这样就可以生成带关联关系的bean

6-17发现一个蛋疼的问题,逆向工程生成bean的时候默认的关联外键竟然是主键  而不是指定的另一个唯一约束字段。

后来只能把数据库表里面的外键关联直接设为两一个表的主键

查询的时候报错。

org.hibernate.LazyInitializationException: could not initialize proxy - no Session at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:108) at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyI

看了以下网上的说法  是因为延迟加载的原因(hibernate默认延迟加载,如News 中的user会在需要时才往数据库中 查找,但是这时session已经关闭,所以会报错)

解决方法如下  加上lazy="false"即可

 <class name="com.bean.News" table="tb_news" catalog="travel" lazy="false">


经典书籍_框架整合

经典书籍_框架整合
  • shenzhq1980
  • shenzhq1980
  • 2015年09月15日 11:51
  • 13181

《Java EE互联网轻量级框架整合开发》读书笔记

2017年12月13日前言其实一直在IT相关领域干了这么久,读了这本书的前言才明白互联网系统和传统的管理系统的区别:移动互联网的新要求:----高并发----高响应----数据一致性----技术复杂化...
  • tnt87
  • tnt87
  • 2017年12月13日 22:15
  • 477

SSH框架整合步骤总结(亲身实践的啊)

Spring整合Struts2 1,  建立javaweb工程 2,  加入Strut2相关库和Spring.jar,最后加入Struts2和Spring的连接库 3,  配置web.xml,加...
  • zhanggh900921
  • zhanggh900921
  • 2015年06月06日 15:00
  • 1188

SSH框架整合demo

Struts、Spring、Hibernate整合 一、创建web工程,搭建Struts框架开发环境: 这里只导入了项目中所需要的重要的jar包,以后根据业务要求继续导入相关的包。 步骤1::导...
  • btt2013
  • btt2013
  • 2016年04月03日 22:09
  • 18275

SSH框架整合实现Java三层架构实例(一)

HTML前台发送请求代码: 选择收派时间
  • a772304419
  • a772304419
  • 2017年12月26日 11:22
  • 90

shiro学习笔记(一):shiro介绍以及整合SSM框架

1.Shiro是什么?  Apache Shiro是Java的一个安全框架。可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 2.Shiro能做什么? Authe...
  • Frank_Hsu_
  • Frank_Hsu_
  • 2018年02月04日 16:27
  • 17

Spring及三大框架整合

课堂笔记 Spring概述 Spring介绍          Spring它是一个一站式的分层轻量级框架。 Spring体系结构           1.      core con...
  • zgy_boke
  • zgy_boke
  • 2017年10月26日 16:41
  • 115

即将出版《Java EE 互联网轻量级框架整合开发》封面,准备源码中

新书《Java EE 互联网轻量级框架整合开发》即将发布,详细介绍了SSM+Redis,希望有惊喜,给个封面大家瞧瞧,希望大麦...
  • ykzhen2015
  • ykzhen2015
  • 2017年06月25日 08:36
  • 1565

《Java EE 互联网轻量级框架整合开发——SSM+Redis实现》7月初即将上市

《Java EE 互联网轻量级框架整合开发 —— SSM 框架( Spring MVC+Spring+MyBatis)和 Redis 实现》 即将出版,采用大开本,预计定价119,前言+目录+正...
  • ykzhen2015
  • ykzhen2015
  • 2017年06月19日 11:29
  • 4852

SSM框架整合思想

Spring+Mybatis+SpringMVC框架是目前流行的Java框架组合。 整合整体分为三层:Dao层,Service层和表现层。 以maven项目为例,建立一个聚合工程,每个层次都是一个...
  • sunshuo1231
  • sunshuo1231
  • 2017年09月07日 21:57
  • 351
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:框架整合
举报原因:
原因补充:

(最多只允许输入30个字)