前期准备工作

习惯性安装有

jrebel(热加载,后台会自动帮忙部署项目)

如果需要,还要先安装jrebel,然后破解下

如果在项目中安装成功,则会自动生成rebel.xml文件

lombok(根据字段,自动生成对应的set和get方法)

eclipse中的使用方法

我叙述的是IDEA中的使用,越用越舒服

先安装lombok plugin插件,再添加lombok.jar包

log4j(日志打印)

所需jar包

log4j-core-2.10.0.jar
log4j-api-2.10.0.jar

配有log4j2.xml(因为log4j-api-2.10.0jar包是2.0版本,若是1.0版本,需要配置的是log4j.properties文件)

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.opensymphony.xwork2" level="info"/>
<Logger name="org.apache.struts2" level="info"/>
<Logger name="org.demo.rest" level="debug"/>
<Root level="warn">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>

log4j.properties

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{} %5p %c{1}:%L - %m%n ### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n ### set log levels - for more verbose logging change 'info' to 'debug' ###
# error warn info debug trace
log4j.rootLogger= info, stdout

开启注解

设置-构建,执行,部署-编译器-Annotation Processors

勾起Enable annotation processing

Hibernate框架

需要的jar包

antlr-2.7.7.jar
byte-buddy-1.8.12.jar
c3p0-0.9.5.2.jar
classmate-1.3.4.jar
commons-beanutils-1.8.3.jar
dom4j-1.6.1.jar
hibernate-c3p0-5.3.1.Final.jar
hibernate-commons-annotations-5.0.3.Final.jar
hibernate-core-5.3.1.Final.jar
jandex-2.0.3.Final.jar
javassist-3.22.0-GA.jar
javax.persistence-api-2.2.jar
jboss-logging-3.3.2.Final.jar
jboss-transaction-api_1.2_spec-1.1.1.Final.jar
junit-4.9.jar
log4j-1.2.16.jar
lombok.jar
mchange-commons-java-0.2.11.jar
mysql-connector-java-5.1.7-bin.jar

jdbc.properties

jdbc.driverclass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///spring
jdbc.username=root
jdbc.password=123456

com.le.domain.Account类

package com.le.domain;
import lombok.Getter;
import lombok.Setter;
@Setter@Getter
public class Account {
private Integer id;
private String name;
private Double money;
@Override
public String toString() {
return "Account{" +
"id=" + id +
", name='" + name + '\'' +
", money=" + money +
'}';
}
}

com.le.domain.Account.hbm.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.le.domain.Account" table="account" >
<!--建立类属性哪一个是主键 还要跟数据库当中主键进行对象-->
<id name="id" column="id" >
<generator class="native"/>
</id>
<!--建立类中的普通属性与数据库当中字段进行关联-->
<property name="name" column="name" />
<property name="money" column="money"/>
</class>
</hibernate-mapping>

hibernateApplication.xml

<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!--配置hibernate-->
<!--引入属性文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverclass}" />
<!--属性文件当中的名称不能和name名称一样-->
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- Spring整合Hibernate -->
<!-- 引入Hibernate的配置的信息===== spring-orm.jar========== -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置Hibernate的相关属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 设置映射文件 -->
<property name="mappingResources">
<list>
<value>com/le/domain/Account.hbm.xml</value>
</list>
</property>
</bean>
<!--配置事务管理器-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--开启注解 增强-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

Struts框架

需要的jar包

asm-5.2.jar
asm-commons-5.2.jar
asm-tree-5.2.jar
commons-fileupload-1.3.3.jar
commons-io-2.5.jar
commons-lang3-3.6.jar
freemarker-2.3.26-incubating.jar
javassist-3.20.0-GA.jar
junit-4.9.jar
log4j-api-2.10.0.jar
log4j-core-2.10.0.jar
ognl-3.1.15.jar
struts2-core-2.5.16.jar

web/WEB-INF/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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--Spring的核心监听器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener> <!--
加载Spring的配置文件的路径的
默认加载的/WEB-INF/applicationContext.xml
-->
<context-param>
<param-name> contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>

struts.xml

其中action交由spring管理

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts> <package name="struts" extends="struts-default">
<!--spring 当中的id-->
<action name="account_*" class="accountAction" method="{1}"/>
</package>
</struts>

com.le.web.AccountAction

package com.le.web;
import com.le.domain.Account;
import com.le.service.AccountService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; public class AccountAction extends ActionSupport implements ModelDriven<Account> {
private Account account = new Account();
@Override
public Account getModel()
{
return account;
} public void setAccountService(AccountService accountService) {
this.accountService = accountService;
} AccountService accountService;
public String save()
{
accountService.save(account);
System.out.println("AccountAction 保存了" + account.toString());
return null;
}
}

