java学习记录(9)

   ssh工程实践之struts2&hibernate篇,ssh采用的版本分别是(struts-2.3.16.1, spring-framework-4.3.9.RELEASE, hibernate-release-5.2.10.Final)。从基础使用的角度来指示stuts2的使用。工程将从三个部分进行集成struts2, struts2和hibernate,struts2,hibernate和spring最终集成。
   本篇是ssh组合工程的第三篇,在前面两篇中论述了struts2和hibernate的集成,在本篇中将新增spring的集成。

行文结构

  1. spring是什么
  2. spring jar包的作用
  3. 组合所需要的jar包
  4. 用spring来管理对象,配置文件
  5. 工程代码
  6. 代码下载

1 spring是什么
   这里只是大致的理解spring的含义而不是要去具体的定义它什么,做工程在helloworld阶段只需要知道它的大概意思即可。
spring用来管理工程中对象的生成和销毁,让工程中不在出现new的字眼。让代码人员更加专注于业务的编写。
2 spring 各个jar包的含义
   java中的jar包的管理是比较麻烦的,但是明白每个jar包的作用之后就不会太麻烦。
   网络中关于spring jar包的作用有很多论述就不在一一列举了。
3 组合工程所需要的jar包
spring的所有jar包,并包括aspectjweaver-1.6.12.jar。
两个javassist.jar,但是并不冲突。分别用于不同的工程中。
4 用spring来管理对象
   在struts2&hibernate组合工程时每次进行数据库的操作都需要获取一个session,而在spring中只需要把相应的对象注入到spring中就会由spring来进行管理。主要是理解spring的配置文件。

