`
zhangfeilo
  • 浏览: 401182 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Struts2整合Spring、JPA

阅读更多

一直觉得JPA很神秘,最近抽空看了下,下面贴出刚才做的Struts2整合Spring、JPA的例子。给自己的编程路留下新的脚印!

1.       打开MyEclipse新建Web project testJpa

2.       导入相关的Jar

3.       src下新建META-INF文件夹

4.       META-INF下添加persistence.xml文件,内容如下:

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

<persistence xmlns="http://java.sun.com/xml/ns/persistence"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence

    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

   

       <persistence-unit name="punit"></persistence-unit>

 

</persistence>

 

5.       src下新建spring配置文件:applicationContext.xml,并修改其内容:

<?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: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-2.0.xsd

     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd

     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

 

       <bean    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

 

       <!-- 配置Jpa -->

       <bean id="entityManagerFactory"

       class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

              <property name="dataSource" ref="dataSource" />

              <property name="jpaVendorAdapter">

                     <bean

              class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">

                            <property name="database" value="MYSQL" />

                            <property name="showSql" value="true" />

                     </bean>

              </property>

       

              <!-- 根据实体Bean自动生成表 -->

              <property name="jpaProperties">

                     <props>

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

                     </props>

              </property>

       </bean>

 

       <!-- 配置数据源 -->

       <bean id="dataSource"

              class="org.springframework.jdbc.datasource.DriverManagerDataSource">

              <property name="driverClassName" value="com.mysql.jdbc.Driver" />

              <property name="url" value="jdbc:mysql://localhost/testjpa" />

              <property name="username" value="root" />

              <property name="password" value="root" />

       </bean>

 

       <!-- 配置事务 -->

       <bean id="transactionManager"

              class="org.springframework.orm.jpa.JpaTransactionManager">

              <property name="entityManagerFactory"

                     ref="entityManagerFactory" />

       </bean>

       <tx:annotation-driven transaction-manager="transactionManager" />

</beans>

 

6.       修改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">

 

       <context-param>

              <param-name>contextConfigLocation</param-name>

              <param-value>

                     /WEB-INF/classes/applicationContext.xml

              </param-value>

       </context-param>

       <listener>

              <listener-class>

                     org.springframework.web.context.ContextLoaderListener

              </listener-class>

       </listener>

      

       <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>

 

7.       新建实体com.njy.model.Person.java

package com.njy.model;

 

import java.io.Serializable;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

 

@Entity

public class Person implements Serializable {

 

       @Id

       @GeneratedValue(strategy = GenerationType.IDENTITY)

       private int id;

       private String name;

       private int age;

       private String address;

 

       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 int getAge() {

              return age;

       }

 

       public void setAge(int age) {

              this.age = age;

       }

 

       public String getAddress() {

              return address;

       }

 

       public void setAddress(String address) {

              this.address = address;

       }

 

}

 

8.       编写Service接口:com.njy. serviceImpl.PersonService.java

package com.njy.service;

 

import java.util.List;

import com.njy.model.Person;

 

public interface PersonService {

 

       public void save(Person person);

 

       public void delete(Person person);

 

       public void update(Person person);

 

       public Person getById(Person person);

 

       public List<Person> getAll();

 

}

 

9.       Service的实现类:com.njy. serviceImpl. PersonServiceImpl.java

package com.njy.serviceImpl;

 

import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

import javax.persistence.Query;

import org.springframework.transaction.annotation.Transactional;

import com.njy.model.Person;

import com.njy.service.PersonService;

 

@Transactional

public class PersonServiceImpl implements PersonService {

 

       private EntityManager entityManager;

 

       public void delete(Person person) {

              //person = entityManager.find(Person.class, person.getId());

              person = entityManager.getReference(Person.class, person.getId());

              entityManager.remove(person);

       }

 

       @SuppressWarnings("unchecked")

       public List<Person> getAll() {

              Query query = getEntityManager().createQuery("select p FROM Person p");

              return query.getResultList();

       }

 

       public Person getById(Person person) {

              return entityManager.find(Person.class, person.getId());

       }

 

       public void save(Person person) {

              entityManager.persist(person);

       }

 

       public void update(Person person) {

              entityManager.merge(person);

       }

 

       public EntityManager getEntityManager() {

              return entityManager;

       }

 

       @PersistenceContext

       public void setEntityManager(EntityManager entityManager) {

              this.entityManager = entityManager;

       }

 

}

 

10.   applicationContext.xml中加入Service的配置:

<!-- 配置Service -->

<bean id="PersonService" class="com.njy.serviceImpl.PersonServiceImpl"

scope="prototype">

</bean>

 

11.   src下创建com.njy.action.Person.java

package com.njy.action;

 

import java.util.List;

import com.njy.model.Person;

import com.njy.service.PersonService;

 

public class PersonAction {

 

       private static final long serialVersionUID = 1L;

       private PersonService personService;

       private Person person;

       private List<Person> listPerson;

 

       public String save() {

              personService.save(person);

              return "toShowList";

       }

 

       public String delete() {

              personService.delete(person);

              return "toShowList";

       }

 

       public String update() {

              personService.update(person);

              return "toShowList";

       }

 

       public String getById() {

              person = personService.getById(person);

              return "toEdit";

       }

 

       public String getAll() {

              listPerson = personService.getAll();

              return "toList";

       }

 

       public PersonService getPersonService() {

              return personService;

       }

 

       public void setPersonService(PersonService personService) {

              this.personService = personService;

       }

 

       public Person getPerson() {

              return person;

       }

 

       public void setPerson(Person person) {

              this.person = person;

       }

 

       public List<Person> getListPerson() {

              return listPerson;

       }

 

       public void setListPerson(List<Person> listPerson) {

              this.listPerson = listPerson;

       }

 

}

 

12.   src下新建struts.xml文件:

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

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

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

<struts>

 

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

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

      

       <package name="PersonAction" extends="struts-default">

              <action name="person_*" method="{1}" class="personAction">

                     <result name="toShowList" type="redirect">

person_getAll.action

</result>

                     <result name="toList">/list.jsp</result>

                     <result name="toEdit">/edit.jsp</result>

              </action>

       </package>

</struts>

 

13.   applicationContext.xml中加入ActionService的配置:

<!-- 配置Action -->

<bean id="personAction" class="com.njy.action.PersonAction" scope="prototype">

       <property name="personService">

              <ref bean="PersonService" />

       </property>

</bean>

 

14.   新建数据库testJpa,如果此处不建该库,程序会抛错,之后发布并运行程序。

 

15.   View部分

既然是改写,这里我们依然采用之前的CRUD程序页面,详细代码请参看程序源代码,程序运行效果图如下所示:

【操作1:添加信息】

单击“添加”按钮,程序将转到列表页:

【操作2:修改信息】

修改后的列表页面:

【操作3:删除信息】

删除编号为1的记录,删除之后程序转到列表页:

 

程序源码的jar包在附件中,因附件大小有限制,故分成两个压缩包!请自行下载!

 

  • 大小: 19.1 KB
  • 大小: 19.7 KB
  • 大小: 18.3 KB
  • 大小: 19.7 KB
  • 大小: 18.8 KB

出自:http://xiaopihai.iteye.com/blog/403437

分享到:
评论

相关推荐

    Struts2 Spring Jpa 配置测试

    4. **整合Struts2、Spring和JPA**:在Action类中,通过Spring的@Autowired注解,可以直接注入需要的Service层对象,这些Service对象再通过JPA的EntityManager进行数据库操作。这样,请求处理(Struts2)、业务逻辑...

    Struts2+Spring+JPA实例

    在这个"Struts2+Spring+JPA实例"中,我们首先会看到如何将这三个框架整合在一起。整合的核心在于配置,通常需要在Struts2的配置文件(struts.xml)中定义Action类,这些类通常由Spring管理。Spring的配置文件(spring....

    struts2+spring+jpa整合的完整例子(含分页)

    在学习jpa时候做的一个struts2+spring+jpa整合的完整例子 包含分页,一个简单的 资产入库系统 并实现了登陆等。

    Struts2,spring2.5与jpa的整合示例

    在Struts2中整合Spring,主要目的是利用Spring的DI特性管理Struts2中的Action类。首先,需要在Struts2的配置文件(struts.xml)中添加Spring插件的配置,启用Spring插件支持。然后,Action类可以声明为Spring容器的...

    struts2_spring_jpa

    这个"struts2_spring_jpa"的整合案例旨在帮助开发者理解如何将这三个框架无缝集成,以构建高效、可维护的Web应用程序。 Struts2是一个强大的MVC(Model-View-Controller)框架,它提供了处理用户请求、控制应用程序...

    struts2_spring_jpa整合实例

    struts2_spring_jpa整合实例实现数据添加

    Struts2+JPA+Spring整合(PPT)

    **Struts2、JPA与Spring的整合** 在企业级Java开发中,Struts2、JPA(Java Persistence API)和Spring框架的整合是常见的技术栈选择,它们各自扮演着不同的角色,共同构建出强大的MVC(Model-View-Controller)架构...

    struts2整合spring、hibernate的jar包

    在整合Struts2时,我们需要配置Spring的`spring-beans.jar`、`spring-context.jar`等,通过Spring的ApplicationContext加载bean,并将这些bean注入到Struts2的Action中,以实现业务逻辑的解耦。同时,Spring还提供了...

    Struts+Spring+Jpa(hibernate)整合

    在提供的文件中,`Spring+Struts2+Jpa.ppt`可能是整合的讲解或教程,包含详细步骤和注意事项。`applicationContext.xml`是Spring的配置文件,其中会定义bean,包括DataSource、SessionFactory、TransactionManager等...

    JPA+Spring+Struts整合实例,JPA+Spring+Struts整合实例

    通过以上步骤,你就能完成一个基本的JPA+Spring+Struts整合应用。这种整合方式能充分利用每个框架的优点,提高代码的可维护性和可扩展性,降低开发复杂度。在实际项目中,你可能还需要考虑异常处理、安全控制、性能...

    Spring+Struts2+JPA

    **Spring+Struts2+JPA 整合详解** 在Java Web开发中,Spring、Struts2和JPA是三个非常重要的框架。Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个强大的MVC框架...

    struts2整合Spring和hibernate案例

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的不同层面发挥着重要作用。Struts2作为MVC(模型-视图-控制器)框架,负责处理请求和展示视图;Spring是一个全面的后端解决方案,提供...

    Struts2+Spring+JPA(Hibernate)的jar包

    Struts2、Spring和JPA(Hibernate)是Java Web开发中的三大核心框架,它们共同构建了一个强大、灵活且可扩展的后端系统。这个压缩包包含的jar文件是这三个框架协同工作所需的基础库。 首先,Struts2是一个基于MVC...

    struts2+spring+hibernate 整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合(SSH)极大地提升了开发效率和项目的可维护性。下面将详细讲解这三大框架的核心功能以及整合过程中的关键知识点。 1. **Struts2**:Struts2是一...

    struts2+spring+jpa小例子

    Struts2、Spring 和 JPA 是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:Struts2 主要处理 MVC(Model-View-Controller)架构中的控制层,Spring 提供全面的依赖注入(DI)以及面向切面编程(AOP),...

    Struts2+Spring+JPA的Jar包

    整合Struts2、Spring和JPA,可以实现MVC架构的完整流程:Struts2负责接收用户请求,通过Action处理业务逻辑,Spring管理这些Action对象以及数据访问层,JPA则处理与数据库的交互。这样的组合提供了良好的分层结构,...

    struts2+spring+jpa网上商城

    Struts2+Spring+JPA网上商城是一个典型的Java Web应用程序架构,它整合了三个主流的开源框架,用于构建高效、可扩展的电子商务平台。在这个项目中,Struts2作为前端控制器,Spring作为整体的应用框架,而JPA(Java ...

Global site tag (gtag.js) - Google Analytics