struts2_入门

Struts2

概述

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

常用的WEB层框架

  • Struts1
  • WebWork
  • Struts2
  • SpringMVC

前端控制器模式

这里写图片描述

Struts入门环境搭建

1.环境下载

struts下载地址

  • apps目录: struts的Demo案例
  • docs目录: struts的文档
  • lib目录: struts的开发jar包
  • src目录: struts的源码

2. 导入jar

struts的jar比较多
可以从Struts官方提供的demo中拿到必要的jar就行

3. 前端控制器配置

<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>

其实就是在web.xml中配置struts2的filter

4. 编写Action类

public class TutorialtAction {
    public void start() {
        System.out.println("Hello Struts!");
    }
}

5. 配置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>
    <package name="default" namespace="/" extends="struts-default">
        <action name="tutorial" method="start"
            class="org.itheima.struts.action.TutorialtAction">
        </action>
    </package>
</struts>

注意:

  1. struts.xml文件名不可随意取,必须叫做struts.xml
  2. struts.xml必须放在src类路径下

6. 编写访问页面,进行测试

http://localhost:8080/01_start/tutorial.action

注意:

  1. 访问的url和struts.xml中配置的action标签间的联系
  2. struts.xml中配置的aciton标签和Action类中的方法的联系

Struts2的运行流程

前端控制器:Filter

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

控制器启动的加载项

  1. init_DefaultProperties()。默认的properties配置。

    org/apache/struts2/default.properties

    默认的配置加载项,struts2启动时加载的默认参数

  2. init_TraditionalXmlConfigurations()。传统的xml配置。

    struts-default.xml,struts-plugin.xml,struts.xml
    • struts-default.xml:struts框架启动时加载运行的框架默认配置。
    • struts-plugin.xml: struts框架允许插件集成。集成的插件配置。
    • struts.xml: 开发者的配置。
  3. init_LegacyStrutsProperties():加载常量配置struts.properties

  4. init_CustomConfigurationProviders():struts启动核心类创建的提供者。
  5. init_FilterInitParameters():struts加载web.xml中的配置

配置加载顺序

这里写图片描述

Struts.xml中的配置

DTD的查询和配置

  1. 到struts的核心包中可以找到struts-2.3.dtd文件
  2. 到xml catelog中配置离线提示

package标签

pakage标签是struts的核心配置。package标签相当于一个模块描述。

  1. name属性:描述包的唯一性的,不要重复
  2. extends属性: 继承。
    继承的作用是为了具备父类功能。
    struts在struts-default.xml中提供了一个struts-default父类配置
  3. namespace属性:命名空间。
    可以理解为模块根路径,当前模块的根路径。

    和Action标签的name和method搭配来确定访问的url
  4. abstract:抽象。用来被其他package继承的

action标签

  1. name: 配置action的访问名称
  2. class: 配置关联的action类的全路径
  3. method: action类中的方法名称,访问此action时调用的action类中的方法

include标签

配置多文件struts配置文件进行关联。

file属性指向的是类路径下的配置文件,需要包含文件夹名称。

例如:org/itheima/abc/abc.xml

constant标签

用来配置常量值的,目的是修改Struts的default.propertis中的默认值的

例如:

struts.action.extension=action,,

修改为

struts.action.extension=do,,

Action类的配置

编写规范

  1. action类需要提供无参构造函数

  2. action中被url访问的方法编写规范

    • 修饰符:方法的修饰符必须是public
    • 参数列表:方法必须是无参方法
    • 方法名称:遵循编程规范的任意名称
    • 返回值类型
      • String: 推荐使用
      • void:不推荐使用
    package org.itheima.struts.action;
    // Action类
    public class TutorialAction {
    public String setup() {
        System.out.println("Hello Struts2!");
        return "ok";
    }
    }

action类的实例

每次url访问时,action的实例就会被创建一次。action类是多实例的。

result标签

  1. name属性
    对应的是Action类中执行的方法的返回值。
  2. 内容:要去到的页面。
    注意:

    package标签的namespace值会决定去到的页面

    也可以通过/写绝对路径

Action类的三种编写方式

1. 书写一个普通类

2. 实现Action接口

  • Action接口提供了五个常量

    • ERROR: action方法执行错误时的返回结果
    • INPUT: 参数出现问题时的返回结果
    • LOGIN: 用户未登录的返回结果
    • NONE: action方法被访问了,但是没有视图显示时的结果
    • SUCCESS: action方法访问成功时的返回结果

    Struts定义的这几个常量只是规范。希望开发人员遵循这些常量进行配置。

  • Action接口要求实现execute方法

    在struts.xml中的action标签中不需要配置方法名,直接就会访问此方法

3. 继承ActionSupport类

  • 实现了Action接口
  • 提错误信息显示

    主要是实现了ValidationAware接口

    调用实现方法可以给目标页面添加数据显示

  • 提供校验显示到不同页面

    主要是实现了Validateable接口

  • 提供国际化操作

    主要实现了TextProvider, LocaleProvider接口

Struts国际化的配置

  • 国际化配置命名规范:baseName_language_country.properties

    • baseName由开发人员自己定义
    • language和country属于国际规范
    • 命名中不加language和country为默认选项
  • 在struts.xml中添加常量配置,或者在struts.properties中配置

struts.custom.i18n.resources=baseName

注意:

  • 只写baseName不需要后面的语言和后缀
  • 多个时用,隔开
  • Struts国际化数据的获得
    通过调用getText()方法获得国际化数据

Action的访问方式的配置

通过method属性进行访问

在action标签中,通过具体的name属性值拿到访问的url
通过具体的class去调用,具体的method。

开发过程中如果action偏多,书写起来比较麻烦。

通过通配符进行访问

  • 在action标签的name属性中,通过*号来占位
  • 在action标签的method属性中,通过{下标}来访问,下标从1开始
  • 在result标签结果显示中,通过{下标}来访问,下标从1开始

通过动态方法进行访问(不推荐)

  • 开启动态方法访问的配置
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
  • url中通过actionName + ! + action类中的方法名访问
    • 注意 actionName不要含.action后缀
    • action类中的方法名可以含.action后缀

Struts + Hibernate整合

环境搭建

  1. 搭建struts的环境
  2. 测试struts环境是否运行
  3. 搭建hibernate环境
  4. 测试hiberante环境是否正常运行
  5. 解决框架间的冲突

业务整合

  1. 创建Dao层
  2. 创建Service层
  3. 创建测试用例测试业务代码是否正确
  4. 对接web层

其他细节调整

  1. 重复的包
  2. 日志整合
内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值