标签:
一。简介:
使用ssh框架开发,版本皆为最新版,具体版本为struts-2.3.30、hibernate-release-5.2.2、spring-framework-4.3.2,需要在jdk8下面运行。如果出现major version 52之类的错误,说明你的jdk版本不合适(51对应的是java 7)。
二。导包:
1.struts2 包,导入struts2-blank里面的jar包以及struts2-spring-plugin-2.3.30包(本项目中控制器action不由spring容器管理)。
2.导入hibernate和MySQL驱动包以及c3p0。
3.导入spring包和aspectj(使用声明式事务管理需要这个,不导入这个启动时就会出错。)
4.更改JRE System Library为jdk8,使用tomcat 8运行。
三。数据库配置
使用MySQL innodb引擎,建立数据库,设置数据库的字符集utf-8。
四。开始整合测试
1.整合spring和Struts2。
①web.xml配置spring容器和Struts2核心filter。
②测试Struts2及spring(略)。
③测试Struts2和spring整合(接口代码略)
服务层代码:
1 package cn.jack.test.service.impl; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 import org.springframework.stereotype.Service; 6 7 import cn.jack.test.service.TestService; 8 9 @Service("testService") 10 public class TestServiceimpl implements TestService { 11 public void say() { 12 System.out.println("服务层测试成功"); 13 } 14 15 public static void main(String[] args) { 16 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 17 TestService test = (TestService) context.getBean("testService"); 18 test.say(); 19 } 20 }
控制层代码:
1 package cn.jack.test.action; 2 3 import javax.annotation.Resource; 4 5 import org.springframework.stereotype.Controller; 6 7 import cn.jack.test.service.TestService; 8 9 import com.opensymphony.xwork2.ActionSupport; 10 11 @Controller 12 public class TestAction extends ActionSupport { 13 14 private static final long serialVersionUID = 1L; 15 @Resource(name = "testService") 16 TestService testService; 17 18 @Override 19 public String execute() { 20 testService.say(); 21 return SUCCESS; 22 } 23 24 }
Struts2 配置
1 <action name="test" class="cn.jack.test.action.TestAction"> 2 <result name="success">WEB-INF/jsp/test/testok.jsp</result> 3 </action>
显示正常
2.spring整合hibernate以及ssh框架整合
①.配置dao层,配置在daoContext.xml中
使用property-placeholder属性占位符配置器这个容器后处理器配置数据库;
配置c3p0数据源dataSource 这个spring bean;
配置SessionFactory,使用org.springframework.orm.hibernate5.LocalSessionFactoryBean这个类,并依赖注入数据源(上面定义的dataSource),annotatedClasses属性列出全部持久化类,hibernateProperties属性指定数据库方言、是否自动建表、是否生成SQL语句等;
配置Hibernate的局部事务管理器,使用HibernateTransactionManager类 ,依赖注入SessionFactory ;
<tx:advice 命名空间配置事务增强处理Bean,指定事务管理器,配置详细的事务定义;
AOP配置事务切入服务层。
②实体层,编写Book这个vo,复写toString方法,使用注解,并配置到SessionFactory的annotatedClasses属性中
③复制一个basedao,以及使用泛型的hibernate实现的BaseDaoHibernate5,@Autowired自动装配sessionFactory。(这个是前期准备工作)
④DAO层,Bookdao继承BaseDaoHibernate5,泛型化类型参数,使用@Repository标记这个spring bean。
⑤服务层,编写BookService及BookServiceimpl,并用@Service标记,然后在main方法测试(由于配置事务管理在服务层,所以只能在服务层测试,而不能在DAO层测试)代码如下(暂时只列出增加和显示全部的功能):
1 package cn.jack.test.service.impl; 2 3 import java.util.List; 4 import javax.annotation.Resource; 5 import org.springframework.context.ApplicationContext; 6 import org.springframework.context.support.ClassPathXmlApplicationContext; 7 import org.springframework.stereotype.Service; 8 import cn.jack.test.dao.Bookdao; 9 import cn.jack.test.service.BookService; 10 import cn.jack.test.vo.Book; 11 12 @Service("bookService") 13 public class BookServiceimpl implements BookService { 14 15 @Resource(name = "bookDao") 16 Bookdao bookdao; 17 18 public void addBook(Book book) { 19 bookdao.save(book); 20 } 21 22 @Override 23 public List<Book> getAllBooks() { 24 return bookdao.findAll(Book.class); 25 } 26 27 public static void main(String[] args) { 28 ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); 29 BookService sc = app.getBean("bookService", BookService.class); 30 Book bk1 = new Book(); 31 bk1.setName("Java编程思想"); 32 bk1.setAuthor("BRUCE ECKEL"); 33 bk1.setPress("机械工业出版社"); 34 Book bk2 = new Book("JAVA核心技术 卷2 高级特性", "HORSTMANN", "机械工业出版社"); 35 Book bk3 = new Book(3, "Java深入解析 透析Java本质的36个话题", "梁勇", "电子工业出版社"); 36 sc.addBook(bk1); 37 sc.addBook(bk2); 38 sc.addBook(bk3); 39 List<Book> bks = sc.getAllBooks(); 40 for (Book bk : bks) 41 System.out.println(bk.getId() + "**" + bk.getName() + "**"+ bk.getAuthor() + "**" + bk.getPress()); 42 } 43 44 }
经测试,通过
⑥控制层
1 package cn.jack.test.action; 2 3 import java.util.List; 4 5 import javax.annotation.Resource; 6 7 import org.springframework.stereotype.Controller; 8 9 import cn.jack.test.service.BookService; 10 import cn.jack.test.vo.Book; 11 12 import com.opensymphony.xwork2.ActionSupport; 13 14 @Controller 15 public class BookAction extends ActionSupport { 16 17 private static final long serialVersionUID = 1L; 18 @Resource(name = "bookService") 19 private BookService bookService; 20 private List<Book> books; 21 private Book book; 22 23 public String list() { 24 books = bookService.getAllBooks(); 25 return "list"; 26 } 27 28 public String addui() { 29 return "addui"; 30 } 31 32 public String add() { 33 System.out.println(book); 34 if (book.getAuthor().length() == 0 | book.getName().length() == 0 35 | book.getPress().length() == 0) 36 return addui(); 37 System.out.println(book.getName()); 38 bookService.addBook(book); 39 return "redirectlist"; 40 } 41 42 public BookService getBookService() { 43 return bookService; 44 } 45 46 public void setBookService(BookService bookService) { 47 this.bookService = bookService; 48 } 49 50 public List<Book> getBooks() { 51 return books; 52 } 53 54 public void setBooks(List<Book> books) { 55 this.books = books; 56 } 57 58 public Book getBook() { 59 return book; 60 } 61 62 public void setBook(Book book) { 63 this.book = book; 64 } 65 66 }
以及Struts配置:
1 <action name="book_*" class="cn.jack.test.action.BookAction" method="{1}"> 2 <interceptor-ref name="defaultStack" /> 3 <interceptor-ref name="token"> 4 <!-- 哪些方法被令牌拦截器拦截,因为是使用通配符配置,此项必须配置 --> 5 <param name="includeMethods">add</param> 6 </interceptor-ref> 7 8 9 <result name="list" >/WEB-INF/jsp/test/book_list.jsp</result> 10 <result name="addui">/WEB-INF/jsp/test/book_add.jsp</result> 11 <result name="redirectlist" type="redirectAction"> 12 <param name="actionName">book_list</param> 13 </result> 14 <result name="invalid.token">/WEB-INF/jsp/common/invalid.jsp</result> 15 </action>
⑦spring配置自动扫描的包。
⑧视图层,使用Struts2标签。
经过测试,一切显示正常。
标签:
原文地址:http://www.cnblogs.com/yang-jack/p/5944567.html