SSH 解说

来自:http://www.67tgb.com/?p=375

Struts

  Struts属于MVC框架,主要提供了Control层的解决方案。在struts中,主要了解struts工作流程,如下图所示

  这个工作流程非常类似我们去邮局寄信这一活动

  简单来说客户端发过来的请求,也就是信件。会首先到达Struts的核心的ActionServlet,这个Servlet就像邮局一样,分析信件地址(URL),根据这个地址去自己的通讯录(Struts-config.xml)中找到某个辖区的邮递员(Action)后,将信件分发(Dispatch)给邮递员Action,Action会将信件送达后(Model层处理完之后),将成功或者失败的信息告知邮局ActionServlet,邮局会根据相应的信息forward到不同回执信息通知客户。

  可以说struts的核心就是提供了一个功能完善的邮局系统,我们要做的主要工作就是:

    1. 配置好struts-config.xml ,让邮局ActionServlet知道有哪些邮递员Action在工作,能够处理那些Url请求 。这些请求处理完成后,应该forward到哪一个页面

    2. 编写Action ,就好像你需要雇佣邮递员来完成信件的处理,调用不同的Model来完成业务

    3. 编写ActionForm ,这个就是信纸了,用来承载客户输入的信息。

  在这里我们很容易看出Struts解决了一个很重的问题那就是请求的统一调度

 

Hibernate

  Hibernate相对struts就复杂了一些,他完成的主要功能是完成ORM(Object/Relationship Mapping) 对象关系映射功能。

  啥是ORM呢,我们都知道目前的软件开发大都是采用面向对象的开发方式,采用关系数据库来存储数据。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中, 关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统出现啦,它一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

  Hibernate解决了什么问题呢,简单的说,让我们通过操纵业务实体对象,完成对数据库记录的增删改查。

  没有ORM这个概念之前,我们的DAL层都是这样处理的:将业务实体对象中的数据一项一项,像剥衣服一样取出来,这个过程叫拆箱。然后拼装成SQL语句,交给ODBC或者JDBC去执行。

  现在呢,这个拆箱过程不用我们来做了,SQL语句也不用我们来拼写了,Hibernate保证给它一个活蹦乱跳(transient状态)的对象,还你一条静悄儿悄(Persistent状态)的数据库记录,只需专注业务的开发即可。附图

图 Hibernate中对象的三种状态

  更为神奇的是,Hibernate居然会说方言,无论是Mysql,Oracle,还是DB2 都能很好的交流。

  Hibernate最大的特性就是通过大量的配置,提高了灵活性。但是凡事有利必有弊,太灵活了会让人无所适从。

  光是主键生成策略就有七八种方案有木有;

  集合属性可以用List,可以用Set,还可以用Bag 有木有;

  复合主键可以在hbm文件里配置,也可以自定义CustomerType有木有啊;

  一个继承关系可以生成一张表,也可以生成两张表,还可以生成三张表,你不怕超生啊!

  什么情况下那种方案最好,效率最高,有何区别,不用费脑细胞想想啊

  尼玛头发都快掉没了有木有……

  面对xml文档的过度泛滥,人们不得不提出了“约定优于配置”的建议,也就是使用规则,让Hibernate的可以通过模糊匹配读取配置文件,来减少配置量,当然还有其他减少配置的方法。

  Hibernate核心在于配置,需要多加实践,积累项目经验,才能快速确定最优配置。上面的问题其实都有答案的……

Spring

  Spring是春天的意思,万物复苏,该框架的命名也是源于此意(个人YY哈),主要负责对象的创建,声明式服务管理。

  Spring的两大特性:IOC (Inversion of Control)控制反转和 AOP(Aspect oriented programming)面向切面编程

  1. IOC

  所谓控制反转是介个意思:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。

  简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,就是所谓的反转。

  反转的好处在哪里呢?解耦 !还记得我们用工厂来封装对象的创建吗,原理是一样的,Spring的核心其实就是工厂,将对象创建完成后,通过类的构造函数或者setter()注入给你。

  2. AOP

  面向切面的编程可以说是OO编程的补充,在编码过程中,人们逐渐发现一些共性的服务可以抽取出来,比如日志记录,安全控制等等,这些方法遍布程序的各个角落,与业务逻辑代码并没有关系,Don’t Repeat Yourself ,于是提出了一种切面式的编程方法。将这些行为分离。如图

  GOF中有一种设计模式是代理模式,代理模式可以为其他对象提供一种代理以控制对这个对象的访问。而AOP的实现则是使用了类似的思路。

  主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。

  下面这张图总结了SSH框架在J2EE三层架构中的分布情况,接下来我们将会通过一个项目来实践一下SSH框架的应用。

