首页 > 作文

搭建ssh框架的基本步骤(ssh框架整合实战教程)

更新时间:2023-04-05 06:03:35 阅读: 评论:0

ssh不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种web应用程序开源集成框架,用于构建灵活、易于扩展的多层web应用程序。

集成ssh框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的web应用程序。其中使用struts作为系统的整体基础架构,负责mvc的分离,在struts框架的模型部分,控制业务跳转,利用hibernate框架对持久层提供支持,spring做管理,管理struts和hibernate。

ssh框架的系统是基于mvc的。struts 是一个很好的mvc框架,主要技术是rvlet和jsp。struts的mvc设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明。基于struts开发可以简化开发难度,提高开发效率。

spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。

hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。hibernate对jdbc进行了非常轻量级的封装,它使得与关系型数据库打交道变得非常轻松。

在struts+spring+hibernate系统中,对象之间的调用流程如下:

struts——>spring——>hibernate

jsp——>action——>rvice——>dao——>hibernate

比如:

1.spring的配置文件bean.xml

<?xml version=”1.0″encoding=”utf-8″?>

<beans

xmlns=”http://www.springframework.org/schema/beans”

xsi:schemalocation=”http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd”

xmlns:tx=”http://www.spr蜂蜜蛋糕的做法大全ingframework.org/schema/tx”>

<bean id=”datasource”

class=”com.mchange.v2.c3p0.combopooleddatasource” destroy-method=”clo”>

<property name=”jdbcurl”

value=”jdbc:mysql://localhost:3306/samblog?uunicode=true&characterencoding=utf-8&autoreconnect=true”>

</property>

<property name=”ur” value=”root”></property>

<property name=”password” value=”123456″></property>

<property name=”driverclass” value=”org.gjt.mm.mysql.driver”/>

</bean>

<bean id=”ssionfactory”

class=”org.springframework.orm.hibernate5.localssionfactorybean”>

<property name=”datasource”>

<ref bean=”datasource”/>

</property>

<property name=”hibernateproperties”>

<value>

hibernate.dialect=org.hibernate.dialect.mysql5dialect

hibernate.hbm2ddl.auto=update

hibernate.show_sql=fal

hibernate.format_sql=fal

</value>

</property>

<property name=”mappingresources”>

<list>

<value>site/sambloger/domain/urs.hbm.xml</value>

<value>site/sambloger/domain/blog.hbm.xml</value>

<value>site/sambloger/domain/category.hbm.xml</value>

<value>site/sambloger/domain/comment.hbm.xml</value>

</list>

</property>

</bean>

<bean id=”transactionmanager”

class=”org.springframework.orm.hibernate5.hibernatetransactionmanager”>

<property name=”ssionfactory” ref=”ssionfactory”/>

</bean>

<tx:annotation-driven transaction-manager=”transactionmanager”/>

<!– 配置blog spring进行管理 服务层直接调用实现与数据库的crud–>

<bean id=”blogdao” class=”site.sambloger.dao.impl.blogdaoimpl”>

<property name=”ssionfactory” ref=”ssionfactory”/>

</bean>

<bean id=”blogrvice” class=”site.sambloger.rvice.impl.blogrviceimpl” scope=”p成语aabcrototype”>

<property name=”blogdao” ref=”blogdao”/>

</bean>

<bean id=”blogaction” class=”site.sambloger.action.blogaction”>

<property name=”blogrvice” ref=”blogrvice”/>

<property name=”commentrvice” ref=”commentrvice”/>

</bean>

<!– 配置comment–>

<bean id=”commentdao” class=”site.sambloger.dao.impl.commentdaoimpl”>

<property name=”ssionfactory” ref=”ssionfactory”/>

</bean>

<bean id=”commentrvice” class=”site.sambloger.rvice.impl.commentrviceimpl” scope=”prototype”>

<property name=”commentdao” ref=”commentdao”/>

</bean>

<bean id=”commentaction” class=”site.sambloger.action.commentaction”>

<property name=”commentrvice” ref=”commentrvice”/>

<property name=”blogrvice” ref=”blogrvice”/>

</bean>

<!– 配置urs–>

<bean id=”ursdao” class=”site.sambloger.dao.impl.ursdaoimpl”>

<property name=”ssionfactory” ref=”ssionfactory”></property>

</bean>

<bean id=”ursrvice” class=”site.sambloger.rvice.impl.ursrviceimpl” scope=”prototype”>

<property name=”ursdao” ref=”ursdao”/>

</bean>

<bean id=”ursaction” class=”site.sambloger.action.ursaction”>

<property name=”urrvice” ref=”ursrvice”></property>

</bean>

</beans>

2.struts的配置文件 struts.xml

<?xml version=”1.0″encoding=”utf-8″ ?>

<!doctype struts public”-//apache software foundation//dtd struts configuration2.1//en” “http://struts.apache.org/dtds/struts-2.1.dtd”>

<struts>

<package name=”samblog” extends=”struts-default” namespace=”/”>

