sshjava,sshjava什么意思

本文目录一览:

JAVA中的SSH如何解释?

SSH 在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。 Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Java中的“SSH”是什么?

SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。

集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。

具体内容包括:

Struts

Struts对Model,View和Controller都提供了对应的组件。

ActionServlet,这个类是Struts1的核心控制器,负责拦截来自用户的请求。

Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。

Model部分:

由ActionForm和JavaBean组成,其中ActionForm用于将用户的请求参数封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。

JavaBean则封装了底层的业务逻辑,包括数据库访问等。

View部分:

该部分采用JSP(或HTML、PHP……)实现。

Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

Controller组件:

Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。

系统核心控制器,对应上边的ActionServlet。该控制器继承了HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。

业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。

Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Spring

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

目的:解决企业应用开发的复杂性

功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

范围:任何Java应用

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。

框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。

·Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

·SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。

JAVA SSH框架搭建流程

首先,明确spring,struts,hibernate在环境中各自的作用。

struts:

用来响应用户的action,对应到相应的类进行处理。需要struts对应的包。

hibernate:

用来把实体类对应到数据库。提供增删改查的基本操作实现。需要hibernate对应的包以及mysql的jdbc驱动包。

spring:

管理struts:在xml配置文件中为struts的action进行值注入。

管理hibernate:在xml配置文件中配置hibernate的配置信息(dataSource,sessionFactory),即不需要原来的hibernate的xml文件。为hibernate的dao操作注入sessionfactory属性值。

需要提供spring对应的包,除此以外,还需要提供一个整合spring与struts的包:truts2-spring-plugin-2.0.11.1.jar

下面就搭建步骤进行详细说明:

1、新建一个web project,导入包,需要的包放在文件夹sshlib中。

2、修改web.xml的配置信息,内容如下:

?xml version=”1.0″ encoding=”UTF-8″?

web-app version=”2.5″ xmlns=” “

xmlns:xsi=” “

xsi:schemaLocation=”

welcome-file-list

welcome-fileindex.jsp/welcome-file

/welcome-file-list

!– 下面的listener,是spring提供的,它会在创建时自动查找WEB-INF下的applicationContext.xml文件 ,从而创建spring容器–

listener

listener-class

org.springframework.web.context.ContextLoaderListener

/listener-class

/listener

!– 下面的配置作用是:在MyEclipse中,系统会自动到WEB-INF下寻找 applicationContext.xml文件,而系统

会自动将applicationContext.xml放置到WEB-INF下的classes下,所以会产生找不到applicationContext.xml的错误,需要指明applicationContext.xml

的放置位置。这就是下面的信息作用。在Eclipse中也许不需要此配置信息。–

context-param

param-namecontextConfigLocation/param-name

param-value

/WEB-INF/classes/applicationContext.xml

/param-value

/context-param

!– 下面的配置信息,用来配置说明使用struts过滤器 —

filter

filter-namestruts2/filter-name

filter-class

org.apache.struts2.dispatcher.FilterDispatcher

/filter-class

!–

下面的配置信息用来说明:程序中运行的action放置在哪个包下面,对于list.action的请求,它会自动在这个包下面寻找ListAction.class的类

如果没有这句话,那么所有的action请求只能在struts.xml中进行配置。

init-param

param-nameactionPackages/param-name

param-value

com.action

/param-value

/init-param

/filter

!–

下面的配置表示对于所有请求都交给struts来处理。

filter-mapping

filter-namestruts2/filter-name

