Struts2学习一(Struts2介绍)

使用IDEA学习Struts2框架 (一)Struts2入门-HelloWorld应用 作为一个刚学习完JavaWeb必要储备知识的人,早已经急不可耐地想要学习运用MVC设计模式的Web框架了。目前Java的三大框架仍然是ssh(Struts、Spring、Hibernate),而struts2对于struts1的一些缺点进行了改进,那么本着了解MVC设计模式和基础web框架学习的目的,开始学习struts2。开发工具IDEA(没有用过Eclipse,但是已经习惯了IDEA,就不改了... 阅读详情

1、Struts2介绍

Struts2是一个基于MVC设计模式的Web应用框架,本质是一个Servlet
这里写图片描述

Struts2的主要功能
1、Action上,可以是一个普通的POJO
2、线程上,每一个Action对应一个实例,没有线程上的问题(Servlet单实例)
3、整个ONGL
4、使用值栈技术(ValueStack)技术
5、整合Spring AOP思想的拦截机制

2、Struts2的使用流程

1、导jar包
2、Action类的编写
3、struts.xml文件配置
4、web.xml文件配置过滤器
5、测试

3、Struts2的执行流程

这里写图片描述

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

这里写图片描述

3、Sturts内部配置相关文件的介绍

1、defalut.properties:配置sturts常量,比如说编码
位置:

struts2-core-2.3.15.3.jar!/org/apache/struts2/default.properties

2、struts-default.xml: struts核心配置文件

truts2-core-2.3.15.3.jar!/struts-default.xml

3、struts-plugin.xml整个其他框架
4、struts.xml:用户自定义核心配置文件
5、web.xml:也可以配置struts常量

参考博客
http://blog.youkuaiyun.com/zzjjiandan/article/details/9837869

4、Struts.xml文件配置详解

<!-- 配置文件详解 
        1.<constant> 用于配置struts常量的
            name:struts提供固定常量名称。此名称从 default.properties文件获得
            value:常量值
            例如:<constant name="struts.devMode" value="true"></constant>
        2.<package> struts用于管理所有action类
            name:给当前包进行唯一命名,必填项。用于其他包继承的。
                例如:struts-default.xml/<package name="struts-default" abstract="true">
                    将struts已经完成的功能,作为一个包存在。名称是固定值struts-default。
            namespace:action访问路径前缀。
                例如:"/"
                    "/hello"
                    "/a/b/c"
                    ""
            extends:用于继承其他包的。
                例如:<package extends="struts-default"> 当前action继承struts已经完成功能。
            abstract:是否抽象,如果设置为true,表示没有具体action实现功能。(了解)
        2.1 <action> 用于配置action类(请求处理类)
            name:action名称,用于在请求路径进行访问
            class:action类全限定类名
            method:用于确定action类中需要执行的方法,默认值:execute
        2.2 <result> 用于配置结果集
            name:用于确定action类中,方法的返回值
            text:标签体用于设置jsp路径
            type:结果集类型
                dispatcher:请求转发,从一个action到jsp页面,默认值。
                redirect:重定向到jsp页面
                redirectAction:重定向到另一个action
                stream:以流的方法发送浏览器,用于文件下载。
                chain:链,在一次请求中,从一个action到另一个action
        2.3 <result-types> 用于配置结果集类型的,一般不用,但需要看的懂。
        2.4 <interceptors> 用于配置拦截器
            <interceptor> 用于注册拦截器的
            <interceptor-stack> 拦截器栈,将已经注册的拦截器组合在一起,形成一个栈。
                例如:<interceptor-stack name="defaultStack"> 声明一个拦截器栈,名称是:defaultStack
        2.5 <default-interceptor-ref>用于确定当前默认拦截器的
            例如:<default-interceptor-ref name="defaultStack"/> 将“defaultStack”拦截器栈,声明默认拦截器栈
        2.6 <default-action-ref> 如果访问的action不存在,默认执行的aciton。
            例如:/a/b/c/d/oneAction 此aciton没有配置,默认情况返回action找不到
                如果配置<default-action-ref> 如果存在404时,不显示action找不到,而是指定action
        2.7 <default-class-ref > 用于配置 默认action实现类
            例如:<default-class-ref class="com.opensymphony.xwork2.ActionSupport" /> 
                如果编写配置文件时没有声明class属性,及<action name=""> 将执行ActionSupport类。
        3 <include> 将多个struts配置文件组合成一个。
            struts.xml 入口配置文件,大家共用的。用于存放通用模块。
                <include file="struts-user.xml" />
                <include file="struts-book.xml" />
            提供子配置文件
                struts-user.xml
                struts-book.xml
    -->

5、HelloWorld

1、UserAction类

public class UserAction {
    public String execute() {
        return "success";
    }
}

2、index.jsp
3、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>

    <constant name="struts.devMode" value="true"></constant>
    <constant name="sturts.enable.DynamicMethodInvocation" value="true"></constant>
    <package name="struts" namespace="/" extends="struts-default">
        <action name="userAction" class="com.example.struts.UserAction">
            <result name="success" type="">/a/success.jsp</result>
        </action>

    </package>
</struts>

4、success.jsp文件
5、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>
struts2简介 MVC设计模式基本概念 ,Struts2体系结构 ,Struts2开发环境 立即下载

相关推荐

Struts2 简介

Struts2 技术分享:介绍主要技术,基本组成,拦截器,体系结构

struts2详细理解

struts2理解

weixin_42694511的博客 1454

struts2详细介绍经典

该资源包含了所有struts2的知识点,从基本的配置到拦截器再到ognl的值栈,应有尽有,很值得一看,对于刚学过struts2的同学,看看可以更深刻的理解其中的原理。

struts2 简介

一、struts2 是一个框架,属于属于表现层,需要我们基于这个框架下进行开发。 特点: 可读性 可维护性 可拓展性。 javaEE 开发根据职责的纵向划分:表现层 业务层 持久层。也就所说的javaEE的三大框架(ssh)。 表现层:负责处理与界面交互的相关操作。(struts2/spring)。 业务层:负责复杂的逻辑业务计算和判断。(spring) 持久层:负责将业务逻辑数据进行...

好好学习,天天向上! 2275

Unity Spine 3.8 (URP) 踩坑(Shader报错修改)

提供了新思路,打算尝试一下URP。但美术使用的spine版本是3.8,项目用的Unity2021.3.11f1c2,直接导入spine URP包,shader报错:half4 不能转成 SurfaceData2D;Spine-Sprite-StandardPass-URP-2D.hlsl 也报这个错,也是同样的改法即可。今天搜索spine优化,看到一篇文章。

hrlr1230的博客 4565

别再只用GPS了!用Android手机传感器实现室内步行轨迹记录(避坑指南)

本文详细介绍了如何利用Android手机传感器(如加速度计、陀螺仪和磁力计)实现室内步行轨迹记录,克服GPS在室内的局限性。通过传感器数据采集、步态检测、航向估计和轨迹绘制等步骤,结合避坑指南和优化技巧,帮助开发者高效构建室内定位应用。

weixin_26821003的博客 274

Android+struts2+JSON方式的手机开发

Android+struts2+JSON方式的手机开发 博客分类: Android 开发学习        在手机的后台服务无论是调用WebService还是Http请求,多数都是采用Android的HttpClient实现相关的调用实现。本文实现Android+Struts2+JSON方式实现为手机前台提供服务。 涉及的知识点:   1.Struts2框架的搭建(包括

killmice的专栏 8159

告别轮询!手把手教你用S32K3的FlexCAN Enhanced FIFO+DMA实现高效CAN FD数据接收

本文详细介绍了如何利用S32K3芯片的FlexCAN Enhanced FIFO与DMA组合方案,实现高效CAN FD数据接收,彻底告别传统轮询和中断模式。通过深度缓冲、智能过滤和DMA联动技术,该方案在5Mbps高负载场景下将CPU占用率从42%降至3%以下,显著提升系统实时性和吞吐量。

weixin_30906185的博客 502

(转)Struts2快速入门

http://blog.csdn.net/yerenyuan_pku/article/details/66187307 Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架,它自问世以来,就受到了广大Web开发者的关注,并广泛应用于各种企业系统的开发中。目前掌握Struts2框架几乎成为Web开发者的必备技能之一。接下来将针对Struts2的特点、安装以及执...

317

华为交换机密码策略配置避坑指南:明文/密文、长度、复杂度,一个命令就出错

本文详细解析华为交换机密码策略配置的关键要点,包括密码长度、复杂度及等保合规要求。通过实战案例揭示常见配置误区,如明文/密文密码格式差异、复杂度检查联动机制等,帮助网络工程师避免安全漏洞。特别针对等保二级和三级要求,提供可直接落地的安全加固方案。

weixin_30879169的博客 368

解决vscode无法运行npm命令的问题(cmd可行)

Powershell以及vscode中npm命令使用不了

无痕坚守本心的博客 2749

struts2学习笔记(一)—— struts2介绍及入门程序

一、struts2概述 1.1 什么是struts2?  在介绍Struts2之前,先来认识一下Struts1。Struts1是最早的基于MVC模式的轻量级web框架,他能够合理的划分代码结构,并包含了验证框架、国际化框架等多种实用工具框架。但随着技术的进步,Struts1的局限性也越来越多的暴露出来。为了符合更加灵活、高效的开发需求,Struts2框架应用而生。   Struts...

VNOpU2015的专栏 271

Hiblup入门指南:从下载到基础应用

本文是Hiblup软件的入门指南,详细介绍了这款遗传评估工具的核心功能与价值。Hiblup能整合系谱、基因组和表型数据,高效计算估计育种值,助力动物育种与植物遗传改良研究。文章从软件下载安装、数据格式准备,到运行系谱BLUP和基因组BLUP分析,提供了清晰的实战步骤与命令示例,帮助用户快速上手并应用于实际科研与育种工作。

weixin_29209825的博客 494

Struts2框架学习<一>流程介绍

在学习Struts2框架之前,首先我们要明白学习Struts2的目的是何?它能够给我们带来什么非同一般的好处? 1、框架介绍 Struts2框架是一个流行的全新的MVC框架,它是Struts的下一代产品,适合分层开发,应用于我们的web层开发。 针对此句话,我们需要了解两点: 第一点:Struts2和Struts1的异同之处 Struts 2=struts1+webwork,,它是基于w

不管风吹浪打,胜似闲庭信步 857

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 966

手把手教你学Simulink——高频隔离型双向DC-AC逆变器的建模与仿真

本文系统讲解高频隔离型双向DC-AC逆变器的Simulink建模与仿真,基于DAB+全桥逆变两级拓扑,详述DAB移相控制原理、双闭环控制策略及分步仿真搭建流程。重点涵盖电路建模、控制环设计、参数设置与常见问题调试,强调模块化分步验证与分层控制逻辑,实现安全、高效、灵活的双向能量流动仿真,适用于储能、微电网等场景的系统开发与验证。

MHD0815的博客 107

Struts2学习笔记一___介绍

struts2---Introduction (1)首先要下载和安装Struts的包 (2)Web.xml文件中要加入这段配置: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter ...

小家碧玉 104

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Struts2学习(一)【介绍与环境搭建和第一个例子】

一、概述概述内容来自 https://www.w3cschool.cn/struts_2/struts_overview.htmlStruts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工

极客神殿 759

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

struts2源码调试环境的搭建

源码之前,了无秘密。 说一句逼格很高的话来镇镇场子。 这两天在看陆舟的《Struts2技术内幕》,一边看脑子一边冒出四个字:相见恨晚。极力推荐想了解Struts2的人看看这本书,之前一直在看李刚的《轻量级JavaEE企业应用实战》,感觉不如他的疯狂java讲义好。为什么呢?就觉得书的定位不清楚。如果是拿来入门,则又略显繁琐,倒不如那本《深入浅出Struts2》来得简洁;拿来精进,又显得深度...

weixin_30258027的博客 164

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssh之struts2xml简单配置

struts的简单配置

Tenz的博客 620

struts2 异常总结

今天刚学Struts2就遇到了不少问题,现在总结一下,以后碰到的异常也会在继续添加的 警告: Could not find action or resultThere is no Action mapped for namespace / and action name userinfo. - [unknown location]解决办法:actio

LoginOut的专栏 539

Struts2 入门学习总结一

一、Struts2简介 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,这个框架充分发挥了Struts1和WebWork这两种技术的优势,抛弃原来Struts1的缺点,使得Web开发更加容易。 struts2还有以下...

vel970912的博客 1万+
上一篇: Spring学习四(Spring事务管理)
下一篇: Struts2学习二(Struts2的常用功能)
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值