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. c语言在车辆工程专业中的用途,车辆工程专业培养目标与毕业要求(11页)-原创力文档...
  2. Web开发者用什么编辑器?
  3. java timezone 107_java - Java使用TimeZone - 堆栈内存溢出
  4. js 读取flask后台变量
  5. 计算机协会科创部部长职责,学生会科创部工作计划
  6. 严重性代码说明项目文件行 禁止显示状态错误 C4996 fopen('fscanf'、strcmp):This function or variable may be unsafe. 最全解决办法
  7. Socket一次Recv接受的字节有限制么?
  8. java和cnc_Java程序员的目标,你都达到了多少条?
  9. opencv 绘制坐标曲线_OpenCV手工实现灰度及RGB直方图
  10. 文件批量传输组件作为架包使用说明
  11. ios git解决冲突_适用于iOS和Linux的远程同步解决方案:Git和工作副本
  12. awbeci—一个帮助你快速处理日常工作的网址收集网站
  13. python-time、datetimme模块
  14. 三层交换机VLAN间路由
  15. 2016年第5本:必然
  16. VMware Workstation Pro 虚拟机启动失败 cpu虚拟化开启
  17. 邮件服务器lp在哪找,lp地址查询_ip地址查询定位
  18. echarts默认高亮省市区联动
  19. 短视频造假术,你值得拥有
  20. 短信自动转发到MySQL_联移短信中间件

热门文章

  1. 小程序素材抓取软件_生鲜微信小程序软件
  2. 小扰动线性化思想在机器学习中的跨界应用
  3. 地月系3D-OPENGL
  4. SQL2005怎样远程连接以及使用sa用户登录
  5. 特征降维-PCA(Principal Component Analysis)
  6. No.61-HackTheBox-windows-Conceal-Walkthrough渗透学习
  7. 4.1-文本分类+超参搜索
  8. 从0到1打造直播 App
  9. android简繁体相互转换
  10. iPod Mini 和 iRiver H10