本文目录一览:
- 1、北大青鸟java培训:学习Java常用的SSH框架是什么呢?
- 2、有SSH三大框架的简单介绍吗?
- 3、JAVA SSH框架搭建流程
- 4、java的三大框架SSH 难学吗?
- 5、java中的ssh框架到底是什么
北大青鸟java培训:学习Java常用的SSH框架是什么呢?
Java框架一直是面试的重点,在成熟的大型企业、快速发展的企业和初创企业中都需要掌握Java框架,这样才能对当前正在开发的系统有一个大致的了解,以便更好地熟悉基础知识和相关技术。
那么学习Java常用的框架是什么,应该如何使用呢?下面广东计算机学习为大家具体介绍。
SSH框架的组合主要由Struts,Spring,Hibernate这3个框架构成,把Struts作为系统整体的基础结构加以利用,负责MVC的分离,在Struts框架的模型部分,控制业务的跳跃,利用Hibernate框架支持持续性层,利用Spring管理Struts和Hibernate。
下文北大青鸟广东计算机学院具体说明了这三种框架:Struts框架Struts框架基本上是基于相当于Servlet的MVC设计模式的Web应用程序框架。
MVC设计模式使用Struts2作为控制器(Controller)来建立模型和视图之间的数据交互。
广东广东java软件开发发现它包含Struts1和Struts2两个版本,两者的差异实际上还很大,Struts2虽然不是Struts1的更新,但是充分发挥了这两种技术的优点,它放弃了原来Struts1的缺点,使Web开发更加容易。
Spring框架我们都应该知道,最传统的JavaWeb应用程序是通过JSP、Servlet、Javabean实现的,它实现了最基本的MVC分层。
该结构存在一些问题,如JSP需要使用符号在页面中嵌入大量Java代码,页面结构混乱,Servlet和Javabean负责大量的跳转和操作工作,紧密耦合,程序重用低等。
广东计算机学校发现Spring框架的出现解决了这个问题。
通过对AOP和IOC两个特性的加持,所有类之间的这种依赖完全被配置文件所取代,实体bean被很好地管理到容器中,所以耦合大大降低,可重用性大大提高。
Hibernate框架Hibernate框架是半自动化的永久性层框架,SQL的大幅度削减,代码的制作,在这个框架中,需要相关作业的时候,不需要注意数据库表,通过将一个级别永久性化就可以达到添加,删除和检查的功能。
广东广东IT培训发现这是因为在框架内部实现了很多针对数据库的操作方法。
有SSH三大框架的简单介绍吗?
SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。\x0d\x0aStruts2简介:\x0d\x0aStruts 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的变化很小。\x0d\x0aSpring简介:\x0d\x0aSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。\x0d\x0aHibernate简介:\x0d\x0aHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来\x0d\x0a操纵数据库。 \x0d\x0aHibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命\x0d\x0a意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
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 难学吗?
难学,找到方法,就很容易,总结方法如下:
第一步,看视频或者入门文章。视频可以去verycd找,文章可以去iteye找。先看Struts2,也可以看SpringMVC3,然后是Hibernate,最后看Spring。
这一步的目的是知道每个框架作用,能干什么,大概上怎么使用。
第二步,看项目,推荐SpringSide。这个步骤可以知道实际项目中SSH一般是怎么配合的。
第三步,自己动手。如果能实现一个单表完整的增删改查,算是基本完成任务。能再考虑下怎么更通用化,写点东西,这块就没问题了,到哪个公司去,只要稍微看下他们的配置文件,都能上手。
需要思考的是有框架和没有框架,到底能带来什么。
有人不喜欢SSH框架,也有人推荐别的框架,个人喜欢nuts框架,但是总需要明白的是框是干什么用的,怎么用的,在实际运用中有了一些体会,才能明白自己的取舍。
用Struts,是要明白MVC,用Hibernate,要明白什么是持久化,什么是OR/mapping,用Spring,要明白什么是依赖注入,什么是AOP。就算不精通,也要大致理解。明白了这些,Hibernate换成Mybaits,Struts换成SpringMVC,甚至别的什么框架,都能很快上手。
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。
系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。