简介
Struts2 是一个基于 MVC 设计模式的 Web 应用框架,它本质上相当于一个 servlet,在 MVC 设计模式中,Struts2 作为控制器 (Controller) 来建立模型与视图的数据交互。
Struts2 是 Struts1 的下一代产品,是在 struts1和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。其全新的 Struts2 的体系结构与 Struts1 的体系结构差别巨大。
Struts2 以 WebWork 为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以 Struts2 可以理解为 WebWork 的更新产品。
虽然从 Struts1到 Struts2 有着太大的变化,但是相对于 WebWork,Struts2 的变化很小。
关注文章首部微信公众号发送 #29_struts2_2.3.37
获取 Struts2 开发资源包。
快速开始
Hello Struts2
1、编写 Action 类:
// com.zze.action.HelloAction
package com.zze.action;
public class HelloAction {
public String execute() {
System.out.println("hello Struts 2");
return "hello";
}
}
2、新建要跳转到的 JSP 页:
<!-- WEB-INF/hello.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h3>hello Struts2</h3>
</body>
</html>
3、在 src
下新建如下配置文件:
<!-- struts.xml -->
<?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>
<!--配置 Strut 2 的包-->
<package name="test1" extends="struts-default" namespace="/">
<!--配置 Action-->
<action name="hello" class="com.zze.action.HelloAction">
<result name="hello">/WEB-INF/hello.jsp</result>
</action>
</package>
</struts>
4、在 web.xml
中配置核心过滤器:
<!-- web.xml -->
<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>
5、部署到 Tomcat,运行:
执行流程分析
1、首先浏览器请求 localhost:8080/hello
。
2、在 web.xml
中配置的核心过滤器会拦截到请求。
3、拦截器会解析 url,在 struts.xml
中根据 package
标签上的 namespace
属性和 action
标签上的 name
找到对应请求路径的 action
。
4、执行对应 action
标签对应 Action 类对象的 execute
方法。
5、execute
方法返回字符串,这个字符串与 action
标签下的 result
标签的 name
匹配。
6、返回匹配到的 result
标签中定义的路径对应的 JSP 页面。
7、浏览器接收、渲染。
评论区