<?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><!-- 定义数据源的信息 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close"><property name="driverClass"><value>com.mysql.jdbc.Driver</value></property><property name="jdbcUrl"><value>jdbc:mysql://localhost:3306/test?characterEncoding=utf8&amp;useSSL=false</value></property><property name="user"><value>root</value></property><property name="password"><value>ziling</value></property><property name="maxPoolSize"><value>80</value></property><property name="minPoolSize"><value>1</value></property><property name="initialPoolSize"><value>1</value></property><property name="maxIdleTime"><value>20</value></property></bean><!--定义Hibernate的SessionFactory --><!-- SessionFactory使用的数据源为上面的数据源 --><!-- 指定了Hibernate的映射文件和配置信息 --><bean id="sessionFactory"class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"><property name="dataSource"><ref local="dataSource" /></property><property name="mappingResources"><list><value>com/ziling/bean/User.hbm.xml</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="show_sql">true</prop><prop key="hibernate.jdbc.batch_size">20</prop></props></property></bean><bean id="transactionManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><tx:advice id="transactionAdvice" transaction-manager="transactionManager">  <tx:attributes>             <tx:method name="get*" propagation="REQUIRED" />             <tx:method name="*" propagation="REQUIRED" />  </tx:attributes>  </tx:advice><!-- aop代理设置,默认是注入接口要加上proxy-target-class="true" 通过AOP配置提供事务增强,让dao包下所有Bean的所有方法拥有事务--><aop:config proxy-target-class="true">  <aop:pointcut id="daoPointcut" expression="execution(* com.ziling.dao.*.*(..))"/>  <aop:advisor advice-ref="transactionAdvice" pointcut-ref="daoPointcut" />  </aop:config><bean id="user" class="com.ziling.bean.User"></bean><!--用户注册数据访问类 --><bean id="loginDao" class="com.ziling.daoImpl.LoginDaoImpl"><property name="sessionFactory"><ref bean="sessionFactory" /></property><property name="user"><ref bean="user" /></property></bean><!--用户注册业务逻辑类 --><bean id="loginService" class="com.ziling.serviceImpl.LoginServiceImpl"><property name="loginDao"><ref bean="loginDao" /></property></bean><!-- 用户注册的Action --><bean id="loginAction" class="com.ziling.action.LoginAction"><property name="loginService"><ref bean="loginService" /></property></bean><!-- more bean definitions go here --></beans>
package com.ziling.action;import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;import com.opensymphony.xwork2.ActionSupport;
import com.ziling.serviceImpl.LoginServiceImpl;public class LoginAction extends ActionSupport{/*** */private static final long serialVersionUID = 1L;private String username;private String password;LoginServiceImpl loginService;private InputStream inputStream;public InputStream getInputStream() {return inputStream;}public void setInputStream(InputStream inputStream) {this.inputStream = inputStream;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public void setLoginService(LoginServiceImpl loginService) {this.loginService = loginService;}@Overridepublic String execute() throws Exception {//      @SuppressWarnings("resource")
//      ApplicationContext context = new FileSystemXmlApplicationContext("F:/zilingJava/workSpace/SSH_Struts&Hibernate&spring/WebContent/WEB-INF/applicationContext.xml");
//      loginService = (LoginServiceImpl) context.getBean("loginService");return loginService.checkUser(username, password);}public String returnString() {
//      @SuppressWarnings("resource")
//      ApplicationContext context = new FileSystemXmlApplicationContext("F:/zilingJava/workSpace/SSH_Struts&Hibernate&spring/WebContent/WEB-INF/applicationContext.xml");//      loginService = (LoginServiceImpl) context.getBean("loginService");String userNames = loginService.getUserName();try {inputStream = new ByteArrayInputStream(userNames  .getBytes("UTF-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}  return "success";}
}

5 工程代码
进行判断的类

package com.ziling.serviceImpl;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;import com.ziling.bean.User;
import com.ziling.daoImpl.LoginDaoImpl;
import com.ziling.service.LoginService;public class LoginServiceImpl implements LoginService {LoginDaoImpl loginDao;User user;public void setLoginDao(LoginDaoImpl loginDao) {this.loginDao = loginDao;}@Overridepublic String checkUser(String username, String password) {//      @SuppressWarnings("resource")
//      ApplicationContext context = new FileSystemXmlApplicationContext("F:/zilingJava/workSpace/SSH_Struts&Hibernate&spring/WebContent/WEB-INF/applicationContext.xml");
//      loginDao = (LoginDaoImpl) context.getBean("loginDao");user = loginDao.getUser(username);if(user.getUsername()!=null){if(password.equals(user.getPassword())){return "success";}else{return "error";}}else{return "register";}}public String getUserName() {
//      ApplicationContext context = new FileSystemXmlApplicationContext("F:/zilingJava/workSpace/SSH_Struts&Hibernate&spring/WebContent/WEB-INF/applicationContext.xml");
//      loginDao = (LoginDaoImpl) context.getBean("loginDao");return loginDao.getUserName();}
}

6 代码下载
代码下载

SSH组合工程之-struts2hibernatespring(工程下载)相关推荐

  1. Git 之 如何递归下载工程,以及递归下载中 OpenSSL SSL_read: Connection was reset, errno 10054 的报错处理

    Git 之 如何递归下载工程,以及递归下载中 OpenSSL SSL_read: Connection was reset, errno 10054 的报错处理 目录 Git 之 如何递归下载工程,以 ...

  2. KEIL5工程不能编译和下载,运行时提示找不到.axf文件(Error: Flash Download failed - Could not load file“.axf“)

    KEIL5工程不能编译和下载,运行时提示找不到.axf文件 KEIL5工程不能编译和下载,运行时提示找不到.axf文件 keil5debug运行时弹出警告 在网上找了好多办法都试过,就是不行,最终根据 ...

  3. ISE14.7手把手使用教程:建立工程、仿真、下载bit流、程序固化、以及一些常见的坑

    最近,博主在学习FPGA,用的开发软件是ISE14.7,开发板是Spartan-3E starter board.本文主要记录下ISE14.7软件的使用,怎样从头开始建立工程,写代码,仿真,到下载bi ...

  4. 【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 )

    文章目录 前言 一.创建 Android 项目 二.关联 Android 工程与 Flutter Module 工程 1.配置 Flutter Module工程 2.配置 build.gradle 3 ...

  5. flex java 开发环境搭建_Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立) 2019年12月07日 阅读数:7 这篇文章主要向大家介绍Flex+JAVA+BlazeDS开发环境配置(Java工程 ...

  6. idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程

    5. 使用IDEA创建Maven工程 - 创建javase工程 1.目标 能够使用IDEA创建javase的Maven工程 2.路径 创建java工程 java工程目录结构 编写Hello World ...

  7. 【特征工程】特征工程技术与方法

    引言 在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而,单纯学习机器学习的算法流程,可能仍然不会使用这些算法,尤其是应用到实际问题的时候,常常不知道怎么提取特 ...

  8. Android Studio 普通工程变成JNI工程

    问题 如果现有一个Android studio工程需求改变,需要加入JNI部分:或者从github上下载了一个基础的AS工程,现在需要加入JNI部分:怎样把一个AS普通工程变成JNI工程? 解决问题 ...

  9. 广州电子厂房净化工程_光学微电子净化工程|光学无尘车间工程|微电子洁净室解决方案...

    光学微电子净化工程亦名无尘室或清净室,目前已是半导体.精密制造.液晶制造.光学制造.线路板制造和生物化学.医药.食品制造等行业不可或缺的重要设施.近几年来,由于技术之创新发展,对于产品的高精密度化.细 ...

最新文章

  1. Linux控制Bash输出的格式与颜色
  2. 食物日记:上海铁板烧
  3. vbs结束进程代码_物联网学习教程—Linux系统编程之进程控制
  4. jQuery操作json
  5. KubeCon 2019 北美会议完美落幕| 云原生生态周报 Vol. 29
  6. hdfs安全模式退出_浅谈HDFS(二)之NameNode与SecondaryNameNode
  7. 能让你少写1000行代码的20个正则表达式
  8. 基于matlab的信号与系统实例,华南理工大学信号与系统实验基于Matlab的信号处理实例...
  9. java 异常哪个包,这个提示包不存在的异常是咋回事
  10. php连接mysql的字符集问题_关于php7 设计链接mysqlutf8mb4字符集的问题
  11. hdoj1421:搬寝室(dp基础题)
  12. signature=fd45b8c9a90eebce5d855f07302ab4ee,Private Use Area
  13. oracle 数据备份视频,赵强老师:Oracle数据库(之四):备份与恢复视频课程
  14. Result类的写法
  15. 10 Guidelines for Better Website Background Videos
  16. 【收藏】B站科普硬核节目
  17. linux系统定时器中断优先级,请教定时器中断与串口中断优先级配置问题
  18. 【单片机毕业设计】【mcuclub-jj-050】基于单片机的门禁的设计
  19. 镜头随人物而动,视频编辑服务让用户稳站C位
  20. 以PXE或UEFI PXE网络启动WinPE系统

热门文章

  1. 180张超漂亮QQ头像打包下载
  2. 资料分享:PyTorch中文版官方教程来啦(附下载)
  3. VBA 将Excel工作簿中所有表格进行一键排版
  4. C# 对数字取整和求余
  5. css精灵技术用像素定位,css精灵图怎么定位
  6. 史上最全的推广渠道(值得收藏)
  7. 用excel画瀑布图
  8. 2.Excel 自动匹配学生班级
  9. 关于“打开数据库时出错: 用户 ‘sa‘ 登录失败。”的解决方法
  10. 招行就是有前途——行长马蔚华年薪居各行之首