SSH整合的一个小例子,struts2+Spring2+Hibernate3
代码如下:
Person.java
package com.eva.po;
/**
* Person entity.
*
* @author eva
*/
import java.io.Serializable;public class Person implements Serializable{
private int id;
private String name;
private int age;
private String sex;
private String address;
/** defult constructor */
public Person() {
}
/** minimal constructor */
public Person(String name) {
this.name = name;
}
/** full constructor */
public Person(String name,int age,String sex,String address) {
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
}
//setter and getter
}
PersonDAO.java
package com.eva.dao;
import java.util.List;
import com.eva.po.Person;
public interface PersonDAO {
public void saveOrUpdate(Person person);
public void update(Person person);
public void delete(Person person);
public Person get(String id);
public List<Person> findAll();
} PersonHibernateDAO.java package com.eva.dao.hibernate;
import java.util.List;
import com.eva.dao.PersonDAO;
import com.eva.po.Person;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class PersonHibernateDAO extends HibernateDaoSupport implements
PersonDAO {
public void delete(Person person) {
this.getHibernateTemplate().delete(person);
}
public List<Person> findAll() {
List<Person> persons = this.getHibernateTemplate().find("from Person");
return persons;
}
public Person get(String id) {
Person person = (Person)this.getHibernateTemplate().get(Person.class, id);
return person;
}
public void saveOrUpdate(Person person) {
this.getHibernateTemplate().saveOrUpdate(person);
}
public void update(Person person) {
this.getHibernateTemplate().saveOrUpdate(person);
}
}
PersonService.java package com.eva.service;
import java.util.List;
import com.eva.dao.hibernate.PersonHibernateDAO;
import com.eva.po.Person;
public class PersonService {
private PersonHibernateDAO personHibernateDAO;
public void setPersonHibernateDAO(PersonHibernateDAO personHibernateDAO) {
this.personHibernateDAO = personHibernateDAO;
System.out.println("personHibernateDAO is null ? --- " + personHibernateDAO == null);
}
public PersonHibernateDAO getPersonHibernateDAO() {
return personHibernateDAO;
}
public void saveOrUpdate(Person person)
{
personHibernateDAO.saveOrUpdate(person);
}
public void update(Person person)
{
personHibernateDAO.update(person);
}
public void delete(Person person)
{
personHibernateDAO.delete(person);
}
public List<Person> findAll()
{
return personHibernateDAO.findAll();
}
public Person get(String id)
{
return personHibernateDAO.get(id);
}
}
LoginAction.java package com.eva.action;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.eva.po.Person;
import com.eva.service.PersonService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private PersonService personService;
private Person person;
private String id;
private List<Person> persons;
public LoginAction() {
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public PersonService getPersonService() {
return personService;
}
public void setPersonService(PersonService personService) {
this.personService = personService;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public String execute() throws Exception {
if (person != null & !person.equals("")) {
personService.saveOrUpdate(person);
}
persons = personService.findAll();
setPersons(persons);
System.out.println(persons.size());
return SUCCESS;
}
public String list() throws Exception {
persons = personService.findAll();
setPersons(persons);
return SUCCESS;
}
public String save() throws Exception {;
personService.saveOrUpdate(person);
return SUCCESS;
}
public String update() throws Exception {
person = personService.get(id);
personService.update(person);
return SUCCESS;
}
public String getValue() throws Exception {
return SUCCESS;
}
public String delete() throws Exception{
person = personService.get(id);
personService.delete(person);
return SUCCESS;
}
}
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- dataSource配置 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ssh
</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>sa</value>
</property>
</bean>
<!-- 配置session工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/eva/po/Person.hbm.xml</value></list>
</property>
</bean>
<!-- 具体的数据库访问类 -->
<bean id="dao" class="com.eva.dao.hibernate.PersonHibernateDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 配置具体的业务逻辑类 -->
<bean id="personService" class="com.eva.service.PersonService">
<property name="personHibernateDAO">
<ref bean="dao"/>
</property>
</bean>
<!-- 配置action -->
<bean id="loginAction" class="com.eva.action.LoginAction">
<property name="personService">
<ref bean="personService"/>
</property>
</bean>
</beans>
代码如下:
Person.java
package com.eva.po;
/**
* Person entity.
*
* @author eva
*/
import java.io.Serializable;public class Person implements Serializable{
private int id;
private String name;
private int age;
private String sex;
private String address;
/** defult constructor */
public Person() {
}
/** minimal constructor */
public Person(String name) {
this.name = name;
}
/** full constructor */
public Person(String name,int age,String sex,String address) {
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
}
//setter and getter
}
PersonDAO.java
package com.eva.dao;
import java.util.List;
import com.eva.po.Person;
public interface PersonDAO {
public void saveOrUpdate(Person person);
public void update(Person person);
public void delete(Person person);
public Person get(String id);
public List<Person> findAll();
} PersonHibernateDAO.java package com.eva.dao.hibernate;
import java.util.List;
import com.eva.dao.PersonDAO;
import com.eva.po.Person;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class PersonHibernateDAO extends HibernateDaoSupport implements
PersonDAO {
public void delete(Person person) {
this.getHibernateTemplate().delete(person);
}
public List<Person> findAll() {
List<Person> persons = this.getHibernateTemplate().find("from Person");
return persons;
}
public Person get(String id) {
Person person = (Person)this.getHibernateTemplate().get(Person.class, id);
return person;
}
public void saveOrUpdate(Person person) {
this.getHibernateTemplate().saveOrUpdate(person);
}
public void update(Person person) {
this.getHibernateTemplate().saveOrUpdate(person);
}
}
PersonService.java package com.eva.service;
import java.util.List;
import com.eva.dao.hibernate.PersonHibernateDAO;
import com.eva.po.Person;
public class PersonService {
private PersonHibernateDAO personHibernateDAO;
public void setPersonHibernateDAO(PersonHibernateDAO personHibernateDAO) {
this.personHibernateDAO = personHibernateDAO;
System.out.println("personHibernateDAO is null ? --- " + personHibernateDAO == null);
}
public PersonHibernateDAO getPersonHibernateDAO() {
return personHibernateDAO;
}
public void saveOrUpdate(Person person)
{
personHibernateDAO.saveOrUpdate(person);
}
public void update(Person person)
{
personHibernateDAO.update(person);
}
public void delete(Person person)
{
personHibernateDAO.delete(person);
}
public List<Person> findAll()
{
return personHibernateDAO.findAll();
}
public Person get(String id)
{
return personHibernateDAO.get(id);
}
}
LoginAction.java package com.eva.action;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.eva.po.Person;
import com.eva.service.PersonService;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private PersonService personService;
private Person person;
private String id;
private List<Person> persons;
public LoginAction() {
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public PersonService getPersonService() {
return personService;
}
public void setPersonService(PersonService personService) {
this.personService = personService;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
public String execute() throws Exception {
if (person != null & !person.equals("")) {
personService.saveOrUpdate(person);
}
persons = personService.findAll();
setPersons(persons);
System.out.println(persons.size());
return SUCCESS;
}
public String list() throws Exception {
persons = personService.findAll();
setPersons(persons);
return SUCCESS;
}
public String save() throws Exception {;
personService.saveOrUpdate(person);
return SUCCESS;
}
public String update() throws Exception {
person = personService.get(id);
personService.update(person);
return SUCCESS;
}
public String getValue() throws Exception {
return SUCCESS;
}
public String delete() throws Exception{
person = personService.get(id);
personService.delete(person);
return SUCCESS;
}
}
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- dataSource配置 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ssh
</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>sa</value>
</property>
</bean>
<!-- 配置session工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/eva/po/Person.hbm.xml</value></list>
</property>
</bean>
<!-- 具体的数据库访问类 -->
<bean id="dao" class="com.eva.dao.hibernate.PersonHibernateDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 配置具体的业务逻辑类 -->
<bean id="personService" class="com.eva.service.PersonService">
<property name="personHibernateDAO">
<ref bean="dao"/>
</property>
</bean>
<!-- 配置action -->
<bean id="loginAction" class="com.eva.action.LoginAction">
<property name="personService">
<ref bean="personService"/>
</property>
</bean>
</beans>
<!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.i18n.encoding" value="UTF-8" />
<!-- 一定要加,对象工厂是spring -->
<constant name="struts.objectFactory" value="spring" />
<!-- 开启开发模式 -->
<constant name="struts.devMode" value="true" />
<package name="login" extends="struts-default">
<!-- 保存 -->
<action name="Login" method="save" class="com.eva.action.LoginAction">
<result>success.jsp</result>
<!-- <result name="error">error.jsp</result> -->
</action>
<!-- 显示出所有列表 -->
<action name="list" method="list" class="com.eva.action.LoginAction">
<result>success.jsp</result>
</action>
<!-- 删除 -->
<action name="delete" method="delete" class="com.eva.action.LoginAction">
<result>success.jsp</result>
</action>
<!-- 更新 -->
<action name="update" method="update" class="com.eva.action.LoginAction">
<result>index.jsp</result>
</action>
</package>
</struts>
Person.hbm.xml <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.s2s2h3.po.Person" table="person_" catalog="ssh2">
<id name="id" type="java.lang.String">
<column name="id" length="10" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="30" not-null="true" />
</property>
<property name="age" type="java.lang.String">
<column name="age" length="10" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" length="10" />
</property>
<property name="address" type="java.lang.String">
<column name="address" length="50" />
</property>
</class>
</hibernate-mapping> web.xml <?xml version="1.0" encoding="UTF-8"?>
<web-app id="person" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>person</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<init-param>
<param-name>classes</param-name>
<param-value>java.lang.Object</param-value>
</init-param>
</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>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<!-- 添加监听器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:if test="null == person">
Add Person
</s:if>
<s:else>
Update Person
</s:else>
<s:form action="Login" method="post">
<table>
<caption>
客户管理
</caption>
<tr>
<td>
<s:textfield name="person.id" label="ID" />
</td>
</tr>
<tr>
<td>
<s:textfield name="person.name" label="NAME" />
</td>
</tr>
<tr>
<td>
<s:textfield name="person.age" label="AGE" />
</td>
</tr>
<tr>
<td>
<s:textfield name="person.sex" label="SEX" />
</td>
</tr>
<tr>
<td>
<s:textfield name="person.address" label="ADDRESS" />
</td>
</tr>
<tr>
<td colspan="2">
<s:submit value="submit" />
<s:reset value="reset" />
</td>
</tr>
</table>
</s:form>
</body>
</html>
添加数据之后点提交,会抛空指针错误,原因是是执行到PersonService的时候,personHibernateDAO为null
困惑,希望路过的各位兄弟帮忙看看。。谢过先~~
看样子你的spring都没起作用,web.xml里spring的监听你配置了吗