Struts+Spring+Hibernate&Struts2+Spring+JPA

来源:互联网 发布:office 2010 for mac 编辑:程序博客网 时间:2024/06/05 20:10

这两个架构SSH&SSJ操作并不相同,之前搞懂经典JAVAEE之后现在农SSH,在数据持久层这里发现了一个框架问题,就是在创建轻量级JAVAEE web项目的时候,可以在创建项目的时候直接指定SSH这三个框架,也可以在SS之后用JPA实现数据持久化,这两个东西目的虽然一样,但是操作不同,关于SSH,很多书上都写了,关于SSJ,我找了一篇文章来说明这个问题

Struts2+Spring+JPA 示例

下面仅列出一些重要的部分:
1.Service.java
package com.zcq.service;

import com.zcq.model.Person;

public interface Service {

public void savePerson(Person p);

2.ServiceImp.java
package com.zcq.serviceImp;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.transaction.annotation.Transactional;

import com.zcq.model.Person;
import com.zcq.service.Service;

@Transactional
public class ServiceImp implements Service {

EntityManager em;

public void savePerson(Person p) {
    em.persist(p);
}

public EntityManager getEm() {
    return em;
}

@PersistenceContext
public void setEm(EntityManager em) {
    this.em = em;
}

3.Person.java
package com.zcq.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Person {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String name;

private int age;

private String sex;//get/set方法

}
4.jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mysql
jdbc.username=root
jdbc.password=123456

5.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">

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

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

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

6.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的配置 -->

<bean id="person" class="com.zcq.model.Person" scope="prototype"></bean>
<bean id="serviceImp" class="com.zcq.serviceImp.ServiceImp"></bean>

<!-- struts2 bean 注入 -->

<bean id="personAction" class="com.zcq.action.PersonAction" scope="prototype">
   <property name="service" ref="serviceImp"></property>
   <property name="person" ref="person"></property>
</bean>

<!-- 属性配置文件 -->

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations">
    <list>
     <value>WEB-INF/jdbc.properties</value>
    </list>
   </property>
</bean>

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

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
   <property name="driverClass" value="${jdbc.driverClassName}"></property>
   <property name="jdbcUrl" value="${jdbc.url}"></property>
   <property name="user">
    <value>${jdbc.username}</value>
   </property>
   <property name="password">
    <value>${jdbc.password}</value>
   </property>
   <property name="minPoolSize" value="5"></property>
   <property name="maxPoolSize" value="20"></property>
   <property name="acquireIncrement" value="5"></property>
</bean>

<!-- JPA 的配置 -->

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
   <property name="dataSource" ref="dataSource"></property>
   <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
     <property name="showSql" value="true" />
    </bean>
   </property>
   <property name="jpaProperties">
    <props>
     <prop key="hibernate.hbm2ddl.auto">update</prop>
    </props>
   </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
   <property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>

<!-- spring 注解性事物配置 -->

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

<!-- 基于EntityManager的注解配置 -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"></bean>
</beans>

7.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" /><package name="Action" extends="struts-default">
   <action name="person_*" method="{1}" class="personAction"><!-- personAction已经在spring中配置了,这里就是id -->
    <result name="success">/success.jsp</result>
   </action>
</package>
</struts>

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

9.index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>    <title>My JSP 'index.jsp' starting page</title>
</head><body>   <s:form action="person_save" theme="simple">
    name: <s:textfield name="person.name"/> <br/>
    age: <s:textfield name="person.age"/> <br/>
    sex:<s:textfield name="person.sex"/><br/>
    <s:submit></s:submit>
   </s:form></body>
</html>


0 0
原创粉丝点击