Struts2主要知识点回顾.ppt

上传人:小飞机 文档编号:6521437 上传时间:2023-11-08 格式:PPT 页数:48 大小:331KB
返回 下载 相关 举报
Struts2主要知识点回顾.ppt_第1页
第1页 / 共48页
Struts2主要知识点回顾.ppt_第2页
第2页 / 共48页
Struts2主要知识点回顾.ppt_第3页
第3页 / 共48页
Struts2主要知识点回顾.ppt_第4页
第4页 / 共48页
Struts2主要知识点回顾.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Struts2主要知识点回顾.ppt》由会员分享,可在线阅读,更多相关《Struts2主要知识点回顾.ppt(48页珍藏版)》请在三一办公上搜索。

1、第1章 Struts 2主要知识点回顾,1、MVC 概述2、Struts1.x简述3、Struts2概述4、编写一个struts2应用程序5、Struts2的核心配置文件6、Action的实现7、拦截器,1.1 模型-视图-控制器(MVC),M 是指数据模型,V 是指用户界面,C 则是指控制器。MVC 的目的:是将M 和V 的实现代码分离,从而使同一个程序可以使用不同的表现形式经典MVC:,1.1 模型-视图-控制器(MVC),优点:实现了视图与业务逻辑的分离,提高了代码重用率,减少了数据表达、数据描述和应用操作的耦合度。使得软件可维护性、可重用性、可扩展性、灵活性以及封装性大大提高。Web应

2、用中的缺点:在Web 世界中,视图是位于客户端浏览器上的,而控制器和模型则是位于服务器端的,视图无法通过HTTP 像经典MVC 那样直接调用控制器。视图不是一个可以更新的对象,而是在客户端发送一个新的请求,随之获得一个全新的Web 页面。模型不能将自身的改变通知视图,因为视图在另一台计算机的浏览器中。,1.1 模型-视图-控制器(MVC),Web应用中的MVC:在这种模型中包含了一个“分发器”(使用Servlet实现)分发器可以将一个请求URL 映射成一个需要被执行的命令,1.1 模型-视图-控制器(MVC),优点:多个视图可以对应一个模型,这样,可以减少代码的复制及代码的维护量,一旦模型发生

3、改变,也易于维护。模型返回的数据与显示逻辑分离,这样,模型数据就可以应用任何的显示技术。应用被分隔为层,降低了各层之间的耦合度,提供了应用的可扩展性。控制层可以发挥更大的作用,由于它把不同的模型和不同的视图组合在一起,可以完成不同的请求,因此,控制层可以包含对用户请求权限的限制。,1.2 Struts1.x简述,Struts 1 中,控制器就是它的核心(大部分Web MVC 框架也都是如此)Struts 1 的控制器由两个部分组成:核心控制器和业务逻辑控制器。其中核心控制器就是ActionServlet,由Struts 1 框架提供;业务逻辑控制就是用户自定义的Action,由开发者提供,1.

4、3 Struts2概述,Struts1.x的缺点:Struts 1 所支持的表现层技术比较单一Struts 1 与Servlet API 耦合严重,难于测试Struts 1 属于侵入式设计Struts2的发展Struts 2 虽然是在Struts 1 的基础上发展起来的,但它以WebWork 为核心,采用WebWork的设计理念。优点:支持更多的表现层技术更加松耦合的设计,使Action 不再与Servlet 耦合Action 无须与WebWork 耦合,提高了代码重用率,1.3 Struts2概述,1.4 编写一个struts2应用程序,0、功能描述:本实例实现了一个简单的登录功能,用户打开

5、一个登录页面输入登录名称和登录密码,如果登录名称和登录密码输入正确就进入欢迎页面,否则就重新回到登录页面。工作流程如图所示:,1.4 编写一个struts2应用程序,1、配置Struts 2 运行环境:首先配置JDK 环境变量注意环境变量PATH的配置(jrebin),以及JAVA_HOME的配置(安装路径)下载并安装Struts 2 框架下载地址:http:/struts.apache.org/,目前最新版本是Struts 2.2.1.1Web 服务器Tomcat下载地址:http:/tomcat.apache.org/,目前最新版本是Tomcat 6.x。默认端口:8080;修改confs

