一、SSH概念
SSH是 struts(springmvc)+spring+hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架。
SSH有多个框架集成,紧密地结合在一起,用于构建灵活、易于扩展的多层Web应用程序。包括:表示控制层框架(mvc层框架:struts或springmvc)、业务层框架(spring)、持久层框架(hibernate)
二、框架图(太懒,网上抓的图)
三、表示控制层框架(springmvc)
包括:模型(mode)、视图(view)、控制器(controller)
(1)模型Model:视图提交的数据、返回给视图的数据。
视图提交的数据一般用我们自定义的对象来接收,例如要接收登录视图的用户名、密码登录数据,可以定义个登录model类,如下:
publicclass AccountLoginModel
{
private Stringusername;
private Stringpassword;
publicvoid setUsername(String username){
this.username=username;
}
publicvoid setPassword(String password){
this.password=password;
}
public String getUsername(){
returnthis.username;
}
public String getPassword(){
returnthis.password;
}
}
返回给视图数据model:框架自带的Model类,通过设置属性,返回model对象给视图,如下:
model.addAttribute("username", “张三”);
model.addAttribute("password", “123”);
返回model对象会有框架自动注入到视图中
(2)视图view:jsp页面
(3)控制器controller: action 、servlet等负责拦截用户请求,通过调用Model来实现处理用户请求的功能。
配置文件:在web.xml中配置总控制器,并指明springmvc的配置文件,如下:
<servlet>
<servlet-name>SpringMVC1Demo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springservlet-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC1Demo</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2、业务逻辑层框架(spring)
(1)业务逻辑类:用于处理业务逻辑。
(2)同持久层关联:管理同数据库的session、管理数据库事务。
配置文件:在web.xml中配置,指明spring的配置文件,如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:springcontext-config.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
3、持久化层(hibernate)
Hibernate是一个对象关系映射框架,它对JDBC进行了轻量级的封装,使得我们使用面向对象的思想操作关系型数据库。
(1) dao对象通过配置文件获取SessionFactory
(2) 通过SessionFactory,获取一个session,session其实就是同数据库的一个链接会话。
(3) 通过session可以把实体对象操作到数据库。
(4) 实体对象同数据库表,有一个映射关系,通过配置文件指明映射关系。
配置文件:spring同一个配置文件:配置文件的加载、javabean的创建、生命周期是由spring框架来管理和实现。通过配置文件把业务逻辑层同持久化层紧密联系起来。
配置文件几个关键点:
(1)配置数据源:
<beanid="dataSource"class="org.logicalcobwebs.proxool.ProxoolDataSource">
<propertyname="alias"value="proxoolDataSource"/>
<propertyname="driver"value="${connection.driver_class}"/>
<propertyname="driverUrl"value="${connection.url}" />
<propertyname="user"value="${connection.username}"/>
<propertyname="password"value="${connection.password}"/>
<property name="statistics"value="${proxool.statistics}"/>
<propertyname="maximumConnectionCount"value="${proxool.maximum.connection.count}"/>
<propertyname="minimumConnectionCount"value="${proxool.minimum.connection.count}"/>
<propertyname="simultaneousBuildThrottle"value="${proxool.simultaneous.build.throttle}"/>
</bean>
(2)配置SessionFactory:并指明实体、数据库表的映射文件
<beanid="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<propertyname="dataSource"ref="dataSource"/>
<propertyname="mappingDirectoryLocations">
<list>
<value>classpath:com/demo/model/mapping/</value>
</list>
</property>
</bean>
(3)配置事务
<bean id="h4TManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
4、SSH业务流程
mvc层的视图发出URL请求->mvc层控制器->控制器通过model获取请求参数
->mvc层控制器调用spring层的业务逻辑sevice类->service调用持久化层的DAO->实现数据库的事务操作-》获取的数据封装到mvc层的mod