Struts2框架简单入门

article/2025/8/16 13:13:02

Struts2框架简单入门

  • 1、前言
  • 2、Struts2简介
    • 2.1、Struts2介绍
    • 2.2、Struts2优缺点
      • 2.2.1、优点
      • 2.2.2、缺点
      • 2.2.3、Struts2获取
  • 3、入门案例
    • 3.1、pom依赖
    • 3.2、web.xml配置
    • 3.3、准备页面
    • 3.4、编写Action控制器
    • 3.5、编写核心配置文件struts.xml
    • 3.6、部署测试
    • 3.6、注意点
    • 3.7、小结

1、前言

因为最近接手了一个老项目,项目使用的是SSH框架,也就是Spring + Struts2 + Hibernate的技术框架,现在主流基本上用的都是SSM(Spring + SpringMVC + Mybatis)的了,只有像一些政府的老项目还是SSH框架,所以遇到了,然后还不会,就只有一个方法:主动学习。于是在b站找了一个视频跟着学,也做了一些简单的笔记,趁着有时间,将笔记整理一下记录到博客,方便以后随时翻阅补充。

2、Struts2简介

2.1、Struts2介绍

Struts2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts1的部分优点,设计出来的新一代的MVC框架。

Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。Struts2不止是Struts1的下一个版本,它是一个完全重写的Struts架构。

WebWork框架开始以Struts框架为基础,其目标是提供一个加强和改进框架Struts来使web开发的开发人员更加容易。

关于MVC:

M(Model)—> 模型(JavaBean类)
V(View)—> 视图(JSP,HTML)
C(Controller)—> 控制器(Servlet)

2.2、Struts2优缺点

2.2.1、优点

  • 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。
  • 有丰富的tag可以用,Struts的标签库(taglib),如能灵活运用,可大大提高开发效率。
  • 页面导航使系统的脉络更加清晰,通过一个配置文件,可以把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处,尤其是当另一批开发者接手整个项目时,这种优势体现的更加明显。
  • 提供Exception处理机制。
  • 数据库连接池管理。
  • 支持I18N国际化。

2.2.2、缺点

  • 有线程安全问题。

2.2.3、Struts2获取

官网地址:https://struts.apache.org/download.cgi。

3、入门案例

新建一个maven工程,包含webapp目录,如下结构:
在这里插入图片描述

3.1、pom依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ycz</groupId><artifactId>struts01</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><!-- struts2核心依赖 --><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.5.22</version></dependency></dependencies></project>

只加了一个struts2的核心依赖。由于里面有依赖关系,最终加载进来的jar包如下:
在这里插入图片描述
各个jar包的说明:

  • struts2-core-2.5.22.jar:struts2框架的核心类库。
  • freemarker-2.3.28.jar:struts2的标签模板使用类库。
  • ognl-3.1.26.jar:struts2使用的一种表达式语言类库
  • javassist-3.20.0-GA.jar:对字节码进行处理的类库。
  • log4j-api-2.12.1.jar:log4j日志相关类库。
  • commons-fileupload-1.4.jar:文件上传需要的类库。
  • commons-io-2.6.jar:Java lo的扩展类库。
  • commons-lang3-3.8.1.jar:包含了一些数据类型的工具类。

引入struts2-core核心依赖后,最终会加进来8个jar包,如上所示。

3.2、web.xml配置

web.xml中需要配置struts2的核心过滤器:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><display-name>struts01</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- struts02核心过滤器配置 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

3.3、准备页面

webapp下新建index.jsp和show.jsp页面,页面内容如下。

index.jsp内容:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body><form action="hello.action" method="post"><div><label>用户名:</label><input type="text" name="userName" /></div><div><input  type="submit"  value="提交" /></div></form>
</body>
</html>

show.jsp如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>姓名:${userName}
</body>
</html>

3.4、编写Action控制器

action控制器是struts2的核心。新建一个HelloAction类,实现Action接口,内容如下:

/**   * @ClassName:  HelloAction   * @Description:TODO(描述这个类的作用)   * @author: yanchengzhi* @date:   2022年12月22日 上午10:33:30      * @Copyright:  */
public class HelloAction implements Action {// 与前端页面input中的name保持一致,并提供get和set方法,可以接收参数private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}@Overridepublic String execute() throws Exception {System.out.println("前端传过来的名字:" + userName);return "success";}}

3.5、编写核心配置文件struts.xml

struts.xml是struts2框架的核心配置文件,这个文件必须命名为struts.xml,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><package name="default" extends="struts-default" namespace="/"><action name="hello" class="com.ycz.struts01.action.HelloAction"><result name="success">/show.jsp</result></action></package></struts>

一些标签和属性说明:

