`
zengbo0710
  • 浏览: 414860 次
社区版块
存档分类
最新评论

SSH系列(一)--三者的融合(天下本是分久必合!!)

阅读更多
最近打算把SSH架构好好缕缕(以前断断续续学过和使用过一些),因为现在SSH(Struts+Spring +Hibernate)架构可以说是开发Web项目的一种轻量级的很好的解决方案,也比较成熟了,实际上在这三者(三个开源项目),Struts还是处理 前端的运用,Hibernate处理持久化工资,而Spring像个联合剂,它通过其applicationContext.xml配置文件,根据Ioc 模式将前两者需要的类实例化并提供给需要的地方(就是提供bean),当然其还可以在配置文件中提供声明性事物处理,可以极大地节约代码 (Hibernate可不可以了??)。下面来详细的说明一下:
      我们先看看SS的结合,其结合点在于将StrutsAction的实例生成不再由Struts自己负责,而交于Spring容器去管理,需要修改的地方是首先在Struts的配置文件上用plug-in加上Spring的配置文件applicationContext.xml,然后在在action的配置地方的type属性统统设为org.springframework.web.struts.DelegatingActionProxy,这样Action的具体实现就有Spring去负责了,在Spring的配置文件中把相应的Action设为bean,交由Spring容 器去处理。在这个地方有一个要注意的问题,就是为了使Struts的配置文件方便找到Spring的配置文件,我们把 applicationContext.xml放在WEB-INF下,而不是放在classpath下面了,这样如果在程序中要显示调用 ApplicationContext对象,就不能直接实例化它了,我们可以通过web context来取得它,具体做法是在web.xml中可以加一个Listener或是Servlet的声明(两者取一就可),Web容器会自动加载/WEB-INF/applicationContext.xml初始化ApplicationContext实例,配置完成之后,即可通过WebApplicationContextUtils.getWebApplicationContext
方法在Web应用中获取ApplicationContext引用。
    而对于Spring和Hibernate的结合点在于关于Hibernate的SessionFactory的配置交于了Spring,即我们可以不要 hibernate.cfg.xml,而将sessionFactory的配置作为bean来交给Spring的配置文件,当然在这里 SessionFactory的Class用 org.springframework.orm.hibernate3.LocalSessionFactoryBean,关于数据库的登陆信息可以单 独作为一个bean,如dataSource,然后在sessionFactory中引用。Spring对Hibernate提供大量的封装好的类,如 HibernateDaoSupport,这样我们在使用是甚至不用先生成SessionFactory,再生成Session等等操作,Spring都 提供了封装;还有很重要的一点就是在事物维持上,用Spring的声明性事物会更简单容易些,也更灵活。
    以上简要的分析了以下三者整合的一些结合点和具体的使用方法。
     另外今天在看《深入简出Hibernate》 一书时,对于其前面提到的一些设计模式感觉上还是有不少共鸣的,如DAO模式,它可分成 Domain Object和Data Accessor两种模式的结合,Domain Object实际上就是我们在实际项目业务中所提炼出的一些POJO,而对于Data Accessor是对POJO的操作,前者实现了业务数据的对象化封装,后者是实现了数据访问和业务逻辑的分离,都是很好的解耦方法。另外对于 Proxy,Decorator,Dynamic Proxy模式也分析的比较好,下次再就它们写些心得(Dynamic Proxy还没理解透!!)
 

分享到:
评论

相关推荐

    ssh-copy-id 脚本

    问题:ssh-copy-id 命令无法使用,在linux服务器的ssh服务中没有有这个命令,可以在/usr/bin/的这文件夹中查看没有这个ssh-copy-id 命令。 问题分析:是由于ssh服务的问题,可以直接将ssh-copy-id 命令拷贝/usr/...

    x11-ssh-askpass-1.2.4.1.tar.gz

    标题中的"x11-ssh-askpass-1.2.4.1.tar.gz"是一个开源软件包,主要用于在没有图形界面的远程服务器上提供SSH密码输入功能。这个软件包是X11 SSH Askpass的1.2.4.1版本,它是一个用于SSH连接的安全凭证助手,特别适用...

    ssh-copy-id for windows

    ssh-copy-id for windows,支持windows下的ssh-copy-id命令,加入exe所在路径到PATH环境变量即可

    ssh-tectia-client 6.3.2

    SSH-Tectia Client 6.3.2是一款专为Windows用户设计的安全外壳(SSH)连接工具,它在IT行业中被广泛认可为最佳的SSH客户端之一。这款软件的主要功能是提供安全、可靠的远程连接到Linux或其他支持SSH协议的系统,允许...

    免密登录必备ssh-copy-id脚本

    免密登录必备ssh-copy-id脚本

    ssh-copy-id命令 复制公钥到远程主机

    ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。 语法格式:ssh-copy-id ...

    openssh-centos7-9.5p1-ssh-copy-id-rpm.tgz

    适用于centos 7 redhat 7 x86架构操作系统使用的openssh 9.5 p1 二进制rpm包 带有ssh-copy-id命令,2023年10月4日发布,当前最新版本,修复安全漏洞,更新升级openssh版本

    openssh-9.7p1-1.el7.x86-64-ssh-copy-id.tgz

    2024年3月12日制作 适用于centos 7 redhat 7 x86架构操作系统升级更新openssh 9.7 版本,修复...此包为二进制rpm包,包含ssh-copy-id命令 2024年3月11日 官方发布9.7版本,此包基于官方源码制作,无ssl信息显示。

    openssh-9.7p1-1.el7.x86-64-ssh-copy-id-openssl.tgz

    2024年3月12日制作 适用于centos 7 redhat 7 x86架构的二进制...2024年3月11日官方发布9.7版本,内含ssh-copy-id命令,安装后显示openssl版本,此包基于openssl 1.1.1w制作,因此安装后会显示1.1.1w版本的openssl信息

    ssh-copy-id.exe

    ssh-copy-id for Windows版

    j2ssh-0.2.9-src.zip

    j2ssh-0.2.9-src.zip是一个包含SSH(Secure Shell)客户端实现的源代码包,主要提供了sshclient和sftpclient两个组件。SSH是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。它通过加密技术确保了...

    ssh-copy-id-for-OSX, 快速macosx端口有用的unix实用程序ssh副本 id.zip

    ssh-copy-id-for-OSX, 快速macosx端口有用的unix实用程序ssh副本 id 用于OSX的 ssh-copy-id实用的unix实用工具 ssh-copy-id的快速端口注意:现在,macOS Sierra在 /usr/bin 中包括一个板载的ssh-copy-id安装git ...

    极路由刷老毛子固件或openwrt固件-自动开启ssh工具,全系列通用

    极路由是一款智能路由器,其原始固件可能无法满足一些高级用户的需求,因此用户会选择刷入第三方固件来扩展功能。"老毛子固件"通常指的是OpenWrt,这是一个开源的嵌入式操作系统,被广泛用于各种路由器设备,以提供...

    jmeter-ssh-sampler-master.zip

    而SSH(Secure Shell)Sampler是JMeter的一个扩展,允许用户通过SSH协议与远程Linux服务器进行交互,进行命令执行、文件操作等一系列操作,极大地拓展了JMeter的功能领域。在"jmeter-ssh-sampler-master.zip"这个...

    centos7.x-ssh9.3p1-ssl1.1.1u一键升级脚本

    centos7.x_ssh9.3p1_ssl1.1.1u升级脚本, 特点: 1、同时升级openssh与openssl,采用rpm包形式,一键快速升级版本,无需每台单独再次进行编译, 2、隐藏openssh-版本号 3、保留scp与ssh-copy-id命令 安装: 执行 ...

    openssh-9.6p1-1.el7.src-ssh-copy-id-openssl-1.1.1w.rpm

    适用于centos 7 redhat 7 制作openssh 9.6 rpm二进制包的源码包 基于openssl 1.1.1w 内含ssh-copy-id命令 2024年1月5日制作

    PyPI 官网下载 | ssh-import-id-3.8.tar.gz

    《PyPI官网下载 | ssh-import-id-3.8.tar.gz:深入理解SSH与Python库ssh-import-id》 在IT行业中,安全高效的远程访问是至关重要的,而SSH(Secure Shell)正是实现这一目标的重要工具。SSH提供了一种加密的网络...

    Laravel开发-laravel-ssh-tunnel-fixed

    在本文中,我们将深入探讨如何使用Laravel框架与`laravel-ssh-tunnel-fixed`工具来轻松地创建和维护SSH隧道。Laravel是PHP中一个非常流行的、功能强大的Web应用程序框架,它为开发者提供了丰富的功能和优雅的语法,...

    j2ssh-core-0.2.2.jar

    SSHTools是一组Java SSH应用程序。包括:Java SSH API, SSH Terminal, SSH secured VNC客户端, SFTP客户端和SSH Daemon。ESftp是根据此项目开发的一个Eclipse插件主要用来在Eclipse开发平台与Sftp服务器之间传输文件...

    j2ssh-core-0.2.9.jar

    j2ssh-core-0.2.9.jar,欢迎下载

Global site tag (gtag.js) - Google Analytics