1.概述:
(1)什么是Struts2的框架
* Struts2是Struts1的下一代产品,是在 struts1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
* Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
(2) 常见的Web层的框架
* Struts1
* Struts2
* Webwork
* SpringMVC(潮流框架)
(3)Web层框架的特点
* 都是一个特点,前端控制器模式
* 记住:前端控制器(核心的控制器)
* Struts2框架前端的控制器就是过滤器
2.接下来,进行Struts2项目的环境配置;首先,必须先导入开发所需jar包;网盘链接:https://pan.baidu.com/s/15Wk_nTBogCMrZXIhWZAWeA 密码:brni
(如果链接失效请留言,我会及时更新)
解压后可以看到其中的目录如下:
目录说明如下:
* apps -- Struts2框架提供了一些应用
* libs -- Struts2框架开发的jar包
* docs -- Struts2框架开发文档
* src -- Struts2框架源码
接下来便是在工程中引入jar包了; Struts2框架的开发jar包非常多,但是不是所有都是必须要引入的,有一些必须要导入的jar包,这些jar包可以从Struts2框架提供的应用中找到。大家可以打开apps目录,然后找到struts2-blank.war应用。war包和zip包的压缩格式是一样的,所以可以自己修改后缀名war为zip,解压。 找到解压后的应用,打开WEB-INF/lib目录下所有的jar包。复制到项目工程中的WEB-INF/lib下,就可以了。
3.前面提及,Struts2的特点是前端控制器模式;因此需要先配置Struts2的前端控制器,注意:这一步是必须要做的操作,这是Struts2核心的控制器。Struts2的前端控制器就是一个过滤器,那么过滤器相关知识咱们都学习过,需要在web.xml中进行配置。
前端控制器的类的路径和名称:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
web.xml文件具体配置如下:
<!-- 配置Struts2 核心控制器 (过滤器)-->
<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类是动作类,是Struts2处理请求,封装数据,响应页面的核心控制器。需要自己编写。
package com.action;
public String sayHello(){
System.out.println("Hello Struts2!!");
return null;
}
5.然后便是Struts2核心配置文件的编写了。注意:配置文件名称是struts.xml(名称必须是struts.xml);在src下引入struts.xml配置文件(配置文件的路径必须是在src的目录下);具体配置如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="com.action" method="sayHello">
</action>
<!-- 配置跳转页面 -->
<result name="success">/result.jsp</result>
<result name="error">/index.jsp</result>
</package>
</struts>
6.最后,便是测试了;前端表单提交方式
<form name="form1" action="/Struts2Test/hello.action" method="post">
超链接方式:
<a href="${ pageContext.request.contextPath }/hello.action">潜力股的博客</a>
7.最后的最后,让我们来深刻理解一波Struts2的执行流程。。。。。。在前端页面,当我们点击超链接时,请求就会发送到服务器端;首先经过Struts2的核心过滤器(StrutsPrepareAndExecuteFilter),也即是一系列的拦截器,拦截器完成后,会根据struts.xml的配置文件找到请求路径,找到具体的类,通过反射的方式让方法执行。
最后返回字符串到达结果页面(result),执行页面的跳转。