url-pattern/*/url-pattern

/filter-mapping

/web-app

3、接下来用来配置struts.xml

?xml version=”1.0″ encoding=”UTF-8″ ?

!DOCTYPE struts PUBLIC

“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”

” “

struts

!– 指定Web应用的默认编码集。该属性对于处理中文请求参数非常有用,对于获取中文请求参数值,应该将该属性值设置为GBK或者GB2312 当设置该参数为GBK时,相当于调用HttpServletRequest的setCharacterEncoding方法 —

constant name=”struts.i18n.encoding” value=”utf-8″ /

constant name=”struts.devMode” value=”true” /

package name=”default” namespace=”/” extends=”struts-default”

interceptors

!– 定义拦截器 —

interceptor name=”crudInterceptor”

class=”com.action.CrudInterceptor” /

interceptor-stack name=”appStack”

interceptor-ref name=”crudInterceptor” /

!– 下面一行自带的拦截器必须加上,否则出错 —

interceptor-ref name=”defaultStack” /

/interceptor-stack

/interceptors

!– 使用默认拦截器配置Action都需要拦截器堆栈

即所有struts请求都自动先交给拦截器处理。关于拦截器的具体规则在拦截器对应类(com.action.CrudInterceptor)中进行了解释。

default-interceptor-ref name=”appStack”/default-interceptor-ref

/package

/struts

4、接下来配置applicationContext.xml:

?xml version=”1.0″ encoding=”UTF-8″?

beans xmlns=” “

xmlns:aop=” “

xmlns:xsi=” “

xsi:schemaLocation=”

!– 数据源 —

bean id=”dataSource”

class=”org.springframework.jdbc.datasource.DriverManagerDataSource”

property name=”driverClassName”

value=”org.gjt.mm.mysql.Driver” /

property name=”url” value=”jdbc:mysql://localhost:3306/user” /

property name=”username” value=”root” /

property name=”password” value=”” /

/bean

!– sessionFactory配置 —

bean id=”sessionFactory”

class=”org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”

property name=”dataSource” ref=”dataSource” /

property name=”mappingResources”

list

valuecom/ssh/User.hbm.xml/value

/list

/property

!– 定义sessionFactory的属性 —

property name=”hibernateProperties”

props

prop key=”hibernate.dialect”

org.hibernate.dialect.MySQL5InnoDBDialect

/prop

prop key=”hibernate.hbm2ddl.auto”update/prop

prop key=”hibernate.show_sql”true/prop

prop key=”hibernate.format_sql”true/prop

/props

/property

/bean

!– hibernate的类名,属性名和数据库之间的对应关系的自定义 com.ynstudio.tools.LocalNamingStrategy —

bean id=”namingStrategy”

class=”org.hibernate.cfg.ImprovedNamingStrategy”

/bean

!– 定义DAO的bean —

bean id=”userDao”

class=”com.ssh.UserDaoImpl”

property name=”sessionFactory” ref=”sessionFactory” /

/bean

!–

下面的代码用来向Action类注入属性值

bean id=”crudAction” class=”com.action.CrudAction”

property name=”userDao” ref=”userDao”/property

/bean

/beans

5、上述配置文件完成后,就开始业务逻辑部分。

首先完成hibernate的curd操作部分内容。

设计一个User实体类。包含数据库中User表的字段。

新建一个User.hbm.xml文件,实现实体类与数据库的关联。内容如下:

?xml version=”1.0″?

!DOCTYPE hibernate-mapping PUBLIC

“-//Hibernate/Hibernate Mapping DTD//EN”

” “

hibernate-mapping

class name=”com.ssh.User” table=”user”

id name=”id” column=”id”

generator class=”increment” /

/id

property name=”username” column=”username” /

property name=”password” column=”password” /

property name=”birthday” column=”birthday” /

property name=”email” column=”email” /

/class

/hibernate-mapping

接下来需要实现dao操作。

设计一个类继承了HibernateDaoSupport类。关于HibernateDaoSupport类,请参考相关文档。

6、完成hibernate的设计后,接下来设计struts的拦截器和struts的action。

struts的拦截器:

package com.action;

import java.lang.reflect.Method;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

/**

* 这个类的是拦截器。

* 对于如下URL:

*

* actionInvocation.invoke()方法会自动调用名称了HelloAction类的list方法。

* 在action中根据该方法的返回值决定页面显示或跳转位置。

* result值除了可以再action类中定义,还可以在struts.xml中配置。

* 配置时可采用如下语句:

* action name=”hello” class=”crudAction”

* result name=”list”/list.jsp/result

* result name=”modify”/modify.jsp/result

* /action

* 此处需要格外注意的是:class属性的值,此值是applicationContext.xml中的id。

* 该bean中注入了action类中属性userDao的值。

* 所以,如果需要使用struts.xml中的action配置,需要使用该id,否则,系统不会给其注入值,最终导致空指针异常。

* @author HeXiaoXing

*

*/