  • package标签:该标签配置控制器的包结构。name属性自定义,必须保证唯一,用于区分package。extends属性表示继承某个package,其中struts-default是struts2框架的核心,一般继承这个。namespace属性表示命名空间,默认为根目录。
  • action标签:配置访问请求。name属性配置访问路径,比如页面表单中action配置的为hello.action,那么这里的name值应为hello(不包含action后缀)。class属性表明访问该路径需要执行的action控制器。
  • result标签:配置返回的页面。name属性的值可自定义,但是必须与控制器中execute()方法的返回逻辑字符串保持一致,然后里面配置页面路径。

3.6、部署测试

启动Tomcat容器,访问http://localhost:8081/struts01/。
在这里插入图片描述
输入任意内容,点击提交:
在这里插入图片描述
在这里插入图片描述
可以看到提交成功后,跳转到了show.jsp页面,并且上面的url发生了改变,说明请求是经过了action控制器的,再看控制台:
在这里插入图片描述
输出没问题,结果正确。

3.6、注意点

在JSP页面中输出结果的方式有两种,如下:

  • 使用EL表达式,如:${userName}。
  • 使用struts2标签。如:<s:property value="userName" />

上面show.jsp页面中的${userName}可以替换:
在这里插入图片描述
使用标签之前需要先引入标签库,这点类似于jstl标签。

3.7、小结

使用Struts2开发的基本步骤如下:

