struts2+spring+hibernate整合
来源:互联网 发布:视频特效制作软件 编辑:程序博客网 时间:2024/05/01 21:53
最近在学习SSH整合过程中出现了许多小问题!为了以后的学习SSH整合的朋友少走弯路,所以总结了一篇文档!但愿能对大家有所帮助!
好了,废话不多说!下面我们来实现一个用ssh框架完成对一本书的保存~
一、开发工具
二、项目开发
1、首先创建web项目!
2、创建好项目,我们开始导入项目需要的jar包,主要是ssh框架的jar包,下面我们对其详细介绍!
a、首先导入与数据库连接的支持包
b、导入数据库连接池c3p0需要的jar包
c、导入spring3.5的支持包
d、导入struts2的支持包
e、导入hibernate4.2的jar包
3、现在我们开始创建实体类
-------------------------------------------------------------------------model-----------------------------------------------------------------------------------------------------
package com.phome.modal;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;/** * 这是实体类 * @author 欢 * */@Entitypublic class User {private int id;private String name;@Id@GeneratedValue(strategy=GenerationType.AUTO)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;}}
---------------------------------------------------------------------Action----------------------------------------------------------------------------------------------------------
package com.phome.action;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;import com.phome.IService.ISaveService;import com.phome.model.Book;/** * 这是struts调用的Action类 * @author 欢 * */@Controllerpublic class SaveAction extends ActionSupport {/** * 唯一标识 */private static final long serialVersionUID = 1L;private ISaveService saveService;private Book book;public ISaveService getSaveService() {return saveService;}@Autowiredpublic void setSaveService(ISaveService saveService) {this.saveService = saveService;}public Book getBook() {return book;}public void setBook(Book book) {this.book = book;}/** * action的保存书籍方法 * @return */public String save () {System.out.println("Action进入....");//调用SaveService的save(Book book)方法saveService.save(book);return SUCCESS;}}
----------------------------------------------------------IDAO----------------------------------------------------------------------------
package com.phome.dao;import com.phome.modal.User;public interface IAddDAO {public int add (User user);}
------------------------------------------------------------DAO--------------------------------------------------------------------------------
package com.phome.dao.imp;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import com.phome.dao.IAddDAO;import com.phome.modal.User;/** * 这是一个DAO持久类 * @author 欢 * */@Repositorypublic class AddDAO implements IAddDAO{private SessionFactory sessionFactory;public SessionFactory getSessionFactory() {return sessionFactory;}@Autowiredpublic void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}@Overridepublic int add(User user) {System.out.println("addDAO()方法进入....");Session session = (Session) sessionFactory.getCurrentSession();session.save(user);return 0;}}
---------------------------------------------------------------------IService--------------------------------------------------------------------------------------------------
package com.phome.service;import com.phome.modal.User;public interface IAddService {public int add(User user);}
------------------------------------------------------------------Service----------------------------------------------------------------------------------------
package com.phome.service.imp;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.phome.dao.IAddDAO;import com.phome.modal.User;import com.phome.service.IAddService;/** * 这是业务类 * @author 欢 * */@Servicepublic class AddService implements IAddService{private IAddDAO addDAO;public IAddDAO getAddDAO() {return addDAO;}@Autowiredpublic void setAddDAO(IAddDAO addDAO) {this.addDAO = addDAO;}@Overridepublic int add(User user) {int num = 0;System.out.println("service进入--〉");addDAO.add(user);return num;}}
4、我们开始创建spring.xml,配置spring.xml文件
a、创建spring.xml文件
b、开始配置spring.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: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/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- spring支持annotation --> <context:annotation-config></context:annotation-config> <!-- spring 自动扫描 --> <context:component-scan base-package="com.phome"></context:component-scan> <!-- 配置数据库dataSource --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1/hibernate_test" /> <property name="user" value="root" /> <property name="password" value="admin" /> </bean> <!-- 配置hibernateSessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <!-- 配置需要映射的实体类 --> <property name="annotatedClasses"> <list> <value>com.phome.model.Book</value> </list> </property> <!-- 配置hibernate的一些属性 --> <property name="hibernateProperties"> <value> hibernate.show_sql=true hibernate.format_sql=true hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext hibernate.hbm2ddl.auto=update </value> </property> </bean> <!-- 配置事务管理 --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="save*" propagation="REQUIRED" read-only="false" /><tx:method name="*" read-only="true" /></tx:attributes></tx:advice><aop:config><aop:pointcut id="allManagerMethod"expression="execution(public * com.phome.IService.imp.*.*(..))" /><aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" /></aop:config></beans>
5、创建struts2.xml文件,并配置strurs2.xml文件
a、创建struts2.xml文件
b、配置struts2.xml文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><!-- 打开struts开发开关,显示更多人性化提示信息 --><constant name="struts.devMode" value="false"></constant><!-- 修改编码 --><constant name="struts.il8n.encoding" value="UTF-8" ></constant><!-- 将struts对action的管理权托管给spring --><constant name="struts.objectFactory" value="spring"></constant><!-- 配置action --><package name="action" extends="struts-default" namespace="/action"><action name="*_*" class="com.phome.action.{1}Action" method="{2}"><result name="success">/success.jsp</result></action></package></struts>
6、配置web.xml文件,配置spring,struts2的启动
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ssh_test</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置spring的启动 --> <!-- 1、加载spring的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring/spring.xml</param-value> </context-param> <!-- 2、通过监听器启动spring --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置struts2的启动 --> <!-- 这是第一种配置Struts2的方法 --> <!-- <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>config</param-name> <param-value> struts-default.xml, struts-plugin.xml, ../struts2/struts2.xml </param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <!-- 这是第二种配置Struts2的方法 --> <!-- 1、这里配置一些struts2启动前加载的配置文件 --> <filter> <filter-name>struts2p</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> <init-param> <param-name>config</param-name> <param-value> struts-default.xml, struts-plugin.xml, ../struts2/struts2.xml </param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2p</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 2、配置第三方过滤器 --> <!-- 在这里我们可以配置自己的过滤器,比如编码过滤器等 --> <!-- 3、配置Struts2的启动过滤器 --> <filter> <filter-name>struts2e</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2e</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
7、创建两个测试页面,分别是index.jsp和success.jsp
-----------------------------------------------index.jsp------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h1>填写书籍信息:</h1><form action="${pageContext.request.contextPath }/action/Save_save" method="post"><p>书籍的名称:</p><input id="book.name" name="book.name" type="text" value="请输入书籍的名称..." /><br /><p>书籍的价格:</p><input id="book.price" name="book.price" type="text" value="请输入书籍的价格..." /><br /><br /><input type="submit" value="提交" /></form></body></html>
-----------------------------------------------success.jsp------------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>Insert title here</title></head><body><h1>添加书籍成功!</h1></body></html>
8、测试
启动项目,在浏览器进入
输入书名称,价格,点击提交
页面成功跳转!
控制台信息如下:
sql语言正确,数据添加成功!项目执行结束。。。
希望对大家有所帮助!谢谢~~
- struts2+hibernate+spring整合
- struts2 spring hibernate 整合
- Spring struts2 hibernate 整合
- struts2+spring+hibernate整合
- struts2+spring+hibernate整合
- struts2+spring+hibernate整合
- Spring、Struts2、Hibernate整合
- Spring + Hibernate + Struts2整合
- struts2+spring+hibernate整合
- struts2+spring+hibernate整合
- Struts2+Hibernate+Spring整合
- Spring Struts2 Hibernate整合
- 整合struts2+spring+hibernate
- spring struts2 hibernate整合
- 整合Struts2,Spring,Hibernate
- Spring + Struts2 + Hibernate整合
- spring+struts2+hibernate整合
- spring、hibernate、struts2整合
- jquery的ajax请求与springMVC交互
- 什么是反向代理?
- 使用js判断是手机访问还是电脑访问
- 获取屏幕尺寸大小和密度
- python统计汉字词频
- struts2+spring+hibernate整合
- JAVA基础---数组的创建及遍历
- Visual Assist 10.8
- RHEL等Linux系统使用wpa_supplicant以WPA-PSK/WPA2-PSK连接WIFI
- poj 2762 Going from u to v or from v to u?
- hunnu11323(在n个点中,选择两个使得它们之间的距离最大)
- 教你透彻理解红黑树
- sizeof 操作符(c++primer)
- 用awakeFromNib来做view的初始化太有用了