public class CrudInterceptor extends AbstractInterceptor{

public String intercept(ActionInvocation actionInvocation) throws Exception {

/*

*下面代码演示了获取请求的类名与方法名的一半方式,但本例中不涉及。 全部注释掉。

*/

// Object action = actionInvocation.getAction();

// Class actionClass = action.getClass();

// String actionClassName = actionClass.getSimpleName();

// String methodName = actionInvocation.getProxy().getMethod();

return actionInvocation.invoke();

}

}

struts的action,关于此action的全部内容,请参考源程序CrudAction。

7、完成了类设计后,就是页面的设计,关于页面的设计,不再一一叙述,给粗源文件,请自行参考。

需要提出的是,在转向时,url的格式必须是method:方法名。这是约定的,不可以写成method=方法名。

java中SSH各自的用途?

struts是web层的,接收用户请求,然后根据请求做出响应

spring作为业务层,但是还有负责将hibernate和struts灵活的整合

hibernate是dao层,对数据库进行操作

java中SSH到底是干什么的,说的通俗一点,谢谢。

1、SSH是指:struts,spring,hibernate

2、他们都是java开发的轻量级框架,特别受广大开发者的喜好。

3、他们三个是一个组合,特别符合MVC(Model-View-Control)的设计模式,也就是分别负责项目开发的一部分,可以高效快捷的解决很多项目开发的常见问题以及团队合作问题,

4、如果还想更详细的放,可能需要你好好学下java才可以了。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/182474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-24 06:21
下一篇 2024-11-24 06:21

相关推荐

  • 异或什么意思及其用途

    异或操作是一种比较常见的位运算操作,也称为“异或运算”,这个运算符用符号“^”表示。它是指对两个相应位进行逻辑异或,并返回结果。 我们来看下异或的运算规则: 0 ^ 0 = 0 0…

    编程 2025-04-28
  • 网络爬虫什么意思?

    网络爬虫(Web Crawler)是一种程序,可以按照制定的规则自动地浏览互联网,并将获取到的数据存储到本地或者其他指定的地方。网络爬虫通常用于搜索引擎、数据采集、分析和处理等领域…

    编程 2025-04-27
  • poc测试什么意思?详解poc测试

    一、概述 POC是proof of concept的缩写,意为“概念证明”。POC测试是通过尝试攻击系统,演示攻击成功,从而证明系统的漏洞。 POC测试是企业安全评估的重要内容,通…

    编程 2025-04-12
  • isna函数什么意思

    一、isnan函数什么意思 isnan函数是一个C++中的函数,用于检测一个给定的数值是否是非数值(NaN)。 bool isnan (double x); 其中,参数x为要被检测…

    编程 2025-02-25
  • c和jsp什么意思,Jsp什么意思

    本文目录一览: 1、C/S和B/S语言分别有什么?asp、php、jsp是属于哪一类的? 2、C、C++、JAVA语言和ASP、PHP、JSP语言在应用领域上有什么区别? 3、c还…

    编程 2025-01-16
  • c语言中code什么意思,c语言code是什么意思翻译

    本文目录一览: 1、C语言中,code uint8 a[] 里面的”code”是什么意思? 2、code是什么意思 3、C语言中的“code”是什么意思啊 …

    编程 2025-01-16
  • c语言inf的意思,c语言出现inf什么意思

    本文目录一览: 1、c语言对变量赋值结果为inf。b数组第二个元素inf 是什么意思 2、c语言中mincost=INF是什么意思 3、c语言中输出1.#jhbhb表示什么意思 4…

    编程 2025-01-16
  • solidworks面分隔,solidworks合并切面什么意思

    本文目录一览: 1、solidworks用曲面分割后怎么把工具曲面删除? 2、solidworks以轮廓线分割什么意思 3、solidworks分割线怎么把一个面分割成两个不同的面…

    编程 2025-01-13
  • python里面for什么意思的简单介绍

    本文目录一览: 1、核桃编程上的Python里里边的for代码是什么? 2、python用for用法 3、pythonfor循环语句是什么? 4、python中for循环的用法 5…

    编程 2025-01-11
  • golang人名,gogo什么意思

    本文目录一览:

    编程 2025-01-09

发表回复

登录后才能评论