<action name=”init” class=”blogaction” method=”init”>

<result name=”success”>/bloglist.jsp</result>

</action>

<action name=”getblog” class=”blogaction” method=”getblog”>

<result name=”success”>/displayblog.jsp</result>

</action>

<action name=”getallnote” class=”blogaction” method=”getallnote”>

<result name=”success”>/notelist.jsp</result>

</action>

&九月去哪里旅游最好lt;action name=”addcomment” class=”commentaction” method=”addcomment”>

<result name=”success” type=”redirect”>/getblog</result>

</action>

</package>

</struts>

3.hibernate其中的一个配置文件:

<?xml version=”1.0″encoding=”utf-8″?>

<!doctypehibernate-mapping public “-//hibernate/hibernate mapping dtd3.0//en””http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd”>

<!–

mappingfile autogenerated by myeclip persistence tools–>

<hibernate-mapping>

<class name=”site.sambloger.domain.blog” table=”blog”>

<!–id标签表示映射到数据库中是作为主键其他property表示普通键–>

<id name=”id” type=”java.lang.integer”>

<column name=”id” />

<generator class=”increment” />

</id>

<!–该标签加n方 会有一个字段叫category_id作为外键参照1(category)的主键字段 并且用来存储这个主键的信息–>

<many-to-one name=”category” class=”site.sambloger.domain.category” lazy=”fal” cascade=”all”>

<column name=”category_id” not-null=”true” />

</many-to-one>

<property name=”title” type=”java.lang.string”>

<column name=”title” length=”400″ not-null=”true” />

</property>

<property name=”content” type=”java.lang.string”>

<column name=”content” length=”4000″ not-null=”true” />

</property>

<property name=”createdtime” type=”java.util.date”>

<column name=”created_time” length=”10″ not-null=”true” />

</property>

<!–在一对多的关联中,在一的一方(blog)设置inver=”true”让多的一方来维护关联关系更有助于优化,因为可以减少执行update语句–>

<t name=”comments” inver=”true”>

<key>

<column name=”blog_id” not-null=”true” />

</key>

<one-to-many class=”site.sambloger.domain.comment” />

&三门峡日报电子版lt;/t>

</class>

</hibernate-mapping>

spring框架的作用和好处:

spring框架提供了一个容器,该容器可以管理应用程序的组件,还提供了ioc和aop机制,实现组件之间解耦,提高程序结构的灵活性,增强系统的可维护和可扩展性。

在ssh整合开发中,利用spring管理rvice、dao等组件,利用ioc机制实现action和rvice,rvice和dao之间低耦合调用。利用aop机制实现事务管理、以及共通功能的切入等。

功能是整合,好处是解耦。

hibernate中操作并发处理(乐观锁和悲观锁)

hibernate框架可以使用锁的机制来解决操作并发。

a.悲观锁

在数据查询出来时,就给数据加一个锁,锁定。这样其他用户再执行删、改操作时不允许。当占用着事务结束,锁会自动解除。

hibernate采用的是数据库锁机制实现悲观锁控制。

缺点:将并发用户操作同步开,一个一个处理。当一个用户处理时间比较长时,效率会比较低。

b.乐观锁

允许同时更新提交,但是最快的会成功,慢的失败。

在记录中追加一个字段值,用该字段值当做版本。当最先提交者提交后,会自动将版本字段值提升,这样其他用户提交,会发现版本低于数据库记录目前版本,因此抛出异常提示失败。

特点:允许用户同时处理,但只能有一个成功,其他失败,以异常方式提示。

ssh工作流程

a.启动服务器,加载工程以及web.xml.

(实例化liner,filter等组件,将spring容器和struts2控制创建)

b.客户端发送请求,所有请求进入struts2控制器。控制器根据请求类型不同,分别处理。

(action请求,*.action会进入struts.xml寻找<action>配置.

其他请求,*.jsp会直接调用请求资源,生成响应信息)

c.struts2控制器根据<action>配置调用一个action对象处理。

整合方法一:将action交给spring容器

(action对象由struts2-spring-plugin.jar插件提供的

strutsspringobjectfactory负责去spring容器获取)

整合方法二:将action置于spring容器之外

(action对象由struts2-spring-plugin.jar插件提供的

strutsspringobjectfactory负责创建,然后到spring容器中寻找与action属性匹配的bean对象,给action对象注入。(默认采用名称匹配规则)

d.struts2控制器执行defaultstack拦截器、action对象、result等组件处理.

e.执行action的execute业务方法时,如果使用rvice田勇泉或dao采用spring的ioc机制调用。

f.执行result生成响应信息,执行后续拦截器处理

g.将响应信息输出。

本文发布于:2023-04-05 06:03:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/5a2b376841a681a30ee8977ee30e3310.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:搭建ssh框架的基本步骤(ssh框架整合实战教程).doc

本文 PDF 下载地址:搭建ssh框架的基本步骤(ssh框架整合实战教程).pdf

标签:框架   容器   对象   字段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图