本准备完成教师云管理平台的html页面,无奈学期末了,各种结课设计来了。。
结课设计准备用SSM边学边做的,但是老师说只能用SSH框架做,因为教材教的SSH(这啥逻辑啊,难受 ),然后这段时间看视频,看书,啃了下SSH框架,学的不是很深,有些理解可能是错误的,但是这个小系统理解和完成没有很大问题。(因为书上有代码,哈哈哈哈哈哈哈哈哈)
下面开始总结下这几天的学习和个人理解(如有不对,欢迎前辈指出)
SSH简介
- Struts2:用于表示层,在结构中相当于原生代码里面的Servlet,主要原理是使用了过滤器得到访问url,解析url。
- Spring:用于业务逻辑层(
或者说全局?),通过ioc(控制反转)的方式和di操作,进行类的创建。 - Hibernate:用于数据访问层,是一个orm(对象关系映射)的框架,对JDBC进行了简单封装。
Struts2:

例如:
首先,Struts2先通过过滤器,获得url中的地址,确定是进入的add界面,再去寻找add的classValue值
<action name="add" class="addAction">
<result name="SUCCESS" type="redirect">query</result>
</action>
找到class文件,然后开始执行execute()方法:
public class AddAction {
private CustomService customService; // 业务逻辑组件
public void setCustomService(CustomService customService) {
this.customService = customService;
}
private Custom newcustom;// 新用户
public Custom getNewcustom() {
return newcustom;
}
public void setNewcustom(Custom newcustom) {
this.newcustom = newcustom;
}
public CustomService getCustomService() {
return customService;
}
public String execute() {
// 将接收到的参数设置到Custom实例custom中
Custom custom=new Custom();
custom.setName(newcustom.getName());
custom.setPassword(newcustom.getPassword());
custom.setMobile(newcustom.getMobile());
custom.setEmail(newcustom.getEmail());
customService.saveCustom(custom); // 保存接收到的参数到数据库中
return "SUCCESS";
}
}
逻辑执行完后,返回"SUCCESS",然后重定向(type=“redirect”)到query。
Struts2 需要的jar包(2.3.24):
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.24</version>
</dependency>
`<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24.1</version>
</dependency>``
Spring:

主要就是ioc(控制反转)和di(依赖注入),思想是AOP(面向切面),作用是让原生的代码做到高内聚,低耦合。
ioc(控制反转):将传统的new对象转换为通过xml文件来控制
di(依赖注入):通过property标签中的name值注入ref对象,或者value值
<bean id="customService" class="com.ssh.service.CustomServiceImpl">
<property name="customDAO" ref="customDAO"></property>
</bean>
<bean id="loginAction" class="com.ssh.action.LoginAction">
<property name="customService" ref="customService"></property>
</bean>
第一个 id是customService,class是CustomServiceImpl,它是service的实现类,需要new Dao中的某个对象,这个new对象的过程,托管给Spring,然后通过property标签,给name为customDAO注入一个对象,注入对象的方式是通过ref标签,它指向另外的是一个< bean >,这种方式需要先给customDAO类一个set方法,才能注入。
private CustomDAO customDAO;
public CustomDAO getCustomDAO() {
return customDAO;
}
public void setCustomDAO(CustomDAO customDAO) {
this.customDAO = customDAO;
}
新建对象的方法不再是new它具体的类了。后期更改代码的时候,可以直接修改xml配置信息,而不是在每一个调用过它的类中重新更改,降低了类之间的耦合度。
同理,在action中,调用Service层的方法,也是一样的道理。将对象名为loginAction注入customService对象。
Spring需要的jar包(4.2.4):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-instrument</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
Hibernate:

Hibernate主要是用orm,既对象关系映射关系,实体类中的每一个成员与数据库中的每一个字段对应起来,通过xxx.hbm.xml配置文件映射,而且Hibernate是对JDBC进行了简单封装,减短了Dao层代码的编写。
它的执行需要核心配置文件hibernate.cfg.xml来配置JDBC连接数据库时需要的参数(驱动类,URL,USERNAME,passwrod等),加上方言设置(如mysql和Oracle的某些字段的使用方法不同,不同的字段就称为方言),还有对实体类映射文件xxx.hbm.xml解析,这个参数可以通过Spring进行集成,将其中的字段托管给Spring进行控制(ioc+di)
配置SessionFactory
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- 配置Hibernate的属性 -->
<property name="hibernateProperties">
<props>
<!-- 配置数据库方言 -->
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<!--输出运行时生成的SQL语句 -->
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<!-- 指定HIbernate映射文件的路径 -->
<property name="mappingResources">
<list>
<value>com/ssh/entity/Custom.hbm.xml</value>
</list>
</property>
</bean>
配置dataSource
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 配置数据库JDBC驱动 -->
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 配置数据库连接URL -->
<property name="url" value="jdbc:mysql://localhost:3306/ssh_demo?serverTimezone=GMT%2B8;useUnicode=true&characterEncoding=utf8"></property>
<!-- 配置数据库用户名 -->
<property name="username">
<value>root</value>
</property>
<!-- 配置数据库密码 -->
<property name="password">
<value>98629</value>
</property>
</bean>
Hibernate需要的jar包(4.1.7):
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.7.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
由于Hibernate是对数据库操作,还需要对数据库操作的jar包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
执行流程

212

被折叠的 条评论
为什么被折叠?



