码迷,mamicode.com
首页 > 其他好文 > 详细

练习一:1.开发前奏,使用全注解整合最新版ssh框架

时间:2016-10-10 13:50:09      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

一。简介:

使用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 }
View Code

控制层代码:

技术分享
 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 }
View Code

Struts2 配置

技术分享
1 <action name="test" class="cn.jack.test.action.TestAction">
2         <result name="success">WEB-INF/jsp/test/testok.jsp</result>
3         </action>
View Code

显示正常

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 }
View Code

经测试,通过

⑥控制层

技术分享
 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 }
View Code

以及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>
View Code

 

⑦spring配置自动扫描的包。

⑧视图层,使用Struts2标签。

 经过测试,一切显示正常。

练习一:1.开发前奏,使用全注解整合最新版ssh框架

标签:

原文地址:http://www.cnblogs.com/yang-jack/p/5944567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!