com.le.service.AccountService

package com.le.service;
import com.le.domain.Account; public interface AccountService {
public void save(Account account);
}

com.le.service.AccountServiceImpl

package com.le.service;

import com.le.dao.AccountDao;
import com.le.domain.Account;
import lombok.Setter;
import org.springframework.transaction.annotation.Transactional; @Setter
@Transactional
public class AccountServiceImpl implements AccountService {
private AccountDao accountDao; @Override
public void save(Account account) {
System.out.println("已经来到业务类"+account);
//调用dao保存到数据库当中
accountDao.save(account);
}
}

com.le.dao.AccountDao

package com.le.dao;
import com.le.domain.Account; public interface AccountDao {
public void save(Account account);
}

com.le.dao.AccountDaoImpl

package com.le.dao;
import com.le.domain.Account;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport; public class AccountDaoImpl extends HibernateDaoSupport implements AccountDao { @Override
public void save(Account account) {
System.out.println("AccountDaoImpl 保存到数据库");
this.getHibernateTemplate().save(account);
}
}

Spring框架

需要的jar包

antlr-2.7.7.jar
asm-5.2.jar
asm-commons-5.2.jar
asm-tree-5.2.jar
byte-buddy-1.8.12.jar
c3p0-0.9.5.2.jar
classmate-1.3.4.jar
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.commons.pool-1.5.3.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-beanutils-1.8.3.jar
commons-fileupload-1.3.3.jar
commons-io-2.5.jar
commons-lang3-3.6.jar
dom4j-1.6.1.jar
druid-1.0.15.jar
freemarker-2.3.26-incubating.jar
hamcrest-core-1.3.jar
hibernate-c3p0-5.3.1.Final.jar
hibernate-commons-annotations-5.0.3.Final.jar
hibernate-core-5.3.1.Final.jar
jandex-2.0.3.Final.jar
javassist-3.22.0-GA.jar
javax.persistence-api-2.2.jar
jboss-logging-3.3.2.Final.jar
jboss-transaction-api_1.2_spec-1.1.1.Final.jar
junit-4.12.jar
log4j-api-2.10.0.jar
log4j-core-2.10.0.jar
mchange-commons-java-0.2.11.jar
mysql-connector-java-5.1.7-bin.jar
ognl-3.1.15.jar
spring-aop-5.0.7.RELEASE.jar
spring-aspects-5.0.7.RELEASE.jar
spring-beans-5.0.7.RELEASE.jar
spring-context-5.0.7.RELEASE.jar
spring-core-5.0.7.RELEASE.jar
spring-expression-5.0.7.RELEASE.jar
spring-jdbc-5.0.7.RELEASE.jar
spring-orm-5.0.7.RELEASE.jar
spring-test-5.0.7.RELEASE.jar
spring-tx-5.0.7.RELEASE.jar
spring-web-5.0.7.RELEASE.jar
struts2-core-2.5.16.jar
struts2-spring-plugin-2.5.16.jar

applicationContext.xml

<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
"> <!--导入hibernate相关配置-->
<import resource="hibernateApplication.xml"/> <!--action scope="prototype"-->
<bean id="accountAction" class="com.le.web.AccountAction" scope="prototype">
<property name="accountService" ref="accountService"/>
</bean>
<!--service-->
<bean id="accountService" class="com.le.service.AccountServiceImpl">
<property name="accountDao" ref="accountDao"/>
</bean>
<!--dao-->
<bean id="accountDao" class="com.le.dao.AccountDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>

我有话说

看完三大框架后,我有点想法

Spring相当于管理者,Struts和Hibernate这则相当于员工

Spring虽然没有具体的实现底层的方法,但是Struts和Hibernate有啊

于是Spring就通过招入Struts和Hibernate,负责帮它管理项目

负责Domain层的Hibernate

先从Hibernate说起,它的作用负责从数据库取出数据,并封装成对象供Spring和Struts使用。

负责web层的Struts

Struts是Spring的助理,负责帮Spring处理接收请求。

简化最后的Spring的工作,封装接收的参数为对象。

负责Service和Dao层的Spring

Spring手段众多,能运用控制反转和依赖注入等手段,处理服务层和使用底层数据的操作。

将连接池和模板交给Spring管理,配置文件配置Bean,使用jdbcTemplate注解插入数据。

Aop手段则是帮它处理一些特殊需求,添加些特殊服务。

JDBC手段能够更好的操作数据,增删改查。

最后附上我的项目结构图