总结:

  SSH属于框架,属于工具,使用它们来提高开发效率,提高软件产品的可维护性、可扩展性乃至敏捷性。好吧,这句万金油的话,或许用到任何技术上都能成立,但是只有你亲自实践过才能有深刻的体会。SSH里面有很多优秀的设计理念及模式应用,这才是要学习的核心。不久的一天你要能够自己开发框架……

资源下载链接为: https://pan.quark.cn/s/5c50e6120579 在Android移动应用开发中,定位功能扮演着极为关键的角色,尤其是在提供导航、本地搜索等服务时,它能够帮助应用获取用户的位置信息。以“baiduGPS.rar”为例,这是一个基于百度地图API实现定位功能的示例项目,旨在展示如何在Android应用中集成百度地图的GPS定位服务。以下是对该技术的详细阐述。 百度地图API简介 百度地图API是由百度提供的一系列开放接口,开发者可以利用这些接口将百度地图的功能集成到自己的应用中,涵盖地图展示、定位、路径规划等多个方面。借助它,开发者能够开发出满足不同业务需求的定制化地图应用。 Android定位方式 Android系统支持多种定位方式,包括GPS(全球定位系统)和网络定位(通过Wi-Fi及移动网络)。开发者可以根据应用的具体需求选择合适的定位方法。在本示例中,主要采用GPS实现高精度定位。 权限声明 在Android应用中使用定位功能前,必须在Manifest.xml文件中声明相关权限。例如,添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />,以获取用户的精确位置信息。 百度地图SDK初始化 集成百度地图API时,需要在应用启动时初始化地图SDK。通常在Application类或Activity的onCreate()方法中调用BMapManager.init(),并设置回调监听器以处理初始化结果。 MapView的创建 在布局文件中添加MapView组件,它是地图显示的基础。通过设置其属性(如mapType、zoomLevel等),可以控制地图的显示效果。 定位服务的管理 使用百度地图API的LocationClient类来管理定位服务
资源下载链接为: https://pan.quark.cn/s/dab15056c6a5 Oracle Instant Client是一款轻量级的Oracle数据库连接工具,能够在不安装完整Oracle客户端软件的情况下,为用户提供访问Oracle数据库的能力。以“instantclient-basic-nt-12.1.0.1.0.zip”为例,它是针对Windows(NT)平台的Instant Client基本版本,版本号为12.1.0.1.0,包含连接Oracle数据库所需的基本组件。 Oracle Instant Client主要面向开发人员和系统管理员,适用于数据库查询、应用程序调试、数据迁移等工作。它支持运行SQL*Plus、PL/SQL Developer等管理工具,还能作为ODBC和JDBC驱动的基础,让非Oracle应用连接到Oracle数据库。 安装并解压“instantclient_12_1”后,为了使PL/SQL Developer等应用程序能够使用该客户端,需要进行环境变量配置。设置ORACLE_HOME指向Instant Client的安装目录,如“C:\instantclient_12_1”。添加TNS_ADMIN环境变量,用于存放网络配置文件(如tnsnames.ora)。将Instant Client的bin目录添加到PATH环境变量中,以便系统能够找到oci.dll等关键动态链接库。 oci.dll是OCI(Oracle Call Interface)库的重要组成部分。OCI是Oracle提供的C语言接口,允许开发者直接与数据库交互,执行SQL语句、处理结果集和管理事务等功能。确保系统能够找到oci.dll是连接数据库的关键。 tnsnames.ora是Oracle的网络配置文件,用于定义数据库服务名与网络连接参数的映射关系,包括服务器地址
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值