6、erver.xml,1.4 编写一个struts2应用程序,配置Struts 2 框架注意问题:解压下载的压缩包进行,存放的就是Struts2的核心库和第三方插件库把需要的相关类库复制到Web 应用的WEB-INF/lib 文件夹中。几个关键包的作用如下所示:struts2-core-2.1.6.jar Struts 2 的核心库。xwork-2.1.2.jar WebWork 的核心库,需要它的支持。ognl-2.6.11.jar OGNL 表达式语言,Struts 2 支持该EL表达式freemarker-2.3.13.jar 表现层框架,定义了 Struts 2 的可视组件主题。comm

7、ons-logging-1.0.4.jar 日志管理。commons-fileupload-1.2.1.jar 文件上传与下载。javassist-3.7.ga.jar,Tomcat必须要包含该文件,如果是jboss,则不需要(将Struts 2.2.x根目录下的apps文件夹下的struts2-blank.war文件进行解压,然后找到WEB-INF下的lib目录),1.4 编写一个struts2应用程序,2、配置web.xml:拦截用户请求首先在 web.xml 文件中配置Struts 2 的核心控制器,用来拦截客户端请求,并把请求转发到相应的Action 类来处理。所有的请求(/*)都要经

8、过这个核心控制器注意:在Struts1.x中web.xml配置了一个全局的Servlet来执行分发的,而在Struts2中是一个过滤器(Filter)first Struts 2 Projectstruts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/*,1.4 编写一个struts2应用程序,3、创建视图页面:login.jsp使用Struts 2 的标签库可以最大限度地减少视图页面的编码量。login.jsp 使用Struts 2 标签库实现了一个表单,*font-size:12px;用户登录,1.4 编写一个struts2应

9、用程序,4、创建业务控制器:LoginAction(编写Action类)Action类是最基本的逻辑处理单元,在MVC 模式中分发器分发给不同的Action类,来处理请求。在Struts2中Action类不必再实现Action接口,可以是任何类。但一般的还是需要继承ActionSupport类,因为ActionSupport提供了很多很好的基本功能如错误信息处理等,1.4 编写一个struts2应用程序,4、创建业务控制器:LoginAction(编写Action类)public class LoginAction extends ActionSupportprivate String use

10、rname;/定义登录名称属性private String password;/定义登录密码属性。public String checkLogin()/登录验证if(this.username.equals(admin)/登录失败返回LOGIN,1.4 编写一个struts2应用程序,5、添加映射到配置文件:配置LoginActionStruts2的配置文件是struts.xml,所有请求和分发以及其他配置都在这个文件中定义,struts.xml文件应该放在WEB-INF目录下。在Struts1.x中这个文件的文件名为struts-config.xml,而在Webwork中这个文件名为xwor

11、k.xml。Action 处理完客户端请求后就会返回一个字符串,每个字符串都对应一个视图在 struts.xml 文件中配置Action 时,用name 属性定义该Action的名称,用class 定义这个Action 的实际实现类,method 表示checkLogin 这个Action 由实际实现类LoginAction 的checkLogin()方法来处理。配置 Action 时,为每个Action 都指定了result 元素,每个result 元素都定义了一个逻辑视图,用name 定义了Action 所返回的字符串,1.4 编写一个struts2应用程序,5、添加映射到配置文件:配置L

12、oginAction/index.jsp/login.jsp,1.4 编写一个struts2应用程序,6、发布web.xml 文件存储在WEB-INF 目录下,struts.xml 存储在classes 目录下,lib 下存储的是所必需的类库包,如Struts 2 核心类库包等。,1.5 Struts2的核心配置文件,0、Struts2的体系结构:在Struts2框架下只需编写自己的Action类来处理逻辑、编写JSP页面(或者其他方式)来展示用户界面和在struts.xml配置映射关系就可以完成基本的业务流程。actionContextcleanup过滤器来清除属性,不让action自己清除

13、,1.5 Struts2的核心配置文件(结构图),体系结构:,1.5 Struts2的核心配置文件,1、Struts2的配置文件概述:Struts2框架主要有两个核心配置文件:struts.properties和struts.xml。struts.xml主要负责管理应用中的Action映射,以及该Action包含的Result定义等,而struts.properties文件则定义了Struts2框架的全局属性。所有的配置文件说明见表所示:,1.5 Struts2的核心配置文件,2、struts.properties 配置:struts.properties文件是一个标准的Properties文

14、件,该文件包含了系列的key-value对象。struts.properties文件的内容均可在struts.xml中以加载struts.properties文件通常放在Web应用的WEB-INF/classes路径下以下是一部分配置片段。struts.enable.DynamicMethodInvocation=false“struts.devMode=falsestruts.configuration.files指定Struts 2默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts-default.xml,st

15、ruts-plugin.xml,struts.xml,,1.5 Struts2的核心配置文件,3、struts-default.xml 配置:这个文件被包含在struts2-core.jar中,是struts.xml的缺省配置,它将自动被加载然后导入到struts.xml中chain:用来处理Action链 dispatcher:用来转向页面,通常处理JSPfreemaker:处理FreeMarker模板 httpheader:控制特殊HTTP行为的结果类型 redirect:重定向到一个URL redirectAction:重定向到一个Action stream:向浏览器发送InputSre

16、am对象,通常用来处理文件下载,还可用于返回AJAX数据 velocity:处理Velocity模板xslt:处理XML/XLST模板 plainText:显示原始文件内容,例如文件源代码,1.5 Struts2的核心配置文件,4、struts.XML 配置:struts.xml文件主要负责管理应用中的action映射,以及该action包含的result定义等。主要包括:Action、Interceptor、Packages、Namespace等在struts.xml中可以使用标签把内容分到几个文件中去标签的格式如下所示。/引入其他文件,1.5 Struts2的核心配置文件,4.1、stru

17、ts.XML 配置-action配置:一个基本的action只需要两个信息:action名字和对应的action类。属性“method”用来告诉Struts2调用action的那个方法。在action处理之后一般的需要展示处理结果给用户,所以还需要把action和result映射在一起 注意事项:如果class没有定义:ActionSupport,执行execute()如果method属性为空,则执行execute()。如果result没有设置,默认返回SUCCESS。,1.5 Struts2的核心配置文件,4.1、struts.XML 配置-action配置:默认action配置:当找不到指

18、定的action时,使用默认的action。/index.jsp 为action指定参数(为Action的属性注入值)在struts2中可以通过标签指定任意多个参数。代码如下:value1 value2/result.jsp 在action中读这些参数也非常简单,只需要象获取请求参数一样在action类中定义相应的setter方法即可(一般不用定义getter方法)。代码如下:,1.5 Struts2的核心配置文件,4.1、struts.XML 配置-action配置(指定Action参数):package action;import com.opensymphony.xwork2.Actio

19、nSupport;public class MyAction extends ActionSupport private String param1;private String param2;public String execute()throws Exception System.out.println(param1+param2);public void setParam1(String param1)this.param1=param1;public void setParam2(String param2)this.param2=param2;,1.5 Struts2的核心配置文件

20、,4.2、struts.XML 配置-result配置:result在struts.xml文件中定义,嵌套在标签里默认result:error,input,login,none和success。可以根据应用情况自由定义结果。结果以“名字-值”的形式影射到结果类型 foo.jsp 在result中还可以使用$属性名表达式访问action中的属性,表达式里的属性名对应action中的属性。如下:/view.jsp?id=$id,1.5 Struts2的核心配置文件,4.2、struts.XML 配置-result配置:全局的Result配置/Error.jsp/Error.jsp Logon!in

21、put,1.5 Struts2的核心配置文件,4.3、struts.XML 配置-拦截器(interceptor)配置:interceptor是能在一个action执行的前后执行的代码用途:安全检查(确保访问者是登陆用户)、跟踪日志(记录每个action)、效率瓶颈检查(记录每个action开始和结束的时间以检查程序中的瓶颈Interceptor将很多通用功能从我们的Action中独立出来,大量减少了我们Action的代码,独立出来的行为具有很好的重用性拦截器栈:interceptor连在一起组成interceptor栈。比如在action执行前同时做登陆检查,安全检查和记录日志;可以定义一个

22、interceptor的栈。interceptor必须事先定义好,然后可以连在一起组成一个栈,1.5 Struts2的核心配置文件,4.3、struts.XML 配置-拦截器(interceptor)配置:Interceptor配置与使用:Interceptor在struts.xml中的配置:Action中的使用,1.5 Struts2的核心配置文件,4.4、struts.XML 配置-包(package)的配置:通过包的配置,可以实现对某包中的所有Action 的统一管理;Struts 2 框架就是使用包来管理Action 与拦截器的。把actions、results、results、typ

23、es、interceptors这些元素打包到一个逻辑单元中packages就更像一个程序中的对象,可以被其他子包继承和扩展,而且可以拥有自己独立的部分:Name属性是packages的必填元素,它作为一个关键字被后边的包引用;extends元素是可选的,它允许包扩展一个和多个前边定义的包。通过继承,子包就可以继承父包在配置的拦截器、action 等。Abstract元素是可选的,如抽象类和抽象函数一样它是必须被继承的;如果是一个抽象包,那么就不能在此包中定义action/UserList.jsp,1.5 Struts2的核心配置文件,4.5、struts.XML 配置-命名空间(Namespa

24、ce)配置:目的:为了解决Action出现重名的问题。方法:通过为Action 所在的包指定namespace 属性,来为该包下的所有Action 指定共同的命名空间Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。使用namespace可以有效的避免action重名的冲突默认命名空间用“”(空字符串)表示。如果系统在指定的命名空间中没有找到某个action,就会到默认命名空间中查找根命名空间:一个包的 namespace 属性指定值为“/”使用了根命名空间的包下的Action,只能处理形如“/XX.action”的URL 请求。,1.5 Struts2的核心配

25、置文件,4.5、struts.XML 配置-命名空间(Namespace)配置:welcome.jsperror.jspwelcome.jsperror.jsphttp:/localhost:8080/struts/acc/login.action,1.5 Struts2的核心配置文件,4.5、struts.XML 配置-Bean的配置:Struts 2 是一个具有高度可扩展性的框架,其大部分的核心组件都不是以直接编码的方式写在代码中的,而是通过一个配置文件来注入到框架中的。这样,就使得这些核心组件具有可插可拔的功能,降低了代码的耦合度。接口通常用于定义注入的组件必须遵守的规范,1.5 Str

26、uts2的核心配置文件,4.5、struts.XML 配置-Bean的配置:class 这是一个必需的属性,用来指定此配置的 Bean 对应的实现类。name 这是一个可选的属性,用来指定Bean 实例的名字,对于相同类型的多个Bean,它们的name 值不允许相同。type 这是一个可选的属性,用来指定Bean 实例实现的Struts 2 的规范,如果配置的Bean 作为框架的一个核心组件来使用,那么就应该指定这个属性的值。scope 这是一个可选的属性,用来指定 Bean 实例的作用范围,其值只能是default、singleton、request、session 与thread 之一。s

27、tatic 这是一个可选属性,用来指定Bean 是否使用静态方法注入,通常,当指定了type 属性后,就不应该再把此属性设置为true 了。optional 用来指定 Bean 是否是一个可选的Bean。,1.5 Struts2的核心配置文件,4.5、struts.XML 配置-Bean的配置:class 这是一个必需的属性,用来指定此配置的 Bean 对应的实现类。name 这是一个可选的属性,用来指定Bean 实例的名字,对于相同类型的多个Bean,它们的name 值不允许相同。type 这是一个可选的属性,用来指定Bean 实例实现的Struts 2 的规范,如果配置的Bean 作为框架

28、的一个核心组件来使用,那么就应该指定这个属性的值。scope 这是一个可选的属性,用来指定 Bean 实例的作用范围,其值只能是default、singleton、request、session 与thread 之一。static 这是一个可选属性,用来指定Bean 是否使用静态方法注入,通常,当指定了type 属性后,就不应该再把此属性设置为true 了。optional 用来指定 Bean 是否是一个可选的Bean。,1.6 实现Action,Action是Struts2编程的核心部分,反映了对Web应用程序的功能需求Http请求参数通常直接封装在Action中,把这些参数作为Action

29、的属性,并实现get()、set()方法,而且参数名和Action的属性名保持一致。Action默认执行方法为execute()Action接口public interface Action public static final String SUCCESS=success;public static final String NONE=none;public static final String ERROR=error;public static final String INPUT=input;public static final String LOGIN=login;public

30、String execute()throws Exception;,1.6 实现Action,ActionSupport:该基类实现了Action接口并提供了大部分可选择口默认实现;提供诸如国际化、校验、负责工作流和错误信息处理等功能ActionSupport实现了以下可选择接口,Validateable提供一个Validate()方法,可以对action进行校验。ValidatetionAware提供了保存和取出action级别或者字段级别错误信息方法。TextProvider提供获取本地化信息文本的方法LocalProvider提供getLocale()方法返回locale,用户获取本地化

31、信息。,1.6 实现Action,ActionSupport:该基类实现了Action接口并提供了大部分可选择口默认实现;提供诸如国际化、校验、负责工作流和错误信息处理等功能ActionSupport实现了以下可选择接口,Validateable提供一个Validate()方法,可以对action进行校验。ValidatetionAware提供了保存和取出action级别或者字段级别错误信息方法。TextProvider提供获取本地化信息文本的方法LocalProvider提供getLocale()方法返回locale,用户获取本地化信息。,1.6 实现Action,1、实现基本校验:Stur

32、ts 2提供了一种能够在excuete()方法被调用之前调用其他方法对action进行处理的机制,这个机制由com.opensymphony.xwork2.Validateable接口提供,它包含了一个方法:public void validate()保存和显示校验的错误信息有接口ValidationAware来负责,这两个接口一般会同时使用。,1.6 实现Action,2、使用本地的资源文件:另外两个接口TextProvider和LocalProvider,它们都是为了使用本地的资源文件而设计:com.opensymphony.xwork.LocaleProvider接口的方法判断使用哪个L

33、ocale获取用于显示的信息文本,这个接口中只定义了一个方法:Public Locale getLocale(),1.6 实现Action,3、ActionContext与Web容器发生联系:ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以把它看作是一个Map,它存放是Action在执行时需要用到的对象,比如:上下文放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等。在每次执行Action之前都会创建新的Ac

34、tionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样的Action就可以在多线程中使用,1.6 实现Action,3、ActionContext与Web容器发生联系:例如:我们需要在Action中取得request请求参数“username”的值:ActionContext context=ActionContext.getContext();Map params=context.getParameters();String username=(String)params.get(“username”);通过Ac

35、tionContext取得我们的HttpSession:Map session=ActionContext.getContext().getSession();Struts2框架将与Web相关的很多对象重新进行了包装,比如这里就将HttpSession对象重新包装成了一个Map对象,供我们的Action使用,而不用直接和底层的HttpSession打交道。也正是框架的包装,让我们的Actoion可以完全的和Web层解藕。,1.7 拦截器,拦截器(Interceptor)是Struts2的一个强有力的工具,有许多功能都是构建于它之上,如国际化、转换器,校验等。Interceptor是Struts

36、2的一大特色,在执行action之前和之后可以使请求通过一个或多个Interceptor。多个连接器组合在一起实现某一个功能称为interceptor链(Interceptor Chain,在Struts2中称为拦截器栈Interceptor Stack)。interceptor链就是将interceptor按一定的顺序联结成一条链。在访问被拦截的方法或字段时,interceptor链中的interceptor就会按其之前定义的顺序被调用。,1.7 拦截器,1、Interceptor的原理。Struts2的interceptor实现相对简单。当请求到达Struts2的FilterDispatc

37、her时,Struts2会查找配置文件,并根据其配置实例化相对的interceptor对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器,1.7 拦截器,2、内置拦截器。使用timer为action即时使用logger 为aciton提供日志使用校验准备action实现ModelDriventoken和token-session,1.7 拦截器,3、自定义拦截器。自定义一个拦截器需要3个步骤:(1)自定义一个实现Interceptor接口的类。(2)在strutx.xml中注册上一步中定义的拦截器。(3)在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号