- 浏览: 219314 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (397)
- j2se (28)
- nio (3)
- 易错点 (3)
- 面试ssh (9)
- ssh整合 (11)
- jbpm+spring (2)
- js (15)
- 高级技术 (59)
- swing (3)
- 数据库 (16)
- hibernate (18)
- spring (19)
- 开发网站知识点 (9)
- jbpm (4)
- json (5)
- 设计模式 (22)
- 自定义标签 (1)
- j2ee (9)
- lucene (3)
- cahce (11)
- maven (5)
- html5 (1)
- 多数据源 (10)
- 页面聊天 (9)
- 富客户端 (1)
- android (13)
- aop+拦截器+jms (13)
- 框架整合 (1)
- 非阻塞io (24)
- 暂时不看 (13)
- webservice (3)
- oracle (3)
- 算法 (4)
- 协程 (2)
- netty (1)
- 爬虫 (0)
- 高级基础 (1)
- JVM调优总结 (12)
- 知识点技巧 (1)
- REST (0)
- 基础 io (2)
- dubbo (8)
- 线程 (1)
- spring源码 (2)
- git (1)
- office (2)
最新评论
-
sjzcmlt:
,写的挺好的啊
一个完整的负载均衡的例子 . -
他大姨妈:
网上大部分例子都是直接通过IdleStateHandler来实 ...
Netty的超时机制 心跳机制
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。
文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下。
web.xml配置:
spring-servlet,主要配置controller的信息
applicationContext.xml代码
hibernate.properties数据库连接配置
配置已经完成,下面开始例子
先在数据库建表,例子用的是mysql数据库
建好表后,生成实体类
Dao层实现
Dao在applicationContext.xml注入
Dao只有一个类的实现,直接供其它service层调用,如果你想更换为其它的Dao实现,也只需修改这里的配置就行了。
开始写view页面,WEB-INF/view下新建页面student.jsp,WEB-INF/view这路径是在spring-servlet.xml文件配置的,你可以配置成其它,也可以多个路径。student.jsp代码
student_add.jsp
controller类实现,只需把注解写上,spring就会自动帮你找到相应的bean,相应的注解标记意义,不明白的,可以自己查下@Service,@Controller,@Entity等等的内容。
service类实现
OK,例子写完。有其它业务内容,只需直接新建view,并实现相应comtroller和service就行了,配置和dao层的内容基本不变,也就是每次只需写jsp(view),controller和service调用dao就行了。
怎样,看了这个,spring mvc是不是比ssh实现更方便灵活。
文中用的框架版本:spring 3,hibernate 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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>s3h3</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <!-- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
spring-servlet,主要配置controller的信息
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config /> <!-- 把标记了@Controller注解的类转换为bean --> <context:component-scan base-package="com.mvc.controller" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" /> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8" /> </beans>
applicationContext.xml代码
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" 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-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.mvc" /> <!-- 自动扫描所有注解该路径 --> <context:property-placeholder location="classpath:/hibernate.properties" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${dataSource.dialect}</prop> <prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> <property name="packagesToScan"> <list> <value>com.mvc.entity</value><!-- 扫描实体类,也就是平时所说的model --> </list> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${dataSource.driverClassName}" /> <property name="url" value="${dataSource.url}" /> <property name="username" value="${dataSource.username}" /> <property name="password" value="${dataSource.password}" /> </bean> <!-- Dao的实现 --> <bean id="entityDao" class="com.mvc.dao.EntityDaoImpl"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" /> <tx:annotation-driven mode="aspectj"/> <aop:aspectj-autoproxy/> </beans>
hibernate.properties数据库连接配置
dataSource.password=123 dataSource.username=root dataSource.databaseName=test dataSource.driverClassName=com.mysql.jdbc.Driver dataSource.dialect=org.hibernate.dialect.MySQL5Dialect dataSource.serverName=localhost:3306 dataSource.url=jdbc:mysql://localhost:3306/test dataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password} dataSource.hbm2ddl.auto=update
配置已经完成,下面开始例子
先在数据库建表,例子用的是mysql数据库
CREATE TABLE `test`.`student` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `psw` varchar(45) NOT NULL, PRIMARY KEY (`id`) )
建好表后,生成实体类
package com.mvc.entity; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "student") public class Student implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) private Integer id; @Column(name = "name") private String user; @Column(name = "psw") private String psw; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; } }
Dao层实现
package com.mvc.dao; import java.util.List; public interface EntityDao { public List<Object> createQuery(final String queryString); public Object save(final Object model); public void update(final Object model); public void delete(final Object model); }
package com.mvc.dao; import java.util.List; import org.hibernate.Query; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class EntityDaoImpl extends HibernateDaoSupport implements EntityDao{ public List<Object> createQuery(final String queryString) { return (List<Object>) getHibernateTemplate().execute( new HibernateCallback<Object>() { public Object doInHibernate(org.hibernate.Session session) throws org.hibernate.HibernateException { Query query = session.createQuery(queryString); List<Object> rows = query.list(); return rows; } }); } public Object save(final Object model) { return getHibernateTemplate().execute( new HibernateCallback<Object>() { public Object doInHibernate(org.hibernate.Session session) throws org.hibernate.HibernateException { session.save(model); return null; } }); } public void update(final Object model) { getHibernateTemplate().execute(new HibernateCallback<Object>() { public Object doInHibernate(org.hibernate.Session session) throws org.hibernate.HibernateException { session.update(model); return null; } }); } public void delete(final Object model) { getHibernateTemplate().execute(new HibernateCallback<Object>() { public Object doInHibernate(org.hibernate.Session session) throws org.hibernate.HibernateException { session.delete(model); return null; } }); } }
Dao在applicationContext.xml注入
<bean id="entityDao" class="com.mvc.dao.EntityDaoImpl"> <property name="sessionFactory" ref="sessionFactory" /> </bean>
Dao只有一个类的实现,直接供其它service层调用,如果你想更换为其它的Dao实现,也只需修改这里的配置就行了。
开始写view页面,WEB-INF/view下新建页面student.jsp,WEB-INF/view这路径是在spring-servlet.xml文件配置的,你可以配置成其它,也可以多个路径。student.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/head.jsp"%> <!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>添加</title> <script language="javascript" src="<%=request.getContextPath()%><!-- /script/jquery.min.js"> // --></script> <style><!-- table{ border-collapse:collapse; } td{ border:1px solid #f00; } --></style><style mce_bogus="1">table{ border-collapse:collapse; } td{ border:1px solid #f00; }</style> <script type="text/javascript"><!-- function add(){ window.location.href="<%=request.getContextPath() %>/student.do?method=add"; } function del(id){ $.ajax( { type : "POST", url : "<%=request.getContextPath()%>/student.do?method=del&id=" + id, dataType: "json", success : function(data) { if(data.del == "true"){ alert("删除成功!"); $("#" + id).remove(); } else{ alert("删除失败!"); } }, error :function(){ alert("网络连接出错!"); } }); } // --></script> </head> <body> <input id="add" type="button" onclick="add()" value="添加"/> <table > <tr> <td>序号</td> <td>姓名</td> <td>密码</td> <td>操作</td> </tr> <c:forEach items="${list}" var="student"> <tr id="<c:out value="${student.id}"/>"> <td><c:out value="${student.id}"/></td> <td><c:out value="${student.user}"/></td> <td><c:out value="${student.psw}"/></td> <td> <input type="button" value="编辑"/> <input type="button" onclick="del('<c:out value="${student.id}"/>')" value="删除"/> </td> </tr> </c:forEach> </table> </body> </html>
student_add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ include file="/include/head.jsp"%> <!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>学生添加</title> <mce:script type="text/javascript"><!-- function turnback(){ window.location.href="<%=request.getContextPath() %>/student.do"; } // --></mce:script> </head> <body> <form method="post" action="<%=request.getContextPath() %>/student.do?method=save"> <div><c:out value="${addstate}"></c:out></div> <table> <tr><td>姓名</td><td><input id="user" name="user" type="text" /></td></tr> <tr><td>密码</td><td><input id="psw" name="psw" type="text" /></td></tr> <tr><td colSpan="2" align="center"><input type="submit" value="提交"/><input type="button" onclick="turnback()" value="返回" /> </td></tr> </table> </form> </body> </html>
controller类实现,只需把注解写上,spring就会自动帮你找到相应的bean,相应的注解标记意义,不明白的,可以自己查下@Service,@Controller,@Entity等等的内容。
package com.mvc.controller; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.mvc.entity.Student; import com.mvc.service.StudentService; @Controller @RequestMapping("/student.do") public class StudentController { protected final transient Log log = LogFactory .getLog(StudentController.class); @Autowired private StudentService studentService; public StudentController(){ } @RequestMapping public String load(ModelMap modelMap){ List<Object> list = studentService.getStudentList(); modelMap.put("list", list); return "student"; } @RequestMapping(params = "method=add") public String add(HttpServletRequest request, ModelMap modelMap) throws Exception{ return "student_add"; } @RequestMapping(params = "method=save") public String save(HttpServletRequest request, ModelMap modelMap){ String user = request.getParameter("user"); String psw = request.getParameter("psw"); Student st = new Student(); st.setUser(user); st.setPsw(psw); try{ studentService.save(st); modelMap.put("addstate", "添加成功"); } catch(Exception e){ log.error(e.getMessage()); modelMap.put("addstate", "添加失败"); } return "student_add"; } @RequestMapping(params = "method=del") public void del(@RequestParam("id") String id, HttpServletResponse response){ try{ Student st = new Student(); st.setId(Integer.valueOf(id)); studentService.delete(st); response.getWriter().print("{\"del\":\"true\"}"); } catch(Exception e){ log.error(e.getMessage()); e.printStackTrace(); } } }
service类实现
package com.mvc.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.mvc.dao.EntityDao; import com.mvc.entity.Student; @Service public class StudentService { @Autowired private EntityDao entityDao; @Transactional public List<Object> getStudentList(){ StringBuffer sff = new StringBuffer(); sff.append("select a from ").append(Student.class.getSimpleName()).append(" a "); List<Object> list = entityDao.createQuery(sff.toString()); return list; } public void save(Student st){ entityDao.save(st); } public void delete(Object obj){ entityDao.delete(obj); } }
OK,例子写完。有其它业务内容,只需直接新建view,并实现相应comtroller和service就行了,配置和dao层的内容基本不变,也就是每次只需写jsp(view),controller和service调用dao就行了。
怎样,看了这个,spring mvc是不是比ssh实现更方便灵活。
发表评论
-
2 springmvc+hibernate
2014-10-25 10:16 510springMVC-servlet.xml < ... -
1 spingmvc搭建
2014-10-25 22:39 583web.xml <?xml version=& ... -
JTA事物
2014-10-18 10:43 468applicationContext.xml <b ... -
junit4
2014-06-16 10:01 546test hibernate private static S ... -
spring4+mybaits3整合—项目Demo
2014-06-17 09:40 1432项目下载地址:http://pan.baidu.com/s/1 ... -
struts2.2+spring3.1+hibernate3.2整合方法三
2014-04-19 15:15 581beans.xml <?xml version=&quo ... -
struts2.0.14+spring2.5+hibernate3.2整合方法二
2014-04-19 14:45 443struts2.0.14+spring2.5+hibernat ... -
struts2.0.14+spring2.5+hibernate3.2整合方法一
2014-04-19 14:37 654struts2.0.14+spring2.5+hibernat ... -
spring+hibernate+JTA 分布式事务的例子 .
2014-04-11 21:32 1028对于横跨多个Hibernate SessionFacotry的 ... -
Struts2.2+Spring3.1+Hibernate3.6整合(登录示例及CRUD操作)
2014-06-18 10:42 383一 运行环境: XP3+Myeclipse6.6+Tomcat ...
相关推荐
总结起来,使用Maven在Eclipse中搭建Spring+Spring MVC+Hibernate框架涉及以下步骤: 1. 创建Maven项目,配置`pom.xml`。 2. 配置Spring和Spring MVC的XML配置文件。 3. 设置Hibernate配置,创建实体类。 4. 构建Web...
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring、Spring MVC和Hibernate是Java领域中广泛使用的三大框架,它们各自负责不同的职责,共同构建了一个强大的开发环境。本篇文章将深入探讨如何利用这三大...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发视频教程 04”中,我们将深入探讨Java企业级开发中的三大核心技术——Spring、Spring MVC和Hibernate的集成与应用,尤其是通过注解实现的简化配置。...
标题 "Extjs + Spring MVC + hibernate + mysql" 涉及的是一个综合性的Web应用程序开发框架,结合了前端UI库、后端MVC框架、ORM工具和关系型数据库。让我们详细了解一下这些技术及其在实际项目中的应用。 1. ExtJS...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...
《基于Spring MVC+Spring+Hibernate+Bootstrap+MySQL的考勤及薪酬管理系统详解》 在现代企业信息化管理中,考勤和薪酬管理是至关重要的部分,它们直接影响到员工的工作积极性和公司的运营效率。本文将深入探讨一个...
【学生成绩管理系统】是一个基于Java技术的毕业设计项目,采用了经典的SSH(Spring MVC、Hibernate、Spring)框架组合,以及前端界面库EasyUI。这个系统的主要目标是为教育机构提供一个高效、便捷的学生分数记录与...
在实际开发过程中,首先会设置项目环境,包括搭建Spring Boot框架,配置相关的Spring MVC、Spring和Hibernate模块。接着,设计数据库模型,创建实体类并利用Hibernate的注解进行映射。然后,建立数据访问层(DAO),...
【Spring MVC + Hibernate + MySQL 整合详解】 在IT领域,Spring MVC、Hibernate和MySQL是构建Web应用程序的常用技术栈。Spring MVC作为Spring框架的一部分,提供了强大的MVC(Model-View-Controller)架构,用于...
Java Web期末课程设计项目。使用了Spring+Spring MVC+Hibernate框架.zip
在本实例中,"spring4MVC+Hibernate4实例(增删改查)"是一个基于Maven构建的Java Web项目,旨在演示如何整合Spring MVC和Hibernate框架来实现数据的CRUD(创建、读取、更新和删除)操作。Spring MVC是Spring框架的...
在本视频教程“Spring MVC + Spring + Hibernate 全注解整合开发 03”中,我们将深入探讨Java企业级开发中的三大核心框架——Spring、Spring MVC和Hibernate的整合应用,尤其是利用注解进行的无XML配置。以下是这些...
Spring MVC和Hibernate是Java开发中常用的两个开源框架,它们分别负责Web层和持久化层的管理。本实例是一个基础的“Hello, World!”程序,旨在帮助初学者理解这两个框架的集成与基本用法,并引入了简单的验证功能。...
SSH框架,全称为Spring、Spring MVC和Hibernate的组合,是Java Web开发中广泛使用的三大开源框架。它们分别负责不同层面的职责,共同构建了一个高效、灵活的开发环境。 Spring框架是核心,它提供了依赖注入...
基于Java Web期末课程设计项目、使用了Spring+Spring MVC+Hibernate框架、全部资料+详细文档+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都...
在IT行业中,Spring、Spring MVC和Hibernate是三个非常重要的开源框架,它们分别在不同层面上为Java应用提供了强有力的支持。本篇文章将详细讲解这三个框架的基本概念、整合过程以及为何适合初学者。 首先,Spring...
在IT领域,Spring、Spring MVC和Hibernate是三个非常重要的开源框架,它们在Java Web开发中起着...在实际项目中,理解并掌握这些知识能够帮助你更好地利用Spring、Spring MVC和Hibernate框架,提升开发效率和应用质量。
Spring MVC是Spring框架的一部分,用于构建强大的、模块化的Web应用,而Hibernate是一个流行的Java ORM(对象关系映射)工具,用于简化数据库操作。下面,我们将详细介绍这些技术的集成以及在IDEA中的开发流程。 ...
本文将深入探讨一个基于Spring MVC、Spring和Hibernate框架的Maven项目,该系统专注于学生管理,旨在帮助初学者理解并掌握Maven项目结构以及这三个框架的集成应用。 首先,Spring MVC作为Spring框架的一部分,是...