Springmvc+hibernate+spring简单实例实现(个人编译通过)
来源:互联网 发布:编程器 编辑:程序博客网 时间:2024/05/16 08:04
自己花了两天时间去网上查找了相关资料,搭建的一个综合springmvc、hibernate和spring三种框架类型的环境,进行了一些简单的实例实践,下面贴出搭建步骤和代码,方便大家交流学习,也方便日后自己回来查阅
1.创建一个java网站,创建的网站类型为Dynamic web
勾选Generate web.xml,生成web.xml文件,点Finish
2.导入相关jar包,把jar包放到WEB-INF的lib文件夹下,我这里导入了34个相关包,附上图给大家
3.下面是web.xml文件配置,这一步很重要,一定要一个个去核对下自己的代码
<?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>springmvc_spring3_hibernate4</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 加载所有的spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/spring-*.xml</param-value> </context-param> <!-- 配置spring监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置spring mvc --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 设置字符集 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--配置session控制器开关 --> <filter> <filter-name>openSession</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSession</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
4.在与web.xml配置的相应位置建立相关的xml文件,下面是根据我的web配置,我创建的相关xml配置文件的位置截图
5.配置spring文件,下面贴出spring-commom.xml的代码,代码有注释,不懂的可以看注释
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!--配置数据源 ,可将property value放置在配置文件中 --> <context:property-placeholder location="classpath:/config/scottDB.properties"/> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${scott.jdbc.driverClassName}"></property> <property name="url" value="${scott.jdbc.url}"></property> <property name="username" value="${scott.jdbc.username}"></property> <property name="password" value="${scott.jdbc.password}"></property> </bean> <!-- 配置hibernate SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> <!-- <prop key="hibernate.hbm2ddl.auto">update</prop> --> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> </props> </property> <property name="annotatedClasses"> <list> <value>com.firstest.entity.SpringUser</value> </list> </property> </bean> <!-- 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 事务代理拦截器 --> <bean id="transactionBase" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager" ref="transactionManager"></property> <property name="transactionAttributes"> <props> <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop> <prop key="modify*">PROPAGATION_REQUIRED,-myException</prop> <prop key="del*">PROPAGATION_REQUIRED</prop> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean></beans>
6.spring-mvc配置文件的代码
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!--注解扫描的包 ,bean实例化使用注解@Component --> <context:component-scan base-package="com.firstest"></context:component-scan> <!--开启注解 --> <mvc:annotation-driven/> <!--拦截以Service结尾的类,实现事务代理 --> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*Service</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionBase</value> </list> </property> </bean> <!-- 静态资源(js/image)访问 --> <mvc:resources location="/img/" mapping="/img/**"/> <mvc:resources location="/js/" mapping="/js/**"/> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean></beans>
7.scottDB.properties配置文件,用于存放数据库的连接信息,这里相信大家应该都能看懂的,看不懂的自己上网查阅一下相关资料,上面有许多介绍properties配置文件的内容
#oracle 11gscott.jdbc.driverClassName = oracle.jdbc.driver.OracleDriverscott.jdbc.url = jdbc:oracle:thin:@192.168.0.134:1521:THUNDscott.jdbc.username = scottscott.jdbc.password = tiger#hibernatep配置hibernate.show_sql = truehibernate.format_sql = true
8.到这里,基本上的轮廓已经出来了,下面就是javabean的创建,以及dao层,service层的编写,还有后台的controller后台实现代码的编写,这里最需要注意的是dao层中接口的实现类UserManage以及service层的实现类UserManageService这两个类,因为刚刚前面所说的报错,基本上都是出现在这两个类中间,下面我一 一贴上代码。
Javabean代码
package com.firstest.entity;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;@Entity@Table(name="SPRINGMVC_USERS",schema="SCOTT")public class SpringUser implements Serializable{ private static final long serialVersionUID = -7010217787841007904L; private String userId; //用户id private String userName; //用户名 private String phone; //手机号码 private String age; //年龄 @Id @GeneratedValue(generator="system-uuid") @GenericGenerator(name = "system-uuid",strategy="uuid") @Column(name="USERID") public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } @Column(name="USERNAME") public String getuserName() { return userName; } public void setuserName(String userName) { this.userName = userName; } @Column(name="PHONE") public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Column(name="AGE") public String getAge() { return age; } public void setAge(String age) { this.age = age; }}
dao层的接口类和实现类
package com.firstest.dao;import java.util.List;import com.firstest.entity.SpringUser;public interface IUserManage { public List<SpringUser> getSpringUser(); public void addSpringUser(SpringUser springUser);}
package com.firstest.dao.impl;import java.util.List;import javax.annotation.Resource;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.stereotype.Repository;import com.firstest.dao.IUserManage;import com.firstest.entity.SpringUser;@Repositorypublic class UserManage implements IUserManage{ @Resource @Autowired private SessionFactory sessionFactory;/* public void setSessionFactory(SessionFactory sessionFactory){ this.sessionFactory = sessionFactory; }*/ @Override public List<SpringUser> getSpringUser(){ String hql = "from SpringUser"; Query query = sessionFactory.getCurrentSession().createQuery(hql); List<SpringUser> list = query.list(); return list; } @Override public void addSpringUser(SpringUser springUser){ sessionFactory.getCurrentSession().save(springUser); }}
service层的接口类和实现类
package com.firstest.service;import java.util.List;import com.firstest.entity.SpringUser;public interface IUserManageService { public List<SpringUser> getSpringUser(); public void addSpringUser(SpringUser springUser);}
package com.firstest.service.impl;import java.util.List;import javax.annotation.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.firstest.dao.IUserManage;import com.firstest.entity.SpringUser;import com.firstest.service.IUserManageService;@Servicepublic class UserManageService implements IUserManageService{ @Resource @Autowired private IUserManage iUserManage; /** * 获取用户信息 */ @Override public List<SpringUser> getSpringUser(){ return iUserManage.getSpringUser(); } /** * 新增用户 */ @Override public void addSpringUser(SpringUser springUser) { iUserManage.addSpringUser(springUser); }}
9.controller后台实现的代码
package com.firstest.controller;import java.io.IOException;import java.util.List;import javax.annotation.Resource;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import com.firstest.entity.SpringUser;import com.firstest.service.IUserManageService;@Controller@RequestMapping("/user")public class UserManageController { @Resource(name="iUserManageService") private IUserManageService iUserManageService; /** * 查询所有用户 * @param request * @param response * @return /pages/show */ @RequestMapping(value="/getSpringUser") public String getSpringUser(HttpServletRequest request,HttpServletResponse response){ List<SpringUser> list = iUserManageService.getSpringUser(); request.setAttribute("list", list); return "/pages/show"; } /** * 添加用户 * @param springUser * @param request * @param response * @return /user/getSpringUser */ @RequestMapping(value="/addSpringUser") public String addSpringUser(SpringUser springUser, HttpServletRequest request,HttpServletResponse response){ iUserManageService.addSpringUser(springUser); return "redirect:/user/getSpringUser"; }}
10.最后就是页面展现啦,在spring-mvc.xml配置文件中,我们已经配置了静态资源的位置,所以,我们只需要按照上面的路径建立pages文件夹,在里面写jsp页面就可以了,下面是页面的代码。
addUser.jsp
<%@ page language="Java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%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>添加用户</title> <script type="text/javascript"> function adduser() { var form = document.forms[0]; form.action = "/springmvc_spring3_hibernate4/user/addSpringUser"; form.mothod = "POST"; form.submit(); } </script> </head> <body> <h2 align="center">添加用户</h2> <form name="forms_user" action=""> <table width="320" height="180" align="center" border="0"> <tr> <td>用户名:</td> <td><input type="text" name="userName"></td> </tr> <tr> <td>手机号码:</td> <td><input type="text" name="phone"></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age"></td> </tr> <tr align="center"><td colspan="2"><input type="button" value="提交" onclick="adduser()"></input></td></tr> </table> </form> </body></html>
index.jsp
<%@ page language="Java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%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>首页</title> </head> <body> <a href="<%=basePath%>user/getSpringUser">查看已注册用户</a> <a href="<%=basePath%>pages/addUser.jsp">添加用户</a> </body></html>
show.jsp
<%@ page language="Java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%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>用户信息</title> </head> <body> <h2 align="center">注册用户信息</h2> <form name="form"> <table width="320" align="center" border="0"> <tr> <td>用户名</td> <td>年龄</td> <td>手机号码</td> </tr> <c:forEach var="list" items="${list}"> <tr> <td>${list.userName }</td> <td>${list.age }</td> <td>${list.phone }</td> </tr> </c:forEach> </table> </form> </body></html>
第一次写博客,有点小激动,写的不好还请大家多多包涵,有错误请给我留言。spring拥有强大的注解功能,这项功能方便了大家进行代码的编写,所以大家可以多多使用注解。这一个实例我实现的功能比较简单,只是实现了增和查这两个功能,大家有兴趣的同学可以继续往下写,可以补充改跟删这两个功能,由于之前在网上有查阅过相关的资料,下面给大家贴出一个链接,大家可以继续看看别的大神的文章:
http://blog.csdn.net/bjyfb/article/details/8998267
http://blog.csdn.net/bjyfb/article/details/8998439
下面也附上我的工程文件下载链接:
http://download.csdn.net/detail/tianxiezuomaikong/9675156
- Springmvc+hibernate+spring简单实例实现(个人编译通过)
- Springmvc+hibernate+spring简单实例实现(个人编译通过)
- Spring+Springmvc+Hibernate框架搭建,简单实例
- Spring+Springmvc+Hibernate框架搭建,简单实例
- SpringMVC+Hibernate+Spring整合实例(一)
- SpringMVC+Hibernate+Spring整合实例(二)
- SpringMVC+Hibernate+Spring整合实例(一)
- SpringMVC+Hibernate+Spring整合实例(二)
- SpringMVC+Hibernate+Spring整合实例(一)
- SpringMVC+Hibernate+Spring整合实例(二)
- SpringMVC+Hibernate+Spring整合实例(一)
- SpringMVC+Hibernate+Spring整合实例(二)
- SpringMVC+Hibernate+Spring整合实例(一)
- SpringMVC+Hibernate+Spring整合实例(一)
- SpringMVC+Hibernate+Spring整合实例(二)
- SpringMVC+Hibernate+Spring 简单的一个整合实例
- SpringMVC+Spring+HIbernate 简单增删改查实例
- SpringMVC+Spring+HIbernate 简单增删改查实例
- Java(观察者模式)
- mybatis 学习文档
- C++根据level等级打印带参数debug信息
- MySQL查询某个字段不重复的所有记录
- 在O(1)时间删除链表结点
- Springmvc+hibernate+spring简单实例实现(个人编译通过)
- 回溯算法经典应用之—N皇后问题 (Java)
- git 管理工具Source Tree的下载
- java Swing中实现可检索的下拉列表
- iOS-UIView的alpha、hidden和opaque -区别
- Linux 读取系统时间
- 从编译警告信息(Warning)中寻找原因
- 重新移植一个linux内核
- 找不到或无法加载主类 org.jivesoftware.openfire.starter.ServerStarter