SSH总结.docx

上传人:b****6 文档编号:7730279 上传时间:2023-01-26 格式:DOCX 页数:34 大小:1.22MB
下载 相关 举报
SSH总结.docx_第1页
第1页 / 共34页
SSH总结.docx_第2页
第2页 / 共34页
SSH总结.docx_第3页
第3页 / 共34页
SSH总结.docx_第4页
第4页 / 共34页
SSH总结.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

SSH总结.docx

《SSH总结.docx》由会员分享,可在线阅读,更多相关《SSH总结.docx(34页珍藏版)》请在冰豆网上搜索。

SSH总结.docx

SSH总结

Struts2总结Hibernate总结

Struts2介绍

优点介绍

1.在软件设计上Struts2没有像struts1那样跟ServletAPI和strutsAPI有着紧密的耦合,Struts2的应用可以不依赖于ServletAPI和strutsAPI。

Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。

2.Struts2提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能。

3.Strut2提供了类型转换器,我们可以把特殊的请求参数转换成需要的类型。

在Struts1中,如果我们要实现同样的功能,就必须向Struts1的底层实现BeanUtil注册类型转换器才行。

4.Struts2提供支持多种表现层技术,如:

JSP、freeMarker、Velocity等

5.Struts2的输入校验可以对指定方法进行校验,解决了Struts1长久之痛。

6.提供了全局范围、包范围和Action范围的国际化资源文件管理实现

MVC模式与框架实现

什么是MVC模式

MVC组件与交互

实现MVC框架的要点

Struts2工作流程与模型驱动模式

Struts2工作流程与架构

Struts2核心组件

第一个Struts2登录案例

Struts2数据校验与类型转换

数据库校验概述

编程式校验

声名式校验

类型转换

Struts2异常处理

异常处理概述

配置局部异常处理

配置全局异常处理

国际化

国际化概述

Struts2拦截器与自定义拦截器

拦截器与拦截器栈

自定义拦截器

Struts2标签

ONCL表达式

#、%、$符号的用法

文件上传

案例

Hibernate总结

持久化技术与DAO模式

数据持久化技术介绍

Dao模式介绍

重构DAO模式的要点

Hibernate完成CRUD

ORM介绍

什么是MVC模式

MVC(Model模型、View视图、Controller控制器)是一种架构模式。

Model模型:

应用程序的主体部分,用于表示业务数据、或者业务逻辑。

如:

JavaBean、EJB、WebService。

View视图:

应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

如:

JSP、HTML、freemarker等模板技术。

Controller控制器:

用于根据用户的输入、控制用户界面数据显示,更新Model对象状态。

如:

核心组件Servlet。

(1)MVC手段与目标:

第一步:

从模型中分离表现。

第二步:

视图与控制器分离。

主要目标:

通过控制器解耦模型与视图,使不同表现(视图)可以共享相同的模型。

MVC组件与交互

实现MVC框架的要点

决定哪些视图请求/用户操作交给框架处理。

