侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Struts2(1)之快速入门

zze
zze
2017-08-06 / 0 评论 / 0 点赞 / 509 阅读 / 3219 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

简介

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,运行:

image.png

执行流程分析

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、浏览器接收、渲染。

image.png

0

评论区