Struts概述

本文介绍了Struts2作为MVC模式Web层框架的核心概念及其实现原理,详细讲解了Struts2如何处理用户输入、调用业务逻辑以及响应输出的过程。同时提供了基于Struts2开发应用程序的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 谈谈你对Struts 2的理解?
Struts 2是实现MVC模式的Web层框架。基于WebWork核心,并具有Struts1的一些优点。主要实现的是控制器部分的功能,可以和多种页面技术(完成视图功能)配合使用。
2、 在MVC中控制器的主要功能有哪些?
     协调输入、输出和模型之间的关系。从输入界面获取输入信息(通过request.getParameter方法),根据请求选择调用模型的业务方法,执行完之后,如果需要把结果传递给输出界面,可以把信息保存在request中或者session中(setAttribute方法),根据调用模型的结果,选择界面对用户进行响应。
3、 Struts2是如何实现MVC的控制器呢?
Struts2的控制器包括中心控制器、struts.xml和用户编写的Action。中心控制器是框架提供的,只需要在web.xml进行配置一次即可。用户在实现功能的时候,需要编写每个功能对应的Action(多个功能可以对应一个Action),然后在struts.xml中进行配置。
如何实现MVC的控制其功能:
从输入界面接收输入信息:该功能由框架完成,用户需要做的是Action中编写和输入界面中输入元素对应的属性,并提供set方法。框架从request中获取输入值,然后通过Actionset方法对属性赋值。
选择调用业务方法,每个业务方法通常对应一个Action(通常是Action的一个方法),界面发送的请求与具体的Action的对应关系是在struts.xml中进行配置的。
把值从控制器传递到界面,用户需要在Action提供相应的属性,并且提供get方法,具体的传值过程是由框架完成的。
如何响应?在Action中调用业务方法之后,方法返回一个表示输出界面的字符串,在配置文件struts.xml中配置表示界面的字符串具体对应哪个输出界面。具体的响应过程由框架来完成。
4、 具体使用Struts2框架开发应用的过程?
第一步:创建Web工程
第二步:引入Struts的类库,核心的类库有ognl.jarfreemarker.jarstruts2-core.jarwebwork.jarcommon-logging,这些类库最终都应该在web-inf/lib下面。
第三步:在web.xml中声明中心控制器。
       <filter>
              <filter-name>struts2</filter-name>
              <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
       </filter>
 
       <filter-mapping>
              <filter-name>struts2</filter-name>
              <url-pattern>/*</url-pattern>
       </filter-mapping>
通过这样的配置,所有的请求都会发送给中心控制器。
第四步:在工程中创建struts2的配置文件struts.xml。配置我们编写的每个Action,还有请求与Action对应关系,执行结果(字符串)与响应界面的对应关系。一般从其他地方拷贝,不要自己写。
第五步:编写Action,配置Action。在开发过程中主要是这一步。
5、 如何编写Action
Action类可以是普通的类,可以是实现Action接口的类,可以是继承ActionSupport的类。Action接口是execute方法和几个常量,通常不使用。ActionSupport实现了Action接口,并且封装了对国际化和验证的支持,如果项目需要使用验证和国际化等功能,可以继承该类。
Action类中的方法(控制方法),方法的返回值是字符串,是逻辑名字,表示某个输出界面。方法没有参数。对应每个请求都应该有这样一个方法。
为了获取输入信息,需要定义与输入元素名字相同的成员变量,并提供set方法。为了输出,需要编写成员变量来表示这些输出信息(在控制方法中对成员变量赋值),并提供get方法供框架调用。
6、 如何配置Action
struts.xml中配置。主要包括两部分:请求与具体的Action的方法的对应关系;Action中的控制方法返回的字符串与具体的响应界面的对应关系。
请求与Action方法的对应关系:
²        <action name="login" class="action.UserAction" method="login">
name指出请求的名字,class指出Action类的名字,method指出方法的名字
²        <action name="login" class="action.UserAction">
如果没有指定method方法,默认找Action中的execute方法
²        也可以在请求中指定方法的名字
login!login.action,“!”之前是请求的名字,“!”之后是方法的名字,这样在配置的时候就可以不指定方法的名字。
执行结果的配置:
<result name="success">/success.jsp</result>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值