Struts2之路


struts2是一个web框架,框架提高了程序的规范的同时,也约束了程序员的自由

为什么会有struts2?
因为我们对mvc的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展/效率/可读性...所以我们有必要用一个统一的规范来开发项目->框架

struts2具有以下的优点:
1>在软件设计的时候struts2并不像struts1那样和servletAPI和strutsAPI有着紧密的联系,struts2开发的应用可以完全不依赖这两个API。(struts2属于无侵入设计,struts1属于侵入式设计)
2>它提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能
3>它提供了类型转换器,可以把特殊的请求参数转化成需要的类型(如果是struts1,就必须向struts1底层实现BeanUtil注册类型转化器才行)
4>它提供了支持多种表现层技术(JSP、freeMarker、 Velocity等)
5>它的输入校验可以对指定方法进行校验,解决struts1长久之痛
6>提供了全局范围、包范围和Action范围的国际化资源文件管理实现


struts2框架使用包来管理Action,包的作用和java中的类包很相似,主要用于管理一组业务功能相关的action。实际应用时,我们最好把业务相关的action放在同一个包下

配置包时必须制定name属性,该name属性可以任意取名,但必须唯一,他不对应java的类包,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该包的命名空间,命名空间作为访问该包底下action的路径的一部分(该属性可以不配置,若不配置,则默认为空字符串)

通常每个包都要继承struts-default包,因为Struts2很多核心的功能都是通过拦截器来实现

动作主要有三个作用:
1>给请求封装需要做的实际工作
2>作为请求到视图这个过程中的数据携带者
3>帮助框架决定结果应该呈现请求响应的视图

Struts2动作不必实现Action接口。任何对象都可以通过实现一个返回控制字符串的execute()方法来非正式地实现框架之间的契约

struts2提供了很多结果类型。常用的有:dispatcher(这个是默认的,内部请求转发)、redirect(重定向到某个路径)、redirectAction(重定向到某个Action)、plainText(原样输出代码).

全局视图:同一个包下的都可以访问。如果希望所有包都可以访问全局视图的话,就将全局视图定义到一个单独的包中,然后让所有的包都继承该包

当数据经常发生变化是可以通过依赖注入到xml文件中
<action name="list" class="cn.itcast.action.HelloWorldAction" method="execute">
<param name="savepath">/images</param>
<result name="success">/WEB-INF/page/message.jsp</result>
 </action>

设置需要struts2处理的请求后缀
<constantname="struts.action.extension"value="do"/>


动态方法调用和使用通配符定义action




接收请求参数


struts2有两种类型转换器
局部
全局

在struts2中,可以实现对action的所有方法进行校验或者对action的指定方法进行校验

对于输入校验struts2提供了两种实现方法:
1、采用手工编写代码实现
2、基于xml配置方式实现


















































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏洛克·林

有钱的捧个钱💰场或人场~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值