6.SSH框架整合

ssh:spring+spring-mvc+hibernate

6.1 整合的场所 :web.xml

跟 5.ssm框架 整合类似,可以对照学习,通过监听器配置hibernate,通过servlet配置mvc

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--默认访问的页面,可以不用设置--><welcome-file-list><welcome-file>/views/login.jsp</welcome-file></welcome-file-list><!--上下文配置路径--><context-param><param-name>contextConfigLocation</param-name><!--hibernate的配置文件--><param-value>classpath:applicationContext.xml</param-value></context-param><listener><!--上下文加载监听器,主要用于监听上下文参数配置,这里主要用来监听hibernate的配置文件--><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--这是对spring mvc的整合配置--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!--上下文配置路径--><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.action</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>
</web-app>

6.2 mvc和hibernate的配置文件:

6.2.1 spring-mvc.xml:( resources文件夹下)

<?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:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--加载配置文件,加载进来就可以通过@Value注解来获取属性的值--><context:property-placeholder location="classpath:config.properties" /><!--视图解析器:在控制器返回视图的时候生效--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/" /><property name="suffix" value=".jsp" /></bean><!--字符串消息转换器--><bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter" /><!--JSON消息转换器--><bean id="jsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value><value>application/json;charset=UTF-8</value></list></property></bean><!--开启MVC注解驱动--><mvc:annotation-driven><!--消息转换器--><mvc:message-converters><ref bean="stringHttpMessageConverter" /><ref bean="jsonHttpMessageConverter" /></mvc:message-converters></mvc:annotation-driven><!--扫描控制器所在的包--><context:component-scan base-package="com.dream.ssh.controller" /><mvc:default-servlet-handler /><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="UTF-8" /><!--内存中可用大小:3 * 1024 * 1024 = 3145728 = 3M--><property name="maxInMemorySize" value="3145728" /><!--设置临时存储目录,当上传文件大小超过内存中可使用大小时将产生临时文件--><property name="uploadTempDir" value="/upload"/><!--10 * 1024 * 1024 = 1048576 = 10M --><!--最大上传大小--><property name="maxUploadSize" value="1048576" /><!--单个文件大小--><property name="maxUploadSizePerFile" value="1048576" /></bean><!--组件扫描-->
</beans>

6.2.2 applicationContext.xml:( resources文件夹下)

<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:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><!--********************************************配置Spring***************************************--><!-- 自动扫描 --><context:component-scan base-package="com.dream.ssh"><!-- 扫描时跳过 @Controller 注解的JAVA类(控制器) --><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!--********************************************配置hibernate********************************************--><!--扫描配置文件(这里指向的是之前配置的那个config.properties)--><context:property-placeholder location="classpath:/config.properties" /><!--Druid数据源配置 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="${jdbc.url}" /><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!--配置session工厂--><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan" value="com.dream.ssh.pojo" /><property name="hibernateProperties"><props><prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <!--hibernate根据实体自动生成数据库表--><prop key="hibernate.dialect">${hibernate.dialect}</prop>   <!--指定数据库方言--><prop key="hibernate.show_sql">${hibernate.show_sql}</prop>     <!--在控制台显示执行的数据库操作语句--><prop key="hibernate.format_sql">${hibernate.format_sql}</prop>     <!--在控制台显示执行的数据哭操作语句(格式)--></props></property></bean><!-- 事物管理器配置  --><bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 开启注解事务--><tx:annotation-driven transaction-manager="transactionManager"/><bean id="hibernateTemplate"class="org.springframework.orm.hibernate4.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /></bean>
</beans>

config.properties:

#database connection config
jdbc.url=
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.username=
jdbc.password=#hibernate config
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.show_sql = true
hibernate.format_sql = true
hibernate.hbm2ddl.auto = update

6.3 Dao层使用hibernate进行持久化操作

pojo:

