什么是Struts2
Struts2是一个为企业级应用打造的优秀的、可扩展的WEB框架,它提供了WEB应用程序开发过程中常见问题的解决方案。
Struts 2 框架的功能
1.POJO 表单和 POJO 动作 - Struts 2 已经去掉了原先是 Struts 框架的一个组成部分的动作表单,利用 Struts 2,你可以使用任何 POJO 来接收表单的输入。同样,你现在可以看到任何作为 Action 类的 POJO。
2.标签支持 - Struts 2 已经改进了表单标签和新标签允许开发人员编写更少的代码。
3.AJAX 支持- Struts 2 已经确认由 Web2.0 技术接管,并且通过创建 AJAX 标签把 AJAX 支持集成到产品中,AJAX 标签的功能非常类似于标准 Struts 2 标签的功能。
4.易于整合 - 与其他框架如 Spring 一起集成,Tiles 和 SiteMesh 是现在更容易使用各种各样有效的使用 Struts 2 的集成。
5.模板支持 - 支持使用模板生成视图。
6.插件支持 - 核心 Struts 2 的特性可以使用插件得到提高和增强。大量的插件对于 Struts 2 来说是可用的。
7.配置 - Struts 2 提供了集成配置来调试和配置应用程序。除此之外,Struts 还在内置调试工具的帮助下提供了集成调试。
8.易于修改标签 - Struts 2 的标签标记可以使用 Freemarker 模板进行调整。这并不需要 JSP 或 Java 知识。基础的 HTML,XML 和 CSS 知识是足够修改标签的。
9.提升较少的配置 - Struts 2 在使用各种设置的默认值的帮助下促进较少的配置。你不需要配置,除非它偏离 Struts 2 设定的默认设置。
10.视图技术 - Struts 2 大力支持多个视图选项(JSP,Freemarker,Velocity 和 XSLT)
如何使用Struts2
1.导入核心架包,打开你下载的Struts2压缩文件,里面有一个apps文件夹,打开struts2-blank.war文件,找到lib文件夹就可以了。
2.在web.xml中使用配置过滤器
注:
- 浏览器发送请求,全部都是经过Struts2的过滤器,这个过滤器作为控制器。
- 当提交数据的时,表单中的数据将被直接映射到一个POJO中。
- Struts2中的验证逻辑编写在Action中。
- Struts2中任何一个POJO都可以是一个一个Action类,就算不继承自Action类,只需要写指定当方法就可以。
- Struts2在页面使用OGNL来现实各种对象模型,可以不在使用EL和JSTL。
struts2的执行流程
登陆例子
第一步:浏览器发送请求到Tomcat,根据URL路径,会找到指定的项目,因为Tomcat会部署很多项目。
第二步:Tomcat会读取指定项目中的web.xml文件,我们在web.xml文件中配置了,Struts2的过滤器StrutsPrepareAndExecuteFilter,也就是说我们的所有请求都会被这个过滤器拦截。
第三步:过滤器会根据你的URL和struts.xml的配置文件来执行指定的Action中的validate()方法和execute()方法(都是默认执行)。
注:1.validate()方法是用来做数据验证(与Struts2标签一起使用),execute()方法会调用其他方法,例如用户登陆方法。
2.如果你的URL后没有写.action,则会自动添加.action。
第四步:会根据execute()方法的返回值字符串,到strust.xml配置文件中的Action中找到result所指定的URL路径来跳转页面。
流程图中核心控制器指的就是StrutsPrepareAndExecuteFilter
MVC设计模式概览
实现MVC模式的应用由三大部分构成
- 模型(Model):封装应用程序的数据和业务逻辑,POJO(Plain Oid Java Object),就是一个最简单的Java类。
- 视图(View):实现应用程序信息的现实功能,jsp。
- 控制器(Controller):接受来自用户的数据,调用模型层,响应对应的视图组件,Servlet、Filter。
之前我们开发JavaWeb程序的时候后,是使用以下方式进行
使用这种方式,当我们获取参数的时候使用servletRequest.getParameter(),获取后做类型转换,有几个参数需要写几次。但是使用Struts2框架,将一个类继承自ActionSupport,在类中填入与表单中一样的名称,就可以一一对应。