美文网首页
Struts2框架介绍

Struts2框架介绍

作者: Mick_小聪 | 来源:发表于2017-08-07 09:00 被阅读0次

    1,一个完整的Java Web所涉及的内容包括:(1)Java Bean组件 (2)EJB组件 (3)自定义的JSP标签

    (4)XML (5)Web服务器和应用服务器

    2,Java Bean在JSP中的应用

    (class中存放的是JavaBean的路径)

    (1)获取JavaBean属性:

    (2)给某个JavaBean属性赋值:

    3,Web组件之间的三种关联关系

    (1)请求转发

    (2)URL重定向 response.sendRedirect(...)

    (3)包含 <%@ include file=...%>

    4,MVC:Model-View-Countroller.即模型-视图-控制器,是一种软件设计模式。它强制地把应用程序的输入、处理和输出分开。MVC把应用程序分成三个核心模块:模型、视图和控制器。对于基于请求/响应方式的WEB应用,模型位于WEB服务器端,视图位于用户浏览器端。

    5,MVC处理过程:

    首先,控制器接收用户的请求,并决定应该调用哪个模型进行处理

    然后,模型根据用户请求进行相应的业务逻辑处理,并返回数据

    最后,控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户

    用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能。

    6,Struts:实质上是在JSP Model2上实现的一个MVC框架。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组Jsp文件构成。

    7,ActionForm Bean:Struts框架利用文本进行视图和控制器之间表单数据的传递。

    8,Struts的控制器:由ActionServlet类和Action类来实现

    ActionServlet类:在MVC模型中扮演中央控制器的角色,主要负责接收HTTP请求信息,根据配置文件struts_config.xml的配置信息,把请求转发给适当的Action对象。

    Action类:负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。

    在配置文件中,每一个Action的映射信息都通过一个元素来配置。

    9,软件的分层结构:表现层、业务逻辑层、数据访问层。

    10,Web项目的结构:src目录下存放Java源文件,源文件编译后会自动输出到WebRoot/WEB-INF/classes目录下,WebRoot是Web应用程序的根目录。有时候各个分块代码是正确的,但就是发送错误,可能就是因为文件放置的位置不当造成的,可通过调试解决。

    11,FilterDispatcher:Struts2框架是基于MVC模式开发的,它提供了一个核心控制器,用于对所有的请求进行统一处理,这个控制器是由一个名为FilterDispatcher的Servlet过滤器来充当的。

    12,web.xml和struts.xml

    web.xml:Web应用程序的部署描述符文件

    struts.xml:对action进行配置

    13,Struts 2 的开发步骤:

    (1)准备类库

    (2) 在web.xml文件中配置FilterDispatcher。

    (3)开发action。针对每一个功能点,编写一个action类。

    (4)编写相关的结果页面。针对action返回的结果代码,编写相应的结果页面

    (5)在Web应用程序的WEB-INF/classes目录下创建struts.xml,对action进行配置,将页面与结果页面关联在一个。

    14,使用领域对象来接收用户输入。传统的Web应用程序调用HttpServletRequest的getParameter方法从请求中获取数据。Struts2的action完全与Web层解耦,要获取Web层的数据,需要使用ActionContext,它为action提供了一个执行上下文。

    15,Struts 自动实例化对象特性

    该请求等同于调用:action.getUser().setUsername(...);

    Struts2 会遍历所有的请求参数,自动依次实例化任何用于填充数据的对象。上述例子Struts将依次调用一下方法:

    action.getUser();

    action.setUser(new User());

    action.getUser().setUsername();

    16,struts2的执行流程:

    \ |/ struts.xml

    \|/

    类的实现

    17,使用action的属性接收用户输入,此时不需要使用模型对象。

    18,Struts2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用对应的Map对象来保存和读取数据。

    使用com.opensymphony.xwork2.ActionContext类

    ActionContext是action执行的上下文

    (1)get(object key):得到请求Map对象,需要为get()方法传递参数"request"。

    (2)getSession():HttpSession的Map对象

    (3)getApplication:ServletContext的Map对象

    19,Struts2框架由两部分组成:XWork2和Struts。XWork提供了很多核心功能:IoC容器,强大的表达式语言(OGNL),数据类型转换,验证和可插入的配置。XWork框架的核心概念包括:aciton、拦截器和result。

    拦截器的工作原理:

    一个HTTP请求到达Struts2 的FilterDispatcher之后,就会被转换成一个action command。这个action command在穿越了一系列Struts2和XWork的拦截器之后,最后执行用户编写的Action实例。在Action执行之后,响应还会穿越相同的拦截器(相反顺序),最后通过Struts2的HttpServletResponse转换成Web可识别的响应(例如JSP)。

    20,Struts2的体系结构

    (1)一个初始的请求到达Servlet容器(tomcat)后,将被传递给一个标准过滤器链。

    (2)接下来,必须的FilterDispatcher被调用,它轮询ActionMapper以便确定这个请求是否应该调用一个action.

    (3)如果ActionMapper确定一个Action应该被调用,那么FilterDispatcher就把控制权委派给ActionProxy,ActionProxy从struts.xml文件中读取配置信心。

    (4)ActionProxy创建一个实现了命令模式的ActionInvocation。ActionInvocation在调用action之前会依次调用所用配置的拦截器。

    (5)一旦action执行返回,ActionInvocation就要查找这个acion的结果码所对应的result(action的结果码和result的映射在struts.xml文件中配置),然后执行这个result。

    21,Struts2的配置文件

    (1)web.xml:Web部署描述符,包括所有必需的框架组件。由开发人员编写。

    (2)struts.xml:主要的配置文件,包含result映射,action映射,拦截器配置等。由开发人员编写

    (3)struts.properties:struts2框架的属性配置,由开发人员编写

    (4)struts-default.xml:Struts2提供的默认设置,由框架提供。

    (5)strits-plugin.xml:struts2框架的插件所用的配置文件,由插件提供。

    22,对Struts2标签库的配置

    的子元素的内容:/struts-tags

    /struts-tags

    23,Bean配置

    Struts2是一个可扩展的框架,框架的核心组件都是可配置的,这些组件通过Struts2自己的依赖注入容器来装配。通过bean元素来配置组件实现类。

    24,包配置

    Struts2中的包类似于Java中的包,提供了将action、result、拦截器等组织为一个逻辑单元的一种方式,提高了重用性。Struts2中的包可以扩展另外的包,从而”继承”原有包的所用定义。

    package元素的属性

    name:被其他包引用时的键extends:指定要扩展的包

    namespace:指定名称空间abstract:声明包抽象的

    25,名称空间(Namespace)配置

    namespace属性可以将包中的action配置为不同的名称空间,这样在不同的名称空间中可以使用同名的action。

    26,包含(include)配置

    分而治之,在每个模块单独提供一个配置文件,对其进行配置,然后再struts.xml文件中使用include元素来包含其他的配置文件

    27,拦截器(Interceptor)配置

    拦截器允许你在action执行前后插入代码执行。拦截器可以为action动态添加输入验证、对象组装、权限控制、日志记录等功能,而不需要修改action。

    为action配置引用的拦截器,首先需要在interceptor元素中使用interceptor元素定义拦截器,然后再action元素中使用interceptor-ref元素指定引用的拦截器。interceptor元素有两个必需的属性:name和class。前者指定拦截器的名字,后者指定拦截器的完整类名。

    如果一个action需要多个拦截器,可以将多个拦截器组合在一起,组成一个拦截器栈,然后再action中直接引用拦截器栈即可。interceptor-stack。

    如果多个action都需要引用相同的拦截器,那可以使用default-interceptor-ref元素来定义一个默认的拦截器栈引用,这样就不需要为每个action指定引用信息了。

    28,Action映射

    action映射:将一个请求URI(即aciton名字)映射到一个action类,当一个请求匹配某个action的名字时,框架就使用这个映射来确定如何处理请求。struts.xml文件中的每一个action元素就是一个action映射。

    action元素的属性

    name:action的名字,用于匹配请求URIclass:Action实现类的完整类名

    method:执行Action时调用的方法converter:应用于action类型转换器的完整类名

    29,method属性

    在配置action时,可以通过action元素属性来指定action调用的方法,所指定的方法必须遵循与execute方法相同的格式。这样就可以在同一个类中完成相关的任务,而不需要去编写不同Action类。(解释:本来一个任务对应一个class,现在一个任务对应一个class的一个方法)

    30,模拟struts中的ForwardAction

    在struts中,所有的URL都指向action,而不是JSP页面。但有时只需要转发请求,不想再编写action类的做法:

    将action元素的class属性省略,那将默认使用com.opensymphony.xwork2.ActionSupport类,如:

    /index.jsp

    31,默认的action

    如果请求的一个action不存在,将显示错误,此时可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行。

    默认的action使用default-action-ref元素来声明。

    32,result:一个result代表一个可能的输出。当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出。

    33,result元素的属性

    name:指定result的逻辑名type:指定result类型,不同类型的result代表了不同类型的结果输出

    34,result映射配置小记

    绝对路径以斜杠(/)开头,相对于当前的Web应用程序的上下文路径;相对路径不以斜杠(/)开头,相对于当前执行的action路径。

    35,struts2中预定义的结果类型:

    (1)dispatcher:用于web资源的集成,包括jsp的集成

    (2)redirect:用于重定向到另外的URL(WEB资源)

    (3)redirectAction:用于定向到另外的action映射

    .......

    36,dispatcher结果类型

    有两个属性:location和parse。可通过struts.xml配置文件中的result元素的param子元素来设置。其中location参数用于指定action执行完毕后要转向的目标资源,parse属性是一个布尔类型的值,如果为true,则解析location参数中的OGNL表达式。

    37,全局结果

    全局结果在包中定义,在这个包中的所有action可以共享结果。全局结果也是使用result元素来配置,只不过不是在aciton元素中嵌套,而是在global-results元素中嵌套。

    38,动态结果

    动态结果:在配置时不知道要执行哪一个结果,在运行时刻才能确定执行的结果

    ${属性名}

    39,异常处理

    在struts.xml文件中配置异常映射,将一种异常类型和一个结果对应起来,由这个结果负责对异常作出响应。如果Action的方法在执行期间抛出一个异常,这个异常会被框架自动捕获,然后框架根据配置文件中的异常映射,找到预定义的结果来对异常作出响应。

    异常映射拦截器已经配置好,剩下的工作就是使用exception-mapping元素来配置异常映射,将异常类型映射到指定的结果。exception-mapping有两个属性:exception和result。前者指定一个异常类型的完整类名,后者指定对该类型进行处理的结果的名字。

    相关文章

      网友评论

          本文标题:Struts2框架介绍

          本文链接:https://www.haomeiwen.com/subject/qdjolxtx.html