Struts2入门

article/2025/8/16 5:28:18

本文章为大家介绍以下用IDEA开发工具创建Maven项目使用Struts2框架,对方法的调用和参数赋值,即前后端的数据交互有所介绍。

目录

Struts2框架

2、使用Sturts2

3、子控制器类方法的调用

4、参数赋值

5、与J2EE容器交互

非注入

  注入(实现接口为注入方式)            

总结:

6、经典错误


Struts2框架

Struts2 是基于MVC设计模式的web应用程序框架,最初是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。

模型(Model)-视图(View)-控制器(Controller),通常简称MVC,是一种开发web应用程序的软件设计模式。该软件设计模式由以下三部分组成:  

模型——属于软件设计模式的底层基础,模型主要负责管理应用程序的数据,它通过响应视图的请求和控制器的指令来更新自身的数据。  
视图——这部分是负责向用户呈现全部或部分数据,通过控制器的指令触发所展现的一种特殊的数据格式。它们是基于像JSP、ASP、PHP之类模板系统的脚本,较易与AJAX技术进行整合。 
控制器——通过软件代码控制模型和视图之间的交互,控制器负责响应用户输入并执行数据模型对象的交互。控制器在接收、确认输入后执行修改数据模型状态的业务操作

2、使用Sturts2

1、创建MavenWeb(3.0)项目(教程)并配置导入Maven的基本依赖

2、引入Sturts2的所有jar包

        配置pom.xml文件 

<!--struts2--><struts2.version>2.5.13</struts2.version>
<!--struts2--><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts2.version}</version></dependency>

3、配置核心过滤器 作用接收和分发请求        

  <filter><filter-name>struts</filter-name><!-- 此路径为struts2的核心配置文件路径--><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><!--拦截*.action的请求 --><url-pattern>*.action</url-pattern></filter-mapping>

4、建立Struts2的核心配置文件 struts.xml 文件名为框架定义的,不能自定义

     建议struts-base.xml文件,用于配置struts的基本配置

struts-base.xml

<struts><!--启用struts2的开发者模式struts.devMode该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。--><constant name="struts.devMode" value="true"></constant><!--启用struts2配置文件自动加载模式struts.configuration.xml.reload该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。--><constant name="struts.configuration.xml.reload" value="true"></constant><!--继承struts的默认配置文件 默认配置文件路径如下图并设置抽象包--><package name="struts-base" extends="struts-default" abstract="true"><!--启用动态方法调用模式--><global-allowed-methods>regex:.*</global-allowed-methods></package></struts>

默认配置文件路径

以上的xml文件都引入DTD约束,因为我使用的是2.5版本的,所以是2.5的约束

<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">

以上约束复制位置在此找到对应的DTD约束

 看到这个Use the following DOCTYPE 代表使用此约束,只需要复制下面就可以使用此约束,

但是在idea中有可能已经帮我读取到了,在创建xml文件时就给我们加入了DTD约束

 5、建立Action类,再建立对应的Action的xml文件

struts-hellow.xml        -->HellowAction.java

<struts><!--packagename 包名 代表当前配置名字extends 继承namespace 配置空间 默认/  在访问hellowAction的控制器类时,需要在前面加入 http://localhost:8080/项目名/sys/hellowAction_方法名.action--><package name="struts-hellow" namespace="/sys" extends="struts-base"><!-- action节点name代表请求路径名 不要/和后缀 _*动态可变的调用方法名class代表子控制器类全路径名method 代表子控制器类中调用的方法名 默认excute 不写也默认调用此方法--><action name="hellowAction_*" class="struts.action.HelloAction" method="{1}"><!--resultvname 请求结果码注:标签体代表跳转的具体页面的路径--><!-- type 跳转方式  转发 dispatcher  或者在重定向 redirect   (默认转发) --><result  name="success" type="dispatcher">/index.jsp</result></action></package>
</struts>

再把struts-base.xml和struts-hellow.xml导入到核心配置文件struts.xml中

必须先引入struts-base.xml文件

<!--每一个子控制器类单独对应一个xml文件-->
<struts><include file="struts-base.xml"></include><include file="struts-hellow.xml"></include>
</struts>

到这里基本配置已经完成

3、子控制器类方法的调用

1、在struts-base.xml文件的默认配置文件中启用动态方法调用模式,不设置那么方法就固定了,一个子控制器类只可以调用一个方法

<!--启用动态方法调用模式--><global-allowed-methods>regex:.*</global-allowed-methods>

2、在对应的子控制器类设置方法名        struts-hellow.xml

在对应的action的name属性中后面写_*,然后在method={1}

<action name="hellowAction_*" class="struts.action.HelloAction" method="{1}"><!--resultvname 请求结果码注:标签体代表跳转的具体页面的路径--><!-- type 跳转方式  转发 dispatcher  或者在重定向 redirect   (默认转发) --><result  name="success" type="dispatcher">/index.jsp</result></action>

