Struts2详解

   struts2框架是SSH框架集中的框架之一,是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器层(Controller)来建立模型与视图的数据交互。

  在使用struts2框架的过程中,需要两个配置文件,分别为web.xml和struts.xml,服务器一启动就加载web.xml的配置,web.xml启动时,在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作;struts2读取到struts.xml后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件。

一、访问流程:

(1)客户端提交请求

(2)请求被提交到一系列过滤器(先ActionContentCleanUp,然后其他过滤器,最后FilterDispatcher)

(3)FilterDispatcher咨询ActionMapper是否需要调用某个Action来处理这个请求,如果ActionMapper决定调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

(4)ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。

(5)ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)

(6)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result

二、struts.xml的文件组成

1、XML 头部声明为<?xml version="1.0" encoding="UTF-8"?>

2、DTD约束文件<!DOCTYPE struts PUBLIC

"-//Apache Software undation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

DTD文件是一种保证xml文档格式正确的有效方法,通过比较xml文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。

3、struts 根标签

4、devMode 开发模式 <constant name="struts.devMode" value="true" />当value的值为false的时候,就不是开发模式,修改struts.xml文件之后运行项目需要重启服务器;当value的值为true时,为开发模式,修改struts.xml文件之后运行项目不需要重启服务器就能运行,并且可进行调试信息输出。

5、package 包配置

struts2框架使用包来管理Action和拦截器等。每个包就是多个Action、多个拦截器、多个拦截器引用的集合。每个package元素定义了一个包配置。常用属性有:

name:必填属性,指定包名;extends可选属性,指定该包继承其他包;namespace:可选属性,用来制定该包的命名空间。考虑到同一个Web应用中需要同名的Action,struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。

一般来说,package的使用按照项目的功能模块来划分,从而使得项目更有逻辑性。

6、实现action类:struts2中Action是核心内容。struts2中通常直接使用Action来封装HTTP请求参数,因此,Action类里应该包含与请求参数对应的属性,并提供setter,getter方法。action有以下属性:

name:action的名称;class:对应的类的路径;method:调用action中的方法名

action中:——>result 结果,有一下属性:

name:返回值,返回值可以是框架提供的常量(SUCCESS,FINAL,LOGIN,INPUT等),也可以自定义

type:默认不写为请求转发,type=redirect表示“重定向”

result之间的路径表示要跳转的路径。

  struts2的优点:

1、结构更加清晰,地址和类之间的映射都配置在struts.xml中,struts2内部按照MVC设计模式设计,并且作为web开发中MVC设计模式中的Controller层。

2、在操作Action时,可以直接使用参数,不需要考虑request和response,struts2也提供了ServletActionContext对象,通过方法ServletActionContext.getRequest()获得当前请求的对象request(response对象)。

3、Action获得页面bean.属性拼装的实体Bean;页面直接获得Action中的属性。

时间: 2025-01-02 14:55:12

Struts2详解的相关文章

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Struts2学习第三课 Struts2详解

接着上次的课程 这次我们看struts.xml 修改如下:这里是加上命名空间,默认的是不加,我们手动加上时就要在访问时加上命名空间. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts

struts2 详解

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.struts使系统的脉络更加清晰.通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts 2 没有像Struts 1那样跟Servlet API 和 struts API 有着紧密的耦合. Struts 2

Struts2中 Result类型配置详解(转)

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示:public interface Action{    public static final String SUCCESS =

Struts2中 Result类型配置详解

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示: public interface Action {     public static final String SUCCES

struts2.0中Action的对象生命周期详解!!(转)

原文出处:http://blog.csdn.net/wxy_g/article/details/2071662 有很多人问Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if specified, the default object factory can be overridden here ### Note: short-hand notation is

【SSH2(理论篇)】--Struts2配置详解

上篇博客讨论了SSH2框架模型,在开发过程中发现SSH2的开发模型其实类似于经典的三层模式,在每一层中分别添加了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置,数据持久层则采用的是Hibernate,开发模式简单易懂,接下来将会分别从三层着手讨论每一层的运行内容. 一.Struts体系简介 struts,是Apache软件基金会(ASF)赞助的一个开源项目,它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-V

【转】Struts2中的OGNL详解 (1)

 转载声明:菰☆淚 - Struts2中的OGNL详解 首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能. 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的. OGNL上下文实际上就是一个Map对象,由ognl.OgnlCont