以后缀区分,如*.action,*.do以目录名区分,如/services/*

分离系统控制器与业务控制器。

系统控制器中判断用户操作并调度业务控制器:

Stringpath=request.getServletPath();

StringactionPath=path.substring(path.lastIndexOf("/")+1,path.lastIndexOf("."));

用接口来解耦合。

用反射机制或工厂模式结合配置文件获取灵活性。

要进行合理的抽象。

Struts2工作流程与架构

Struts2架构

Struts2的请求是由FilterDispatcher来进行拦截的,当接收到用户的请求时,它会在Struts.xml中查找对应的请求映射配置,得到使用哪些拦截器Interceptos、Action类和返回结果Result的信息,然后

依次做如下操作:

1)、请求通过一系列的拦截器:

Interceptos是Struts2中的一种过滤机制,它基于AOP的思想进行设计

通常可以用于日志记录、权限限制等。

拦截器和拦截器组可以按照不同的级别进行组合配置处理请求。

它们为请求提供各种预处理和切面处理的应用功能。

2)、调用Action:

产生一个新的Action对象实例,并提供请求所调用的处理逻辑的方法,并调用Model层执行业务逻辑的操作,然后返回映射配置中指定的Result值。

3)、业务处理:

业务逻辑通常由JavaBean或EJB组件实现。

4)、调用相应的Result:

通过匹配处理Action方法之后的返回值,获取相应Result类,生成并调用它的实例。

处理Result可能产生的结果之一就是对UI模板(但并非一个)进行渲染,生成HTML。

5)、响应被返回给用户:

最后一步是将控制权交还给Servlet引擎,最常见的结果是吧渲染后的HTML返回给用户

Struts2的核心组件

全局属性文件(struts.properties):

保存了系统运行的一些参数变量,整个系统只有一个属性文件。

映射文件(struts.xml):

用于配置请求映射的Action和拦截器,可以有多个映射文件。

业务控制器(Action):

可以使用任意的POJO类,也可以继承ActionSupport,在该类中我们不仅可以取得表单数据,还可以取得上下文变量。

第一个Struts2登录案例

1、第一步创建登录界面:

Form表单里,两个输入框(text),一个提交按钮(submit)。

2、创建Sturts2Action处理类

packagestudy.shop.action;

importcom.opensymphony.xwork2.ActionSupport;

publicclassLoginActionextendsActionSupport{

privateStringusername;

privateStringpass;

//是从jsp页面获取username的值

publicStringgetUsername(){

returnusername;

}

//相当于把其存入到request中

publicvoidsetUsername(Stringusername){

this.username=username;

}

publicStringgetPass(){

returnpass;

}

publicvoidsetPass(Stringpass){

this.pass=pass;

}

@Override

publicStringexecute()throwsException{

returnSUCCESS;

}

}

a)创建其配置文件

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http:

//struts.apache.org/dtds/struts-2.1.dtd">

/success.jsp

解释:

✧package包对一类action的封装extends继承了struts-default.xml文件中struts-default默认的包,其包提供了struts2基本处理(比如拦截器,文件上传下载,参数的处理等等)。

Namespace问包提供一个访问的命名空间。

✧action从jsp页面中传递请求class指明的是该请求交给此类来处理,默认的情况交给此类中的execute方法处理也可以通过method属性来指明该action由其某个方法处理

✧result代表以上类处理返回的结果此结果可以由name属性指定其结果值type指明其结果类型默认的是dispatcher类型(此类型是与jsp页面交互)。

⏹通过发布此项目即可测试。

通过此项目简单了解struts2的处理流程如下:

ØJsp:

发送请求

Øweb.xml文件中的StrutsPrepareAndExecuteFilter:

读取struts.xml

Ø通过拦截器处理找到actionname=”login”

Ø通过此action对应类中的setXxx()和getXxx()方法保存并专递数据到jsp

Ø执行此action类指明的方法默认是execute()方法并返回结果

Ø根据处理的结果使用resultname的属性进行匹配然后根据其type属性类型执行结果集操作

数据校验的概述

Struts2的两种校验方法

编程式校验:

继承ActionSupport类来编写校验函数Validate()

声明式校验:

基于xword的Validator框架

编程式校验

action需要继承ActionSupport,或者直接实现Validateable接口

ActionSupport类是一个工具类,它已经实现了Action接口,还实现了Validateable接口。

在Validateable接口中定义了一个validate()方法,重写该方法,就可以到表单进行校验。

validate()方法会在执行execute()方法之前执行。

声名式校验

基于XWork的Validator框架。

通过定义配置文件来完成数据校验。

校验器定义文件位于XWork的jar包的com.opensymphony.xwork2.validator.validators中

利用正则表达式验证

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEvalidatorsPUBLIC"-//OpenSymphonyGroup//XWorkValidator1.0//EN"">

true

必须输入名字

[CDATA[(\w{6,15})]]>

只能是字母和数组,长度6~15

true

必须输入密码

[CDATA[(\w{6,15})]]>

只能是字母和数组,长度6~15

1

150

年纪必须在1到150之间

1900-01-01

2050-02-21

年纪必须在${min}到${max}之间

类型转换

HTTP协议中传递的任何内容都是String类型的。

Struts2内置了类型转换机制,VO属性是Struts2支持的类型的话,Struts2就会自动把字符类型转换成相应的类型。

Struts2的类型转换是基于OGNL表达式的,只要我们把HTML输入项(表单元素和其他GET/POET的参数)命名为合法的OGNL表达式,就可以充分利用Struts2的转换机制。

流程图

Struts2异常处理概述

Ø用配置文件来处理异常,快捷方便

Ø可以作为亡羊补牢的措施

配置局部异常处理

例:

在struts.xml中配置异常

class="org.cjh.actions.LoginAction">

/success.jsp

/error.jsp

/index.jsp

--添加一个出现未知异常的物理视图-->

/actionException.jsp

--局部异常与result映射-->

result="actionException"exception="java.lang.Exception">

配置全局异常处理

例:

在struts.xml中配置全局异常出来

--全局result和异常必须放在Action元素上,局部异常优先-->

/globalException.jsp

result="globalException"

exception="java.lang.Exception">

/success.jsp

/error.jsp

/index.jsp

--添加一个出现未知异常的物理视图-->

/actionException.jsp

--局部异常与result映射-->

--

result="actionException"

exception="java.lang.Exception">

-->

国际化概述

(1)国际化常用类:

Øjava.util.ResourceBundle//用于加载资源包

Øjava.util.Locale//对应一个特定国家/区域/语言环境

Øjava.text.MessageFormat//用于将消息格式化

(2)国际化流程

ØStruts2支持国际化(简写为i18n)

◆UI标签

textfieldname=“username”key=“username_lable”/>

◆Action/字段错误信息.

Ø

propertyvalue="getText('some.key')"/>

Ø

textname="'some.key'"/>

Ø

i18nname="some/package/bundle">

textname="'some.key'"/>

i18n>

Øi18n标签,将资源包压入栈中,允许使用除前面提到的继承链以外的资源包显示文本.

拦截器与拦截器栈

1)拦截器介绍

使用拦截器可以实现横切功能并使这些实现相对action甚至Struts2框架保持独立。

可以实现和使用自己所需的特性且不用修改框架的底层代码。

使用拦截器可以达到以下目的:

Ø在调用Action之前,提供预处理逻辑

Ø与Action进行交互,提供执行信息,比如设置请求中的参数

Ø在调用Action之后,提供后处理逻辑

Ø修改返回的结果,进而修改呈现给用户的内容

Ø捕获异常从而替换可执行的处理过程或返回一个不同结果

2)什么是拦截器栈

拦截器链(InterceptorChain,在Struts2中称为拦截器栈InterceptorStack)。

拦截器链就是将拦截器按一定的顺序联结成一条链。

在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。

注意:

某些截取器会中断栈/链/流程,因此顺序是十分重要。

不好确定拦截器顺序就使用现成的拦截器栈

3)实现原理

4

4)默认拦截器

自定义拦截器

大家在开始着手创建自定义拦截器前,切记以下原则:

拦截器必须是无状态的,不要使用在API提供的ActionInvocation之外的任何东西。

要求拦截器是无状态的原因是Struts2不能保证为每一个请求或者Action创建一个实例,

所以如果拦截器带有状态,会引发并发问题。

所有的Struts2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor

或com.opensymphony.xwork2.interceptor.AbstractInterceptor。

com.opensymphony.xwork2.interceptor.Interceptor该接口提供了三个方法:

voidinit():

在该拦截器被初始化之后,在该拦截器执行拦截之前,系统回调方法。

每个拦截器只会执行一次。

voiddestroy():

该方法跟init()方法对应,在拦截器实例被销毁之前,系统将回调该方法。

Stringintercept(ActionInvocationinvocation):

该方法是用户需要实现的拦截动作,该方法会返回一个字符串作为逻辑视图。

com.opensymphony.xwork2.interceptor.AbstractInterceptor:

该抽象提供的init()和destroy()方法的空实现,只需要实现intercept()方法。

ONCL表达式

什么是ONCL表达式

ONGL是Struts2框架中使用的EL表达式,结合Struts2标签一起使用。

EL表达式可以方便获取各种来源的数据。

EL表达式调用方法。

EL表达式遍历整个对象结构图。

Struts2支持的表达式

◆OGNL(ObjectGraphNavigationLanguage):

可以方便地操作对象属性的开源表达式语言(默认)。

◆JSTL(JSPStandardTagLibrary):

JSP2.0集成的标准的表达式语言。

◆Groovy:

基于Java平台的动态语言。

◆Velocity:

严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,其性能要比JSP好。

#、%、$符号的用途

(1)“#”符号四种用途:

“#”可以访问ONGL上下文和ActionContext,相当于ActionContext.getContext()

ActionContext中属性列表:

名称

作用

说明

parameters

当前请求参数的Map

#parameters.id[0]

相当于request.getParameter("id")

request

当前请求属性的Map

#request.userName

相当于request.getAttribute("userName")

session

包含当前HttpSession的属性的Map

#session.userName

相当于session.getAttribute("userName")

application

包含当前ServletContext的属性的Map

#application.uName

等同application.getAttribute("uName")

attr

用于按requestsessionapplication

顺序访问其属性

#attr.userName相当于按顺序在以上三个范围内读取userName属性

(2)“%”符号:

主要用途是在标签的属性为字符串类型时,计算ONGL表达式的值。

--includeParams:

把请求参数也传过去-->

urlvalue

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1