4、参数赋值

1、在子控制器类定义属性,必须提供get/set方法

2、对象属性赋值

        先实现ModelDrive<T>接口,并实现改接口所定义的getModel()方法

        必须先对实体对象进行实例化,不需要给的get/set方法,并在getModel()方法中返回此对象

注:ModelDriven返回实体和Action中属性重名,ModelDriven中优先级更高

5、与J2EE容器交互

在子控制器类中

非注入


                  耦合
              ServletActionContext          

用ServletActionContext拿到两个内置对象
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
request.setAttribute("unam",unam);

        解耦(建立使用解耦模式)
              ActionContext

ActionContext ac = ActionContext.getContext();
Map<String, Object> Map = ac.getContextMap();
//给前端传入数据    
Map.put("unam",unam);

  注入(实现接口为注入方式)
            

                 耦合
              ServletRequestAware/ServletResponseAware

            实现ServletRequestAware和ServletResponseAware接口
         

        再实现两个接口所定义的方法

  定义两个属性public HttpServletRequest req;public HttpServletResponse resp;@Overridepublic void setServletRequest(HttpServletRequest httpServletRequest) {this.req=httpServletRequest;}@Overridepublic void setServletResponse(HttpServletResponse httpServletResponse) {this.resp=httpServletResponse;}req.setAttribute("unam",unam);

     

      解耦

           实现RequestAware接口

           实现此接口定义的方法setReuqest方法

public Map<String, Object> params;@Overridepublic void setRequest(Map<String, Object> map) {this.params=map;}params.put("unam",unam);

总结:

        搭建struts2的运行环境步骤:

               1、配置pom.xml文件导入jar包

                2、配置struts2核心过滤器

                3、配置struts2核心配置文件struts.xml文件     放置于resources目录下

                               struts.xml(注意引入顺序)        struts-base.xml        struts-xxx.xml

                                dtd约束 struts-2.5.dtd   (动态方法配置)

                 4、子控制器类中的默认方法名excute

                        1、在sturts-base.xml中开启动态方法

                        2、在具体的struts-xxx.xml中的action节点中的name属性使用动态方法名

                                例:<action="hellowAction_*" class="" method="{1}">

                        3、调用:http://localhost:8080/xxx/hellowAction_方法名.action

               5、传参和页面跳转

                        传参:

                                1、直接在Action中定义属性,并且提供get、set方法

                                2、实现ModelDriven接口,实体类必须实例化,实现getModel方法

                       页面跳转:

                             <result name="结果码" type="跳转方式(默认转发)" >/login.jsp</result>

                                        

              6、J2EE容器交互

                        注入和非注入

                        耦合和解耦

          

6、经典错误

  此项目的请求路径错误(子控制器类不存在) 

调用方法异常 

代码链接 提取码:b5t8

至此,Struts2入门基本介绍完毕,由于作者水平有限难免有疏漏,欢迎留言纠错。


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

相关文章

Struts2框架实现文件上传

Struts2框架实现文件上传 开发环境系统:Windows10 版本1709JDK:1.8.0_161 32位IDE: Spring Tool Suite 3.7.3 32位Struts2版本:2.3.24服务器版本:apache-tomcat-7.0.52 单文件的上传 环境搭建 导入必要的jar包 必须有commons-fileupload-1.3.1.jar包. 在开发Struts2框架必…

使用Maven搭建Struts2框架(小白)

本文主要是自己在尝试使用Maven搭建Struts2框架,可能个别步骤不太规范,偏小白向,如有错误或不足,还望各位大佬提点。 一、创建Maven项目 1、选择Maven Project 2、选择maven-archetype-webapp 3、填写Group Id、Artifact Id [备注] 创建项目后,可能会出现index.jsp报错提…

Struts2框架搭建

使用Struts2版本为:struts-2.3.16.3 下载地址&#xff1a;http://struts.apache.org/ 一、向web项目中添加struts2依赖库 commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.1.jar commons-logging-1.1.3.jar freemarker-2.3.19.jar javassist-3.11.0.G…

【Struts2】一_idea快速搭建struts2框架

文章目录 什么是SSH框架&#xff1f;Struts2框架1、struts2的环境搭建1.1 创建web项目&#xff08;maven&#xff09;&#xff0c;导入struts2核心jar包1.2 配置web.xml&#xff08;过滤器&#xff09;&#xff0c;是struts2的入口&#xff0c;先进入1.3 创建核心配置文件strut…

Idea 2022 搭建Struts2 框架手把手教程!新鲜出炉!!

目录 介绍 Struts2的发展史 Struts2官网 第一个Struts2程序(Idea) Struts2 介绍 Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相当于一个servlet&#xff0c;在MVC设计模式中&#xff0c;Struts2作为控制器(Controller)来建立模型与视图的数据交互。S…

Struts2框架的基本使用

