框架整合

原创 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">


ssh框架整合jar包和相关配置文件

  • 2017年11月12日 17:07
  • 17.28MB
  • 下载

springBoot整合Jpa的框架

  • 2017年10月16日 11:25
  • 448KB
  • 下载

Spring boot 整合SSM框架三层架构并前后台restful风格交互

pom.xml文件

SSH框架整合包3.x

  • 2017年09月20日 15:57
  • 40.4MB
  • 下载

Spring 整合 Quartz 任务调度框架学习笔记

定时任务怎么做。 我们首先先新建一个任务 RefreshAccessTokenTask 通过 Job 来执行上面的 Task。参考资料: http://www.mkyong.com/spring...

ssh框架整合简单项目

  • 2016年07月30日 09:34
  • 1.5MB
  • 下载

Hibernate 与 Lucene 的整合框架详解

  • 2016年04月12日 09:16
  • 106KB
  • 下载

ssh框架整合hibernate,spring,struts,dwr等技术过程分析

ssh整合技术全过程总结分析 为了更清晰的分析ssh整合的流程,(也是为了巩固自己所学的)在这里我将要 先分析整合步骤,然后在将步骤细化分析(根据我所了解的)。部分代码块可能也 将贴出  ...

SSH框架整合必要的包

  • 2017年04月07日 16:41
  • 16.7MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:框架整合
举报原因:
原因补充:

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