注:set和get方法需添加,属性和表字段不区分大小写,但若是不相同,还需要使用注解@Column进行解释。

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;/*** 用户User实体类*/
@Entity
@Table(name = "t_user")
public class User{//用户id@Idprivate String yhid;//用户姓名private String yhxm;//用户口令private String yhkl;//用户性别private String yhxb;//用户部门private String yhbm;//排序号private Long pxh;//是否禁用private String sfjy;}

dao层实现类:

注:使用Repository注解标识

/*** 用户持久层的对象*/
@Repository
public class UserDaoImpl implements UserDao {HibernateTemplate hibernateTemplate;/*** 注入 hibernateTemplate对象* @param hibernateTemplate 对象*/@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}
}

常用示例1(新增):

@Override
public int insert(User user) {if (hibernateTemplate.save(user)!=null){return 1;} else {return 0;}
}

常用示例2(删除和批量删除):

/*** 批量删除* @param ids 用户id的字符串集合* @return 1 =成功*/
@Override
public Integer batchDelete(String[] ids) {List<User> users = new ArrayList<>();for (int i = 0; i < ids.length; i++) {User user = new User();user.setYhid(ids[i]);users.add(user);}hibernateTemplate.deleteAll(users);return 1;
}/*** 删除* @param username 用户id* @return 1 = 成功*/
@Override
public Integer delete(String username) {User user = new User();user.setYhid(username);hibernateTemplate.delete(user);return 1;
}

常用示例3(修改):

注:一个业务层方法中,需要同时调用查询和修改,无法直接使用hibernateTemplate.update方法,session中的持久化对象会出现多个,引发冲突报出异常,可以使用hibernateTemplate.merge(user);将需要修改的对象复制到持久化对象中。

/*** 修改* @param user 用户实体* @return 1 =成功*/
@Override
public int update(User user) {hibernateTemplate.update(user);return 1;
}

常见示例4(查询)

/*** 根据id查询用户信息* @param username 用户id* @return 用户信息对象*/
@Override
public User selectById(String username) {User user = (User) hibernateTemplate.get(User.class, username);return user;
}/*** 根据条件查询(模糊查询+分页+排序)* @param name 用户名或者id* @param depart 用户所属部门* @param start 开始的条数* @param limit 获取的数据量* @return*/
@Override
public List<User> select(String name, String depart, Integer start, Integer limit) {return hibernateTemplate.execute(session -> {Criteria criteria = session.createCriteria(User.class);if (StringUtils.trimObj(name)!=""){criteria.add(Restrictions.or(Restrictions.like("yhid",name,MatchMode.ANYWHERE),Restrictions.like("yhxm",name,MatchMode.ANYWHERE)));}if (StringUtils.trimObj(depart)!=""){criteria.add(Restrictions.eq("yhbm",depart));}List<User> list = criteria.addOrder(Order.asc("pxh")).setFirstResult(start).setMaxResults(limit).list();return list;});
}
/*** 得到条件下的用户数量(结合上一个分页的方法使用)* @param name 用户名或id* @param depart 用户部门* @return 数量*/
@Override
public Integer getTotal(String name, String depart) {return hibernateTemplate.execute(session -> {Criteria criteria = session.createCriteria(User.class);if (!StringUtils.trimObj(name).equals("")){criteria.add(Restrictions.or(Restrictions.like("yhid",name,MatchMode.ANYWHERE),Restrictions.like("yhxm",name,MatchMode.ANYWHERE)));}if (!StringUtils.trimObj(depart).equals("")){criteria.add(Restrictions.eq("yhbm",depart));}Long total = (Long)criteria.setProjection(Projections.rowCount()).uniqueResult();return total.intValue();});
}

