关于Struts2

声明:本文部分参考自网络及《Javaweb王者归来》一书
最近这几天学习了一下Struts2,虽然说网上说现在比较流行的SSH/SSM里面已经不包含Struts了,但作为MVC的框架之一,个人觉得学习Struts2还是能加强自己对于MVC的理解以及框架的应用,并且Struts2确实有一些不能被取代的原因。在这篇博客里主要总结一下几点:
1. 为什么要用Struts2
2. Struts2的开发过程
3. Struts2的工作流程
4. Struts2开发注意点

1. 为什么要用Struts2

试想现在你要自定义一个MVC框架,假设以基本的网站注册、登陆为例,那么你的开发步骤将会是什么?
这里写图片描述

在传统的MVC开发中,jsp跳转的代码是固定对应的,每次都去写servlet并在web.xml中配置。这正是由于在Struts2简单入门示例中提到的:传统开发中是jsp触发action然后servlet接受action交给了class后台处理,后台class跳转到其他的jsp,实现数据展现。
那么使用Struts2有哪些优势呢?
Struts2的重点之一在于它也提供了面向切面编程(AOP)的机制,即它的拦截器。Struts2的拦截器类似于Filter,在执行Action的前后执行。并且多个拦截器按配置顺序依次执行。这样一来省去了我们开发过程中自己编写Filter的过程,Struts2直接拦截了由jsp触发的action请求,并调用后台action,action返回的结果可以由图示中不同的jsp来展现。即,对控制层做了很好的优化。除此之外Struts2框架预先实现了一些功能: 请求数据自动封装、文件上传的功能、 对国际化功能的简化、 数据效验功能等。

2. Struts2开发流程

Struts2开发流程可以总结为:
引入JAR包—配置web.xml—开发action—配置struts.xml
这里需要强调有两点:
1) Tomcat启动时会加载自己的web.xml然后再加载所有部署项目的web.xml,我们需要在web.xml中引入拦截器已完成Struts的初始化;
2) Action类一般继承自ActionSupport接口,但也可以实现Action接口或者不继承任何类和实现任何的接口,比如一般的POJO.但是Action中必须有public String excute(),即权限必须为public,返回值必须为String.另外每次访问Action时,Struts2都会创建一个action实例故是线程安全的弥补了Servlet的不足。

3. Struts2工作流程

主要从准备阶段和工作阶段两部分总结:
服务器启动阶段: 这里写图片描述
在服务器启动的过程中执行filter的init()方法时会加载properties及xml文件,,xml文件具体有:struts-default.xml(核心功能文件初始化)、struts-plugins.xml(struts相关插件)以及struts.xml(用户编写的相关配置文件)。
具体的工作阶段: 这里写图片描述

4. 开发注意点

这部分主要列举了我在看Struts2时注意到几点:
1) Struts2在读取到struts.xml的内容后是将内容封装进javabean对象然后存放到内存中以后用户的每次请求处理将使用内存中的数据而不是每次请求都读取struts.xml
2) 使用全部视图标签配置时要注意Struts2在查找是的访问顺序为先访问局部再访问全部,即局部具有优先权
3) 抽象的package中不能有action,一般只有当前包被其他包继承时才需要设置abstract=true
4) Action的实现方式有三种上文已提到,但若使用数据校验功能则需继承自ActionSupport类
5) action的方法必须用public修饰,返回值类型必须为String
6) 子配置文件只有在总配置文件中include才会被加载
7) 在下载时通过URL为get方式需要解决中文乱码的问题:
Filename= new String(filename.getBytes(“ISO8859-1”),”UTF-8”)

目前自己了解的如上所述,如有错误,欢迎伙伴们反馈哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值