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

基于注解配置SSH框架

时间:2016-04-07 01:39:00      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:配置文件   服务器   注解ssh   

采用注解的方式,也不能完全的丢掉配置文件,因为配置文件是程序的入口,是基础。服务器启动最先加载web.xml文件,读取其中的配置信息,将程序运行所需要的信息进行初始化。因为是整合SSH,所以web.xml文件中需要配置Spring以及Struts的信息,同时Spring跟Struts也需要进行一些基本的配置。

 

首先配置web.xml文件

 

1. <?xml version="1.0" encoding="UTF-8"?>  

2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

3. xmlns="http://java.sun.com/xml/ns/javaee"   

4. xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   

5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="SSH" version="2.5">  

6.   <display-name>ssh</display-name>  

7.   <welcome-file-list>  

8.     <welcome-file>index.jsp</welcome-file>  

9.   </welcome-file-list>  

10.     

11.   <!-- 配置Spring的监听器,用于初始化ApplicationContext对象 -->  

12.   <listener>  

13.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

14.   </listener>  

15.   <context-param>  

16.     <param-name>contextConfigLocation</param-name>  

17.     <param-value>classpath:applicationContext*.xml</param-value>  

18.   </context-param>  

19.     

20.   <!-- struts2 的配置 -->  

21.   <filter>  

22.     <filter-name>struts2</filter-name>  

23.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  

24.     <init-param>  

25.       <param-name>filterConfig</param-name>  

26.       <param-value>classpath:struts.xml</param-value>  

27.     </init-param>  

28.       

29.     <!-- 自动扫描action -->  

30.     <init-param>  

31.       <param-name>actionPackages</param-name>  

32.       <param-value>com.ssh</param-value>  

33.     </init-param>  

34.   </filter>  

35.     

36.   <filter-mapping>  

37.     <filter-name>struts2</filter-name>  

