




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringMVC+Spring+Hibernate整合1、 Spring + SpringMVC +Hibernate集成步骤。1、集成Spring框架:编写spring的配置文件在web.xml中通过监听器加载spring的配置文件2、集成Hibernate框架:在spring的配置文件中,配置sessionFactory对象。为sessionFactory对象注入Hibernate相关属性配置transactionManager事务管理器3、集成spring mvc框架:编写spring mvc的配置文件在web.xml中注册DispatcherServlet,加载spring mvc配置文件4、在web.xml中注册常用的过滤器:字符集过滤器和OpenSessionInView过滤器等。1. 导入相应的JAR包项目结构编写perties 文件#mysql configjdbc.url=jdbc:mysql:/testjdbc.driver=com.mysql.jdbc.Driverjdbc.username=rootjdbc.password=root编写 日志properties 文件og4j.rootLogger=INFO, stdout, logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p %c - %m%nlog4j.appender.logfile=org.apache.log4j.RollingFileAppenderlog4j.appender.logfile.File=project-log.loglog4j.appender.logfile.MaxFileSize=512KB# Keep three backup files.log4j.appender.logfile.MaxBackupIndex=3# Pattern to output: date priority category - messagelog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d %p %c - %m%n6. 编写Spring 配置文件,开启组件自动扫描,加载属性文件,配置持久层(数据源,SessionFactory),事物管理,及JSR303验证beans.xml classpath*:com/nyf/entity/hibernate.dialet=org.hibernate.dialect.MySQL5Dialecthibernate.show_sql=truehibernate.hbm2ddl.auto=update 2. 编写相应的实体类Com.nyf.entity.Userpackage com.nyf.entity;import java.util.*;public class User private Integer id;/*姓名*/private String name;/*年龄*/private int age;/*生日*/private Date birthday = new Date();/*电话*/private String phone;/*Email*/private String mail;/*性别*/private int gender;/0女1男/*身份证*/private String idcard;/*地址*/private String address;/*职位*/private String position;/*密码*/private String password;public Integer getId() return id;public void setId(Integer id) this.id = id;public String getName() return name;public void setName(String name) = name;public int getAge() return age;public void setAge(int age) this.age = age;public Date getBirthday() return birthday;public void setBirthday(Date birthday) this.birthday = birthday;public String getPhone() return phone;public void setPhone(String phone) this.phone = phone;public String getMail() return mail;public void setMail(String mail) this.mail = mail;public int getGender() return gender;public void setGender(int gender) this.gender = gender;public String getIdcard() return idcard;public void setIdcard(String idcard) this.idcard = idcard;public String getAddress() return address;public void setAddress(String address) this.address = address;public String getPosition() return position;public void setPosition(String position) this.position = position;public String getPassword() return password;public void setPassword(String password) this.password = password;Overridepublic String toString() return name+, +age+, +birthday+, +phone+, +mail+, +gender+, +idcard+, +address+, +position+, +password;3. User.hbm.xml配置4. 编写Dao层com.nyf.Daopackage com.nyf.dao;import java.util.*;import com.nyf.entity.*;public interface IUserDao /*增加一个用户*/public void add(User user);/*删除一个用户*/public void del(User user);/*修改一个用户*/public void modify(User user);/*根据Id查询一个用户*/public User findById(int id);/*验证用户是否存在*/public User validate(String name,String password);/*查询所有的用户*/public List findAll();/*分页查询用户*/public List findPage(int pageNo,int counts);5. 编写dao层实现类Com.nyf.dao.implpackage com.nyf.dao.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.stereotype.Repository;import com.nyf.dao.IUserDao;import com.nyf.entity.User;/把 userDaoImpl交给Spring IOC容器管理Repository(userDao)public class UserDaoImpl implements IUserDao /由Spring依赖注入Autowiredprivate HibernateTemplate hibernateTemplate;Overridepublic void add(User user) hibernateTemplate.save(user);Overridepublic void del(User user) hibernateTemplate.delete(user);Overridepublic void modify(User user) hibernateTemplate.update(user);Overridepublic User findById(int id) List users = hibernateTemplate.find(from User u where u.id=?, id);if(users.size()0)return users.get(0);elsereturn null;Overridepublic List findAll() List users = hibernateTemplate.find(from User);return users;Overridepublic List findPage(int pageNo, int counts) List users = hibernateTemplate .getSessionFactory() .openSession() .createCriteria(User.class) .setFirstResult(pageNo*counts) .setMaxResults(counts) .list();return users;Overridepublic User validate(String name,String password) String hql = from User u where =? and u.password=?;String values = name,password;List users = hibernateTemplate.find(hql,values);if(users.size()0)return users.get(0);elsereturn null;7. 编写ServiceCom.nyf.servicepackage com.nyf.service;import java.util.*;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import com.nyf.dao.IUserDao;import com.nyf.entity.User;/Service层最好用Service注解/Transactional该业务开启事物管理Service Transactional public class UserService /Spring 自动注入Autowiredprivate IUserDao userDao;public void save(User user)userDao.add(user);public void delete(User user)userDao.del(user);public void modify(User user)userDao.modify(user); /对于查询的业务,最好事物设置为只读Transactional(readOnly=true) public User findById(int id)return userDao.findById(id);Transactional(readOnly=true)public User validate(String name,String password)return userDao.validate(name,password);Transactional(readOnly=true)public List findAll()return userDao.findAll();Transactional(readOnly=true)public List findPage(int pageNo,int counts)return userDao.findPage(pageNo, counts);编写SpringMVC配置文件,组件自动扫描控制器层,文件上传解析器等 !- 是一种简写形式,完全可以手动配置替代这种简写形式简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为Controllers分发请求所必须的。并提供了:数据绑定支持,NumberFormatannotation支持,DateTimeFormat支持,Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。后面,我们处理响应ajax请求时,就使用到了对json的支持。后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是这一句注册的这两个bean。 - 编写相应的WEB.XML文件 contextConfigLocation classpath*:beans.xml org.springframework.web.context.ContextLoaderListener springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath*:springmvc.xml 1 springmvc *.do CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 CharacterEncodingFilter /* openSessionInViewFilter org.springframework.orm.hibernate3.support.OpenSessionInViewFilter openSessionInViewFilter /* index.jsp 8. 编写Web层Com.nyf.webpackage com.nyf.web;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.beans.factory.annotation.Autowired;import pertyeditors.CustomDateEditor;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.InitBinder;import org.springframework.web.bind.annotation.RequestMapping;import com.nyf.entity.User;import com.nyf.service.UserService;/ 控制器层推荐使用Controller注解/RequestMapping(/user/*)路径访问注解ControllerRequestMapping(/user/*)public class UserAction Autowiredprivate UserService userService;RequestMapping(/register)public String register(User user)System.out.println(user);System.out.println(-UserAction-register()-);userService.save(user);return ./index.jsp;RequestMapping(/login)public String login(String name,String password,Model model)System.out.println(name +, +password);User user = userService.validate(name, password);if(user!=null)model.addAttribute(user, user);return ./list.jsp;return error.jsp;/* * 如果表单对象中有日期类型属性时 * */InitBinderpublic void initBinder1(WebDataBinder binder) /注册属性编辑器DateFormat df = new SimpleDateFormat(yyyy-MM-dd);binder.registerCustomEditor( Date.class, new CustomDateEditor(df, true) );*导入ExtJS编写/js/login.jsExt.onReady(function()var loginform = Ext.create(Ext.form.Panel,standardSubmit: true,width: 400, height: 200, frame: true, floating: true,draggable: true, title: 用户登录, layout: type: vbox, align: center , defaults: labelWidth: 70,width: 400,labelAlign: right, renderTo: document.body, items: xtype: textfield, fieldLabel: 用户名, name: name , xtype: textfield, fieldLabel: 密码, regex: /w6,30$/, inputType: password, emptyText: 请输入密码, name: password ,bbar: -, text: 确定,handler: function() loginform.getForm().submit(waitTitle: 提示,waitMsg: 正在提交数据,method: POST,url: http:/localhost:8080/javaee-T6/user/login.do,success:function(form,action)Ext.Msg.alert(提示,注册成功);,failure:function(form,action)Ext.Msg.alert(提示,原因如下+););, text: 取消););编写/js/register.jsExt.onReady(function() var store = Ext.create(Ext.data.Store, fields: name, value,data: name: 1, value: 男, name: 0, value: 女);Ext.apply(Ext.form.field.VTypes, /密码校验函数 password: function(val, field) if (field.initialPassField) var pwd = field.up(form).down(# + field.initialPassField); return (val = pwd.getValue(); return true; ,/出错时的提示信息 passwordText: 密码不匹配!);var regform = Ext.create(Ext.form.Panel, standardSubmit: true, title: 添加人员信息,width: 500,height: 400,frame: true,floating: true,draggable: true,renderTo: Ext.getBody(),bodyBorder: true,bodyStyle: padding:10px,layout: type: table,columns: 3, ,defaults: labelWidth: 70,width: 480,colspan: 3,labelAlign: left, items: xtype: textfield,fieldLabel: 姓名,name: name, xtype: numberfield,fieldLabel: 年龄,decimalPrecision: 0,name: age, xtype: datefield,fieldLabel: 出生日期,format: Y-m-d,value: new Date(),name: birthday,xtype: textfield,regex: /0-911$/,regexText:手机号码填写不对,fieldLabel: 手机号码,name: phone,xtype: textfield,regex: /(a-zA-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023九年级数学上册 第23章 图形的相似23.4 中位线说课稿 (新版)华东师大版
- 2023七年级数学上册 第3章 整式的加减3.3 整式 2多项式 3升幂排列与降幂排列说课稿 (新版)华东师大版
- 药品销售合同范本及注意事项解读
- 2024年秋九年级化学上册 第1单元 走进化学世界 课题3 走进化学实验室 第1课时 常用仪器 药品的取用说课稿 (新版)新人教版
- 节能减排领域合作协议保证承诺书4篇范文
- 公司网络信息安全责任协议书
- 小区绿植租赁和照料协议
- 双基地前视SAR多普勒参数估计算法:理论、创新与实践
- 现代物流园区厂房租赁与物流信息化服务合同
- 创业团队股权分配与退出机制协议
- T-CUWA 20059-2022 城镇供水管网模型构建与应用技术规程
- GB/T 32066-2024煤基费托合成液体石蜡
- 雅典帕特农神庙古希腊建筑典范与历史见证
- GA/T 2019-2023公安视频监控视频存储技术要求
- 2024零碳建筑评价标准
- 机械设计基础(第六版)课件
- 口腔癌术后患者的护理查房课件
- 贸易融资典型案例介绍
- 机动车检测站仪器设备日常维护和保养作业指导书
- YY/T 0698.5-2023最终灭菌医疗器械包装材料第5部分:透气材料与塑料膜组成的可密封组合袋和卷材要求和试验方法
- 【小学生心理健康教育】开学第一课课件ppt
评论
0/150
提交评论