  • 配置pom加载Struts2核心类库
  • 配置web.xml文件
  • 开发视图层页面
  • 开发控制层Action
  • 配置struts.xml文件
  • 部署、运行项目

http://chatgpt.dhexx.cn/article/fgrvUDZX.shtml

相关文章

数学符号的各种含义

类型符号数学理论 类型符号 类型代表符号符号说明整数Z自然数N实数R实数讲解正整数N或N*负数N-有理数Q有理数的讲解范数范数的讲解Sgn函数Sgn数学上的符号函数或者计算机语言中的返回函数。详细 数学理论 类型代表符号符号说明收敛性收敛性讲解线性代数线性代数理论&#xff0…

数学常识--数学符号常识

目录 1、科学计数法中的E 2、自然指数e 3、连加符号 4、连乘符号 1、科学计数法中的E 在科学计数法中&#xff0c;E一般用来表示期望&#xff0c;可以用带“E”的格式表示。 E 表示将前面的数字乘以 10 的 n 次幂。 1.23E10&#xff0c;即 1.23 乘以 10 的 5 次幂 123000…

数学符号3

20220730 矩阵求和符号放在最外面和分别乘到里面的每一项&#xff0c;都是一样的 20220602 下面的式子拆成上面两部分,就好理解了 maxD 部分 表示 左边的左项&#xff0c;生成器给定的情况下&#xff0c;判别器给出的值越大越好&#xff0c;越认为其为真实图像 1 越好。 z ~…

常用数学符号的英文读法

&#xff08;一&#xff09; 基本运算&#xff08;加减乘除、乘方、开方&#xff09; 1.加法 相关符号&#xff1a; 举例&#xff1a; 1 2 3 augend addend sum 相关词汇&#xff1a;addition 加法、plus sign 加号、plus symbol 加号、augend 被加数、addend 加数、su…

母版页的工作原理

ASP.NET 母版页概述 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页&#xff08;或一组页&#xff09;定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时&#xff0c;这些内容页与母版页…

母版页(布局页)视图

MVC教程八&#xff1a;母版页(布局页)视图 一、母版页介绍和使用 母版页的扩展名为".cshtml"&#xff0c;也叫做视图布局页&#xff0c;它相当于网页的模板。在其他网页中&#xff0c;只要引用了母版页&#xff0c;母版页的页面内容就可以自动显示出来&#xff0c;…

VS2019 asp.net母版页布局的创建与使用

asp.net母版页布局使用 工具 Visual Studio 2019 方法/步骤 1.打开Visual Studio 2019&#xff0c;点击【文件】在网站根目录上单击右键&#xff0c;选择【添加新项】 2.在弹出的【添加新项】选择【母版页】默认使用名称&#xff0c;点击【添加】 打开母版页的拆分界面&#…

ASP.NET中的母版页

何为母版页,顾名思义母版就是模版,就像在PPT里面的板式或主题一样,大框架已经有了,我们的任务就是向里面添加具体的内容。这样我们制作的所有幻灯片的外观大体都是一样的。 在ASP.NET中母版页有两种作用,一是提高代码的复用(把相同的代码抽出来),二是使整个网站…

母版页的详细使用介绍

ASP.NET 母版页概述 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页&#xff08;或一组页&#xff09;定义所需的外观和标准行为。然后可以创建包含要显示的内容的各个内容页。当用户请求内容页时&#xff0c;这些内容页与母版页…

ASP.NET 母版页(嵌套、访问母版页的控件和属性)

文章目录 [toc]一、母版页的嵌套二、访问母版页的控件和属性1、使用Master.FindControl()方法访问母版页上的控件2、引用MasterType指令访问母版页上的属性 友情链接&#xff1a;母版页的概述与创建 一、母版页的嵌套 嵌套就是大的容器套装小的容器。嵌套母版页就是指创建一个…

C# 母版页页面导航

C# 母版页&页面导航 母版页master页面导航站点地图SiteMapDataSource控件TreeView控件Menu控件 ASP.NET常用对象Response对象Request对象ViewState对象Server对象Session对象Cookie对象ApplicationResponse对象 母版页master localhost:50194 第一种情况&#xff1a;在he…

C#母版页

一、母版页的使用 1、概述 母版页为具有扩展名.master的ASP.NET文件&#xff0c;它具有包括静态文本、HTML元素和服务器控件的预定义布局。母版页由特殊的master指令识别&#xff0c;该指令替代普通页面.aspx中的page指令。该指令类看起来类似下面的代码&#xff1a; <% M…

html如何转换为母版页,如何在模板中指定/或取消母版页

很多时候模板中我们需要用到不同的母版页&#xff0c;那么如何在模板中引用不同母版页呢&#xff1f; 方法1、_ViewStart.cshtml中声明&#xff0c;代码如下&#xff1a;{ Layout "_Layout.cshtml"; } 模板Views目录中默认有一个全局的_ViewStart.cshtml文件&#xf…

ASP.NET 母版页

母版页 母版页的功能为提高工作效率、降低开发和维护强度。母版页应用于网站标志、广告条、导航条、版权声明等内容。 创建母版页的步骤&#xff1a; 第一步&#xff1a;打开“Microsoft Visual Studio 2010”程序&#xff0c;选择“文件”—“新建”—“项目”&#xff0c;弹…

asp.net-母版页设计

先引入几个图片&#xff1a; 母版页的.aspx代码如下&#xff1a; <% Master Language"C#" AutoEventWireup"true" CodeFile"A_TEST.master.cs" Inherits"A_TEST" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans…

html中创建母版页,自定义“我的网站”母版页

使用内容占位符控件 母版页和内容页使用一组可替换区域(也称内容占位符控件)协同工作。 每个内容占位符(在页面代码中显示为 ContentPlaceHolder)均表示可在母版页上覆盖的内容。 网站上的任何页面均可通过提供匹配的内容控件替换内容占位符中包含的任何内容。 该内容控件甚至可…

ASP.NET 母版页,内容页之间如何传参数

ASP.NET 母版页,内容页之间如何传参数 绪论:本文介绍如何使用.net 母版页(.master)和内容页(.aspx)相互传参数 母版页传值到内容页 上面可以看见母版页的时间值已经到了内容页上面了&#xff0c;那么让我们一起来看看代码怎么实现的吧&#xff01; 来看看母版页的内容代码 从…

母版页和内容页的使用

虽然母版页和内容页功能强大&#xff0c;但是其创建和应用过程并不复杂。本节和下一节将以创建如图 1 所示示例为例&#xff0c;向读者详细介绍&#xff0c;使用 Visual Stuido 2005 创建母版页和内容页的方法以及相关知识。本节的重点是创建母版页的方法。 母版页中包含的…

VS2012 ASP.NET 母版页的创建与使用

在做牛腩新闻发布系统的过程中,需要使用ASP.NET的母版页来抽出所有网页的公共部分,以便更好的复用自己的网页布局和设计. 首先我们来看如何创建一个新的母版页,如下图所示: 添加之后,如下图所示: 编写完母版页之后,在使用的时候,问题出现了,在新建Web窗体时,右下角没有视频里讲…

ASP.NET母版页

4.2母版页 4.2.1 母版页概述 用户在设计网站时经常会遇到多个网页部分内容相同的情况&#xff0c;例如&#xff1a;具有网关和内容都相同的标题栏、页脚栏、导航栏等&#xff0c;如果每个网页都设计一次&#xff0c;不仅重复劳动而且非常繁琐&#xff0c;此时&#xff0c;使用母…