6.SSH框架整合及简单使用示例相关推荐

  1. SSH框架整合-慕课课程

    SSH框架整合-慕课课程 学习时间:2018年12月3日 慕课链接:基于SSH实现员工管理系统之框架整合篇 内容:Struts2+Hibernate+Spring框架整合,分为Struts2整合Spr ...

  2. 【struts2+spring+hibernate】ssh框架整合开发

    SSH框架整合 1 Struts2+Spring+Hibernate导包 Struts2导入jar包: * struts2/apps/struts2-blank.war/WEB-INF/lib/*.j ...

  3. SSH框架整合——基于注解

    SSH框架整合--基于注解 @(Spring)[Spring, hibernate, struts2, 框架整合] SSH框架整合基于注解 SSH框架整合 第一步导入Jar包 第二步导入配置文件 第三 ...

  4. SSH框架整合——基于XML配置文件

    SSH框架整合--基于XML配置文件 @(Spring)[spring, struts2, hibernate, 框架整合, ssh, Spring] SSH框架整合基于XML配置文件 SSH框架整合 ...

  5. Struts2和hibernate框架整合实现简单的注册登陆功能

    Struts2和hibernate框架整合实现简单的注册登陆功能 项目结构: LoginAction.java package action; import vo.User; import vo.Us ...

  6. SSH框架整合开发(SSH框架整合过程)

    SSH框架整合过程 第一步 导入需要用到的jar包 第二步 搭建struts2环境 (1) 创建action ,创建struts.xml配置文件,配置action (2) 配置struts2 的过滤器 ...

  7. springMVC和Shiro框架整合使用简单示例 【转】

    为什么80%的码农都做不了架构师?>>>    一.目录结构 首先是目录结构如图: 二.pom.xml文件 <project xmlns="http://maven. ...

  8. SSH(Struts 2.3.31 + Spring 4.1.6 + Hibernate 5.0.12 + Ajax)框架整合实现简单的增删改查(包含分页,Ajax 无刷新验证该用户是否存在)...

    软件152 余建强 该文将以员工.部门两表带领大家进入SSH的整合教程: 源码下载:http://download.csdn.net/detail/qq_35318576/9877235 SSH 整合 ...

  9. jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)

    课程分享 本博客开通以来,受到广大博友的一致喜爱, <wbr><wbr></wbr></wbr> 我也不负众望,再接再厉. <wbr>< ...

最新文章

  1. LNMP网站并发计算
  2. c++调用c#写的DLL
  3. key设计 短信验证存redis_Redis存储Key的一种设计实现方式:模式匹配
  4. boost::hana::detail::ebo用法的测试程序
  5. 一个商城的购车相关代码
  6. centos7环境下搭建storm集群
  7. UE4 打包C++项目到win32平台报错 could not find mspdbcore.dll
  8. elementUI给树控件中的节点添加图标
  9. python基础--导入模块
  10. 网站ping端口的操作方法和命令介绍
  11. Android逆向工程实例 -- 善领安卓版DSA APP手势操作bug修复
  12. (python)爬虫----八个项目带你进入爬虫的世界
  13. MySQL中统计函数的使用
  14. python图像算法工程师_图像算法工程师的岗位职责
  15. IBM微码刷新(一)使用BoMC制作微码刷新介质-cuixf@DC
  16. 关于C语言二级指针正确使用总结
  17. android播放器概述,【Android】 从头搭建视频播放器(1)——概述
  18. 自动分发秘钥脚本(复制修改ip即可使用)
  19. 堡垒机,ssh协议,telnet协议,b/s架构
  20. 互联网早报:腾讯推出“微小号”,用虚拟手机号拨打电话收发短信

热门文章

  1. 【七夕活动精选】致你的七夕礼物——3D Heart,跳动的 3D 爱心
  2. 我整理了50道经典Java算法题,直接进了字节跳动!!
  3. 怎么把两个PDF合并成一个?这几种操作轻松合并
  4. APIS——获取dom对象、操作元素内容和属性、间歇函数
  5. 从小程序到小程序云开发
  6. 5.3. Constraints
  7. 【Python】如何用Python发送SMTP邮件
  8. 统统卸载!再见了,流氓顽固软件!
  9. 如何将一段视频做成动图?分享一款视频转gif工具
  10. 两角和与差的正弦、余弦、正切公式推导