前面已经介绍过了MVC思想&#xff0c;Struts2是一个优秀的MVC框架&#xff0c;大大降低了各个层之间的耦合度&#xff0c;具有很好的扩展性。从本篇开始我们学习Struts2的基本用法&#xff0c;本篇主要包括以下内容&#xff1a; Struts2的下载安装理解整个框架的运行流程自定义…

手把手教你快速搭建Struts2框架【详细教程,建议收藏】

大家好呀&#xff0c;我是灰小猿&#xff0c;一个超会写BUG的程序猿&#xff01; 今天在这里记录一下在eclipse环境下快速搭建Struts2框架的详细过程。希望对你能有帮助 Struts框架简介 Struts2作为一个Web框架&#xff0c;是以Webwork的设计思想为核心&#xff0c;它吸收…

Struts2框架概述及运行流程

Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相当于一个servlet&#xff0c;在MVC设计模式中&#xff0c;Struts2作为控制器(Controller)来建立模型与视图的数据交互 Struts2struts1webwork 问题:struts2是一个mvc框架&#xff0c;它的mvc是什么? javaweb…

Struts2框架原理

Struts2官网 https://struts.apache.org/ Struts2是一个开源的轻量级的&#xff0c;应用于web层&#xff08;View&#xff09;的框架。 Struts2框架的MVC分别对应&#xff1a; M&#xff1a;JavaBean ModelDriven V&#xff1a;JSP OGNL C&#xff1a;Action Struts2框…

【Struts2】〖登录功能〗Struts2框架实现登录功能

〖登录功能〗Struts2框架实现登录功能 访问登录页面&#xff0c;如果输入的用户名为江河&#xff0c;并且密码为8023&#xff0c;则跳转至登录成功页面&#xff0c;并且将用户名保存在session中&#xff0c;否则则跳转至登录失败页面。 项目结构 Jsp页面 login.jsp <% pag…

第2篇:区分Spring与Struts2框架的几种新方法

Part1前言 在近几年的HW比赛、红队项目中&#xff0c;攻击队在外围打点时&#xff0c;越来越依赖于对Java站点的漏洞挖掘。Java站点的主流框架大致就是两个&#xff1a;Struts2系列&#xff08;包括Webwork等&#xff09;及Spring系列&#xff08;包括Spring MVC、SpringBoot等…

基于Struts2框架的名片管理系统

目录 1、系统设计 2、数据库设计 3、系统管理 4、用户管理 5、名片管理 本篇博文将分享一款基于Struts2框架的名片管理系统&#xff0c;JSP引擎为Tomcat9.0&#xff0c;数据库采用的是MySQL5.5&#xff0c;集成开发环境为Eclipse IDE for Java EE Developers。 名片管理系…

IntelliJ IDEA2021.2搭建struts2框架

在网上看了很多IDEA搭建struts2的教程&#xff0c;搭建后总是无法启动服务器&#xff0c;下面介绍2021版本如何正确搭建struts2框架。 一、首先去struts2官网下载所需包 官网传送门 下载后进行解压 all是完整包&#xff0c;体积较大&#xff1b;min是官方提供的对于初学者的基…

【Struts2】Struts2框架创建web项目的6个步骤

Struts2框架创建web项目的6个步骤 1.创建WEB项目 2.导入Struts2核心jar包 3.在web.xml文件中配置前端控制器filter ※如果Struts2框架是2.1.3之后的版本&#xff0c;版本核心控制器为org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。 ※如果Stru…

struts2框架学习

STRUTS2笔记 实现原理struts2项目搭建action概述在action中访问web资源Servlet解耦的方式是怎样的呢?通过xxxAware接口获取web资源 实现原理 先放一张很俗的框架图&#xff1a; 是不是看着很复杂?其实简单的讲这个古老的框架将我们平时使用的springMVC中的controller使用过…

Struts2框架 下载和配置

官网下载 进入后&#xff0c;下载all版本的&#xff1a; 下载解压后&#xff0c;出现以下界面&#xff0c;由于struts的jar包并不全部需要&#xff0c;故需要进入示例程序中的apps目录导入jar包&#xff1a; 解压其中的struts2-black.war包&#xff1a; 进入WEB-INF目录中&…

Struts2基本架构

Struts2基本架构 1、Struts2执行流程2、web.xml配置3、Action控制器3.1、核心控制器3.2、业务控制器 4、Result配置5、struts.xml核心配置5.1、constant元素5.2、package元素5.3、配置文件加载顺序 1、Struts2执行流程 如下例子&#xff1a; 执行流程如下&#xff1a; 浏览器…

struts2框架详解

一、struts2简介 Struts2是一个基于MVC设计模式的Web应用框架&#xff0c;它本质上相当于一个servlet&#xff0c;在MVC设计模式中&#xff0c;Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品&#xff0c;是在 struts 1和WebWork的技…

Struts2框架简单入门

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.xml3.6、部署测试3.6、注意点3.7、小结 1、…

数学符号的各种含义

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