自动根据名称注入信息(导入struts2-spring-plugin-2.5.16.jar后)

action中的class自动注入

spring整合web(开启自动注入,跳过这步骤)

ServletContext相当于Web应用上下文

ServletContext官方叫servlet上下文。

服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。

这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。

所以叫全局应用程序共享对象。

作用

  1. 是一个域对象
  2. 可以读取全局配置参数
  3. 可以搜索当前工程目录下面的资源文件
  4. 可以获取当前工程名字(了解)

WebApplicationContext相当于是Spring的工厂

struts2-spring-plugin-2.5.16.jar

是为了开启常量,将default.properties中struts.objectFactory.spring.autoWire=name后的语句生效

聊聊SSH框架的更多相关文章

  1. 简化SSH框架的整合

    一.开发环境: (1)    OS:Windows 7 (2)    DB:MySql 5.1.6 (3)    JDK:1.8.0_17 (4)    Server:Apache Tomcat 8. ...

  2. SSH框架整合

    SSH框架整合 一.原理图 action:(struts2) 1.获取表单的数据 2.表单的验证,例如非空验证,email验证等 3.调用service,并把数据传递给service Service: ...

  3. 基于SSH框架的网上商城的质量属性

    常见质量属性 1.性能 性能就是一个东西有多快,通常指响应时间或延迟. 响应时间:从发出请求到收到响应所用的时间,比如用户点击网页中的超链接或桌面应用程序中的按钮 延迟:消息从A点到B点,通过你的系统 ...

  4. 【Java EE 学习 69 中】【数据采集系统第一天】【SSH框架搭建】

    经过23天的艰苦斗争,终于搞定了数据采集系统~徐培成老师很厉害啊,明明只是用了10天就搞定的项目我却做了23天,还是模仿的...呵呵,算了,总之最后总算是完成了,现在该好好整理该项目了. 第一天的内容 ...

  5. 基于SSH框架的学生公寓管理系统的质量属性

    系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...

  6. 对于SSH框架的选择

    选择框架:SSH 对于Web开发来说,SSH框架可以提高开发效率,还可以方便需求的变更以及对后期维护方面更容易操作.SSH也是目前稍微流行的Web开发框架. 选择框架描述: 首先说明一下SSH并不是一 ...

  7. struts2+spring+hibernate(SSH)框架的搭建和总结

    SSH框架:struts2+spring+hibernate,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. struts2+spring+hibernat ...

  8. java ssh 框架下 利用junit4 spring-test进行单元测试

    ssh框架下  由于bean实列 都交给spring 管理,要做单元测试就比较苦难,junit4 引入注解方便很多: 1. 加入依赖包 使用Spring的测试框架需要加入以下依赖包: JUnit 4 ...

  9. SSH框架简化

    通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: 1.运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tom ...

随机推荐

  1. android AlertDialog控件使用

    1.先创建activity_alert_dialog.xml <?xml version="1.0" encoding="utf-8"?> < ...

  2. 如何使用jenkins部署maven父子工程

    最近使用jenkins自动部署项目时遇到一个问题,如果部署单个的maven工程,没有什么问题, 但是在部署maven创建的父子工程,如果只从svn或者git上拉取子工程源码时,会报找不到父 工程pom ...

  3. vs2017 官方下载地址 和 官方建立脱机安装包的方法

    vs2017 官方下载地址: https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes VS2017 官方建 ...

  4. Docker安装与部署

    安装Docker: 查看你当前的内核版本: uname -r 更新yum包: sudo yum update 卸载旧版本(如果安装过旧版本的话): sudo yum remove docker doc ...

  5. Android笔记(四十四) Android中的数据存储——SQLite(六)整合

    实现注册.登录.注销账户 MainActivity.java package cn.lixyz.activity; import android.app.Activity; import androi ...

  6. 学习python的日常5

    形如__xxx__的变量或者函数名,在python中是有特殊用途的,例如__slots__是为了绑定属性的名称, __len()__方法是为了让class作用于len()函数,很多这样的函数都可以帮忙 ...

  7. Java8新特性Function、BiFunction使用

    闲话不多说,直接看代码,注释都写的很清楚了. package com; import java.util.function.BiFunction; import java.util.function. ...

  8. qemu-kvm虚拟化——内存

    dsqw

  9. 云计算第二阶段shell脚本

    pstree               #查看进程树 cat /etc/shells       #查看系统安装的所有shell解释器 yum -y install ksh             ...

  10. 走迷宫(bfs, 最短路)

    Input 10 10 #S######.# ......#..# .#.##.##.# .#........ ##.##.#### ....#....# .#######.# ....#..... ...