<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    迷失北京

    BlogJava 聯系 聚合 管理
      60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

    Struts2+Hibernate+Spring環境的搭建

          最近這些天一直在學習ssh,有的人說沒有必要為了學習框架而學習框架!!我覺得自己就是為了學習框架而學習框架,不過也是形勢所逼呀!暫且不管別人是怎么說的了,學習這種東西只要學習了就是自己的,相信知識是不會白學習的,不要“書到用時方恨少”,哈哈...有點未雨綢繆的意思了。先學習用著再說,然后逐步提高吧還是!!

          把具體的搭建過程記錄一下:(項目運行環境:Myeclipse+Mysql+JDK1.6)

          步驟一:在Myeclipse中創建三個user liberary分別是struts2,hibernate,spring運行所必需的jar包,創建項目后引入剛才創建的三個liberary。

          步驟二:修改web.xml的配置,具體如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    	
    	<!-- 配置加載spring配置文件 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:applicationContext.xml</param-value>
    	</context-param>
    	<!-- lazy initial session自動關閉,但是頁面請求未完成!-->
    	<!-- 第二種解決方案openSessionInViewInterceptor -->
    	<filter>
    		<filter-name>openSessionInView</filter-name>
    		<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>openSessionInView</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    	
    	
    	<!-- struts2 -->
    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    	
    	
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

      

          步驟三:修改spring的配置文件,具體代碼如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.0.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
               http://www.springframework.org/schema/tx           
               http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
    	<context:annotation-config />
    	<!-- 根據annotation注入 -->
    	<context:component-scan base-package="com.wk" />
    	<!-- 創建dataSource -->
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    		destroy-method="close">
    		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    		<property name="url" value="jdbc:mysql://localhost:3306/spring" />
    		<property name="username" value="root" />
    		<property name="password" value="wangkang" />
    	</bean>
    	<!-- 整合hibernate -->
    	<bean id="sessionFactory"
    		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="packagesToScan">
    			<list>
    				<value>com.wk.model</value>
    			</list>
    		</property>
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    				<prop key="hibernate.show_sql">true</prop>
    			</props>
    		</property>
    	</bean>
    	<!-- spring_xml事務管理-->
    	<bean id="txManager"
    		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    		<property name="sessionFactory" ref="sessionFactory" />
    	</bean>
    	<aop:config>
    		<aop:pointcut id="serviceBusiness" expression="execution(public * com.web..*.add(..))" />
    		<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceBusiness"
    			order="2" />
    	</aop:config>
    	<tx:advice id="txAdvice" transaction-manager="txManager">
    		<tx:attributes>
    			<tx:method name="get*" read-only="true" />
    			<tx:method name="add*" propagation="REQUIRED" />
    		</tx:attributes>
    	</tx:advice>
    	<!-- HibernateTemplate -->
    	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    		<property name="sessionFactory">
    			<ref bean="sessionFactory" />
    		</property>
    	</bean>
    </beans>
    

      

    spring注入的時候用的是Annotation 的方式,hibernate映射的時候也是用的Annotation的方式

          貼出其他的代碼,主要是配置文件寫的時候比較費勁,其他的東西還是比較好搞定的:

          1.model---Person

    package com.wk.model;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import org.springframework.stereotype.Component;
    @Entity
    @Component("person")
    public class Person {
    	private int id;
    	private String name;
    	private String address;
    	private String profession;
    	public Person() {
    		super();
    	}
    	@Id
    	@GeneratedValue
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	public String getProfession() {
    		return profession;
    	}
    	public void setProfession(String profession) {
    		this.profession = profession;
    	}
    }
    

      

          2.dao---PersonDAO

    package com.wk.dao;
    import com.wk.model.Person;
    public interface PersonDAO {
    	public int save(Person person);
    	public int delete(int id);
    	public int update(Person person);
    	public Person getPerson(int id);
    }
    

      

          3.impl---PersonDAOImpl

    package com.wk.dao.impl;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.springframework.stereotype.Component;
    import com.wk.dao.PersonDAO;
    import com.wk.model.Person;
    import com.wk.util.HibernateUtil;
    @Component("personDAO")
    public class PersonDAOImpl implements PersonDAO {
    	public int delete(int id) {
    		Session session = HibernateUtil.getSessionfactory().getCurrentSession();
    		Person person = new Person();
    		try {
    			session.beginTransaction();
    			person.setId(id);
    			session.delete(person);
    			session.beginTransaction().commit();
    			return 1;
    		} catch (HibernateException e) {
    			e.printStackTrace();
    		}
    		return 0;
    	}
    	public Person getPerson(int id) {
    		Session session = HibernateUtil.getSessionfactory().getCurrentSession();
    		Person person = new Person();
    		try {
    			session.beginTransaction();
    			person = (Person) session.get(Person.class, id);
    			session.beginTransaction().commit();
    			return person;
    		} catch (HibernateException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	public int save(Person person) {
    		Session session = HibernateUtil.getSessionfactory().getCurrentSession();
    		try {
    			session.beginTransaction();
    			session.save(person);
    			session.beginTransaction().commit();
    			return 1;
    		} catch (HibernateException e) {
    			e.printStackTrace();
    		}
    		return 0;
    	}
    	public int update(Person personVo) {
    		Session session = HibernateUtil.getSessionfactory().getCurrentSession();
    		Person person = new Person();
    		try {
    			session.beginTransaction();
    			person = (Person) session.load(Person.class, personVo.getId());
    			
    			person.setName(personVo.getName());
    			person.setAddress(personVo.getAddress());
    			person.setProfession(personVo.getProfession());
    			
    			session.update(person);
    			session.flush();//提高效率
    			session.beginTransaction().commit();
    			return 1;
    		} catch (HibernateException e) {
    			e.printStackTrace();
    		}
    		return 0;
    	}
    }
    

      

          4.strutsAction---PersonAction

    package com.wk.action;
    import javax.annotation.Resource;
    import org.springframework.stereotype.Component;
    import com.opensymphony.xwork2.ActionSupport;
    import com.wk.dao.PersonDAO;
    import com.wk.dao.impl.PersonDAOImpl;
    import com.wk.model.Person;
    @Component("personAction")
    public class PersonAction extends ActionSupport {
    	private static final long serialVersionUID = -3699819837781302739L;
    	PersonDAO personDAO = new PersonDAOImpl();
    	Person person = new Person();
    	int id = 0;
    	public String addPerson() {
    		int flag = personDAO.save(person);
    		if (flag == 1) {
    			return "success";
    		} else {
    			return "fail";
    		}
    	}
    	public String delPerson() {
    		int flag = personDAO.delete(id);
    		if (flag == 1) {
    			return "success";
    		} else {
    			return "fail";
    		}
    	}
    	public String updatePerson() {
    		int flag = personDAO.update(person);
    		if (flag == 1) {
    			return "success";
    		} else {
    			return "fail";
    		}
    	}
    	public String searchPerson() {
    		person = personDAO.getPerson(id);
    		if (person != null) {
    			return "success";
    		} else {
    			return "fail";
    		}
    	}
    	public Person getPerson() {
    		return person;
    	}
    	public void setPerson(Person person) {
    		this.person = person;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public PersonDAO getPersonDAO() {
    		return personDAO;
    	}
    	@Resource(name = "personDAO")
    	public void setPersonDAO(PersonDAO personDAO) {
    		this.personDAO = personDAO;
    	}
    }
    

      

    差不多就是這樣了,這是封裝了后代的代碼沒有前臺的展示,不過Junit全部測試通過了。

    posted on 2010-12-27 22:00 王康 閱讀(824) 評論(1)  編輯  收藏

    Feedback

    # re: Struts2+Hibernate+Spring環境的搭建【SSH搭建】!! 2012-11-24 08:10 吳宏偉
    博主 能不能把HibernateUtil這個類貼出來啊   回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产成人AV免费观看| 日韩免费在线中文字幕| 成人精品一区二区三区不卡免费看 | 免费人成在线观看视频播放| 亚洲日韩一中文字暮| 在线观看视频免费国语| 99久久久精品免费观看国产| 久久精品国产亚洲av日韩| 99在线热视频只有精品免费| 亚洲视频网站在线观看| 免费视频专区一国产盗摄| 国产亚洲精品影视在线| 免费黄色大片网站| 亚洲国产精品一区二区第一页 | 亚洲熟妇中文字幕五十中出| 两个人看的www视频免费完整版| 全免费A级毛片免费看网站| 色欲色欲天天天www亚洲伊| 国产jizzjizz视频免费看 | 亚洲一区二区三区免费在线观看| 精品无码免费专区毛片| 亚洲性日韩精品一区二区三区 | 老司机永久免费网站在线观看| 国产亚洲福利在线视频| 国产亚洲精品免费| 中文字幕不卡免费高清视频| 亚洲专区先锋影音| 免费黄色小视频网站| 一个人免费观看视频在线中文| 色www永久免费视频| 亚洲一区二区三区免费| 久久亚洲精品国产精品黑人| 老司机在线免费视频| 麻豆安全免费网址入口| 国产麻豆剧传媒精品国产免费 | 99视频在线免费| 亚洲视频无码高清在线| 亚洲精品成人区在线观看| 色偷偷亚洲第一综合| 国产美女亚洲精品久久久综合| 亚洲免费人成视频观看|