38.     <url-pattern>/*</url-pattern>  

39.   </filter-mapping>  

40. </web-app>  

 

web.xml中包含了Spring和struts的基本配置,自动扫描Action的配置就是告诉tomcat,我要使用注解来配置struts。

 

applicationContext.xml

 

1. <?xml version="1.0" encoding="UTF-8"?>      

2. <beans xmlns="http://www.springframework.org/schema/beans"      

3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"      

4.     xmlns:tx="http://www.springframework.org/schema/tx"      

5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd      

6.                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd      

7.                 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">      

8.     

9.     <!-- 自动扫描与装配bean -->      

10.     <context:component-scan base-package="dao,biz,action"></context:component-scan>      

11.         

12.     <!-- dbcp配置 -->    

13.     <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">    

  

14.         <property name="driverClassName">    

15.             <value>oracle.jdbc.OracleDriver</value>    

16.         </property>    

17.         <property name="url">    

18.             <value>jdbc:oracle:thin:@localhost:1521:orcl</value>    

19.         </property>    

20.         <property name="username">    

21.             <value>root</value>    

22.         </property>    

23.         <property name="password">    

24.             <value>123456</value>    

25.         </property>    

26.     </bean>    

27.             

28.     <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">    

29.         <property name="dataSource">    

30.             <ref local="dataSource" />    

31.         </property>    

32.         <property name="hibernateProperties">    

33.             <props>    

34.                 <!--配置Hibernate的方言-->    

35.                 <prop key="hibernate.dialect">    

36.                  org.hibernate.dialect.MySQLDialect    

37.                 </prop>                    

38.                 <prop key="hibernate.hbm2ddl.auto">update</prop>    

39.                     

40.                 <!--格式化输出sql语句-->    

41.                 <prop key="hibernate.show_sql">true</prop>    

42.                 <prop key="hibernate.format_sql">true</prop>      

43.                 <prop key="hibernate.use_sql_comments">false</prop>      

44.             </props>    

45.         </property>    

46.             

47.         <!--自动扫描实体 -->    

48.         <property name="packagesToScan"  value="com.tgb.ssh.model" />    

49.     </bean>    

50.         

51.     <!-- 用注解来实现事务管理 -->    

52.     <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">    

53.         <property name="sessionFactory" ref="sessionFactory"></property>          

54.     </bean>    

55.     <tx:annotation-driven transaction-manager="txManager"/>    

56.         

57. </beans>   

 

Struts.xml文件的基本配置,并有spring来管理

 

1. <?xml version="1.0" encoding="UTF-8"?>    

2. <!DOCTYPE struts PUBLIC    

3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    

4. "http://struts.apache.org/dtds/struts-2.3.dtd">     

5.         

6. <struts>    

7.   

8.     <!-- 开启使用开发模式,详细错误提示 -->    

9.     <constant name="struts.devMode" value="true" />    

10.     <!-- 将对象交给spring管理 -->    

11.     <constant name="struts.objectFactory" value="spring" />    

12.     <!-- 指定资源编码类型 -->    

13.     <constant name="struts.i18n.encoding" value="UTF-8" />     

14.     <!-- 指定每次请求到达,重新加载资源文件 -->    

15.     <constant name="struts.i18n.reload" value="false" />    

16.     <!-- 指定每次配置文件更改后,自动重新加载 -->    

17.     <constant name="struts.configuration.xml.reload" value="false" />    

18.     <!-- 默认后缀名 -->    

19.     <constant name="struts.action.extension" value="action," />       

20.     

21. </struts>   

 

然后就是代码的书写了:

UserAction通过注解配置Action的名字和返回的页面,通过@Resource活动Spring注入的UserManager对象,然后进行相应的操作。Action里还有@Namespace、@InterceptorRef等很多注解可以用,根据自己需要选择吧。

 

1. package com.tgb.ssh.action;  

2.   

3. import javax.annotation.Resource;  

4.   

5. import org.apache.struts2.convention.annotation.Action;  

6. import org.apache.struts2.convention.annotation.Result;  

7. import org.apache.struts2.convention.annotation.Results;  

8.   

9. import com.opensymphony.xwork2.ActionSupport;  

10. import com.tgb.ssh.model.User;  

11. import com.tgb.ssh.service.UserManager;  

12.   

13.   

14. @Results( { @Result(name="success",location="/success.jsp"),  

15.         @Result(name="failure",location="/failure.jsp") })   

16. public class UserAction extends ActionSupport {  

17.     @Resource  

18.     private UserManager userManager;  

19.     private User user;  

20.       

21.     @Action(value="addUser")  

22.     public String addUser() {  

23.         try {  

24.             userManager.addUser(user);          

25.         } catch (Exception e) {  

26.             e.printStackTrace();  

27.             return "failure";  

28.         }  

29.         return "success";  

30.           

31.     }      

32.   

33.     public User getUser() {  

34.         return user;  

35.     }  

36.     public void setUser(User user) {  

37.         this.user = user;  

38.     }  

39.       

40.       

41. }  

对象的usermanage

UserManager通过@Service自动装配到Spring的容器,为其他组件提供服务;通过@Transactional进行事务的管理;通过@Resource注入UserDao对象。

1. package com.tgb.ssh.service;  

2.   

3. import javax.annotation.Resource;  

4.   

5. import org.springframework.stereotype.Service;  

6. import org.springframework.transaction.annotation.Transactional;  

7.   

8. import com.tgb.ssh.dao.UserDao;  

9. import com.tgb.ssh.model.User;  

10.   

11. @Service  

12. @Transactional  

13. public class UserManager {  

14.     @Resource  

15.     UserDao userDao;  

16.       

17.     public void addUser(User user) {  

18.         userDao.addUser(user);  

19.     }  

20.       

21. }  

 

Userdao的写法

UserDao通过@Repository自动装配到Spring的容器,通过@Resource获得Sessionfactory,将User对象持久化

1. package com.tgb.ssh.dao;  

2.   

3. import javax.annotation.Resource;  

4.   

5. import org.hibernate.Session;  

6. import org.hibernate.SessionFactory;  

7. import org.hibernate.Transaction;  

8. import org.springframework.orm.hibernate4.HibernateTemplate;  

9. import org.springframework.stereotype.Repository;  

10.   

11. import com.tgb.ssh.model.User;  

12.   

13. @Repository  

14. public class UserDao {  

15.     @Resource(name="sessionFactory")   

16.     private SessionFactory sessionFactory;  

17.       

18.     public void addUser(User user ) {  

19.         Session session = sessionFactory.getCurrentSession();  

20.         session.save(user);  

21.     }  

22.   

23. }  

User实体类

User通过@Entity将实体类映射到数据库,生成t_user表,通过@Id定义表的Id,通过@GenerateValue定义Id的生成策略。

1. package com.tgb.ssh.model;  

2.   

3. import javax.persistence.Entity;  

4. import javax.persistence.GeneratedValue;  

5. import javax.persistence.GenerationType;  

6. import javax.persistence.Id;  

7.   

8.   

9. @Entity(name="t_user")  

10. public class User {  

11.     @Id  

12.     @GeneratedValue(strategy = GenerationType.IDENTITY)  

13.     private int id;  

14.     private String name;  

15.     private String password;      

16.        

17.       

18.     public int getId() {  

19.         return id;  

20.     }  

21.   

22.     public void setId(int id) {  

23.         this.id = id;  

24.     }  

25.   

26.     public String getName() {  

27.         return name;  

28.     }  

29.       

30.     public void setName(String name) {  

31.         this.name = name;  

32.     }  

33.     public String getPassword() {  

34.         return password;  

35.     }  

36.     public void setPassword(String password) {  

37.         this.password = password;  

38.     }  

39. }  

好了,到此为止,基于注解的SSH就算是搭建完成了。基础的搭建已经使注解简洁的优势初现端倪,随着开发的进行,代码不断地增加,其简洁的风格相比传统配置文件的方式会更加明显。因为如果采用配置文件的方式,每增加一个Action都需要在struts.xml和applicationContext.xml文件增加一段代码;每多一个实体,也需要多一个*.hbm.xml文件。配置文件泛滥是一件让人头疼的事情。


本文出自 “11382920” 博客,请务必保留此出处http://11392920.blog.51cto.com/11382920/1761077

基于注解配置SSH框架

标签:配置文件   服务器   注解ssh   

原文地址:http://11392920.blog.51cto.com/11382920/1761077

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