一、Struts2介绍
1.概念:轻量级的MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。低侵入性,与业务代码的耦合度很低。Struts2实现了MVC,并提供了一系列API,采用模式化方式简化业务开发过程。
2.与Servlet对比
优点:业务代码解耦,提高开发效率
缺点:执行效率偏低,需要使用反射、解析XML等技术手段,结构复杂
二、架构图
先了解架构原理,才能更好的深入和运用。
第一步:请求action,那么就会经过StrutsPrepareAndExecuteFilter,这里会做两件事情,就是下面的两步
第二步:通过ActionMapping将请求中的各种数据封装起来,拿到请求中的各种参数数据,比如我们的action的名称Hello
第三步:给自己找一个代理对象ActionProxy,来帮助我们处理事情。注意,这个ActionProxy实际上不做任何实事的,而是指挥别人做。
第四步:ActionProxy叫ConfigManager获取struts.xml中的各种配置信息,其中struts.xml就有action的类全限定类名等信息,这样就可以通过action的名字找到其位置了。
第五步:有了actionMapping获取的请求数据和ConfigManager获取的struts.xml中的数据,就叫ActionInvacation来查找对应的action了
第六步:在找到action之前会经过一系列的拦截器,struts内部默认实现的。找到action后,就相当于我们的servlet,在其中执行一些业务代码,然后跳转到目标页面,响应回去。struts的整个过程即结束了。
三、搭建项目试试
1.进入Struts2官网:http://struts.apache.org/download.cgi ,下载Struts2的All包:
(注:现最新版本为2.5.17)
2.导入jar包到项目中
3.在web.xml中配置过滤器
<!-- StrutsPrepareAndExecuteFilter 核心过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.核心Action类。
Action类可以有三种不同的类型
1、普通类,POJO,什么接口也不实现,什么类也不继承
2、实现Action接口
3、继承ActionSupport类。
5.配置struts.xml
将 struts.xml文件复制到项目的资源包中,如图:
6.在对应跳转页面jsp文件顶部标签加入可识别Struts标签
<!-- Struts便签 -->
<%@ taglib url="/struts-tags" prefix="s"%>
7.测试
在tomcat中的service.xml文件修改文件项目路径,并在浏览器中运行
新手尝试,不喜勿喷。希望大家多多指正~