Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置

深入SSH2框架:Java Web开发实践 本文还有配套的精品资源,点击获取 简介:Struts2、Spring和Hibernate是Java开发中广泛应用的开源框架,它们的组合称为SSH2,对企业级应用开发起着核心作用。Struts2基于MVC设计模式,支持拦截器机制和多种视图技术,处理HTTP请求和响应。Spring框架提供了全面的企业级功能,通过IoC实现对象依赖注入,同时支持事务管理和与Hibernate的集... 阅读详情

上篇中谈到了Struts需要以下基础jar包,这里粗略补充一下各个jar包的作用:


一、Struts2的访问流程及架构

1.1Struts2访问流程
此图仅仅帮助理解Struts2访问流程



1.2Struts2架构


Struts核心——拦截器

1.表面上看,拦截器帮助我们封装了很多功能。

2.拦截器优秀的设计——可插拔式设计。

3.aop(面向切面编程)思想。


二、struts.xml配置

下面是struts.xml中的部分配置:

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="Struts2_StudyDemo" namespace="/hello" extends="struts-default">
        <action name="index" class="com.zl.action.HelloAction" method="excute">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>
2.1 package元素

     将Action配置封装,就是可以在package中配置很多action。(和Java中的package不能混为一谈)

属性:

《1》name:给包起个名字,起标识作用,随便起,不能与其他包同名。

《2》namespace:给action的访问路径中定义一个命名空间。

《3》extends:继承一个指定包(必选)。

《4》abstract:包是否为抽象的,标识性属性,标识该包不能独立运行,专门被继承。


2.2  action元素

    配置Action类。

属性:

《1》name:设定了Action访问资源名。

《2》class:Action的完整类名。

《3》method:指定调用Action中的哪个方法处理请求。


2.3  result属性

     结果配置。

属性:

《1》name:标志结果处理的名称,与action方法的返回值对应。

《2》type:指定调用哪一个Result类来处理结果,默认使用转发。

《3》标签体:填写页面的相对路径


三、Struts2常量配置

3.1 修改Struts2常量配置

Struts2默认常量配置位置:

打开default.properties,可以看到如下的一些常量配置信息:

想要修改这些配置信息,有如下三种方式:


《1》在struts.xml中配置(重点):在struts标签下添加<constant>标签。如下:    

<constant name="struts.i18n.encoding" value="GBK"></constant>

《2》在src下新建一个struts.properties文件(了解):把需要修改的配置信息复制粘贴过来,修改。如下:    struts.i18n.encoding=GBK

《3》在web.xml中配置(了解):在<web-app>标签下添加<context-param>标签。具体如下:

<context-param>
    <param-name>struts.i18n.encoding</param-name>
    <param-value>GBK</param-value>
</context-param>

注:上述写的《1》《2》《3》顺序也是它们的加载顺序,后面加载的会覆盖前面加载的。

      不过在真正的开发中只会在struts.xml配置即第《1》种。


3.2常量配置

《1》struts.i18n.encoding=UTF-8(国际化)——解决Post提交乱码

《2》struts.action.extension=action,,(指定访问action的后缀名)

《3》struts.devMode = false(指定Struts2 是否以开发模式运行,默认为false)

        为true时:1.热加载主配置文件(不需要重启struts.xml即可生效)

                        2.提供更多的错误提示信息,方便开发时的调试


3.3使用<include>元素引入其他struts配置文件

例,在src下的struts.xml中引入com.zl.action包中的struts.xml:

<include file="com/zl/action/struts.xml"></include>


四、Struts2配置的进阶

4.1 动态方法调用(重点)

左图BookAction中有四种方法,根据用户不同的选择,这四种方法每一个方法都需要在struts.xml里注册一个action元素(右图),过于繁琐。在这种情况下,可以使用动态方法来配置。

     


有以下两种配置方法:

《1》在struts.xml中设置常量struts.enable.DynamicMethodInvocation的值为true


该常量表示配置动态方法调用是否开启,默认是关闭的,需要开启。

<struts>
    <contant name="struts.action.extension" value="action"></constant><!--指定访问时的action的后缀名为.action-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" ></constant>
    <package name="IntercepterStruts2Demo" namespace="/" extends="struts-default">
        <!-- 关于book操作 -->
        <action name="BookAction" class="com.zl.action.BookAction">
             <result>/success.jsp</result>
        </action>
    </package>
</struts>

在访问add方法时:

http://localhost:8080/IntercepterStruts2Demo/BookAction!add.action

在访问find方法时:

http://localhost:8080/IntercepterStruts2Demo/BookAction!find.action


以此类推,这种方式显然很麻烦,所以一般用下面这种:


《2》*通配符方式:使用{1}取出第一个*通配的内容

(*前面的下划线可以是#或者没有或者别的,但一般都会用下划线)

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="IntercepterStruts2Demo" namespace="/" extends="struts-default">
        <action name="BookAction_*" class="com.zl.action.BookAction" method="{1}">
             <result>/success.jsp</result>
        </action>
    </package>
</struts>

访问find()方法:

http://localhost:8080/IntercepterStruts2Demo/BookAction_find.action



4.2 Struts2中的默认配置(了解即可)
<struts>
    <package name="IntercepterStruts2Demo" namespace="/" extends="struts-default">
        <default-action-ref name="loginAction"></default-action-ref>
        <action name="loginAction" class="com.zl.action.LoginAction" method="excute">
            <result name="login">/login.jsp</result>
        </action>
    </package>
</struts>

《1》<action>中的class属性:默认为com.opensymphony.xwork2.ActionSupport。<default-action-ref>(需要自己手动配)用来修改默认Action,其中的name属性表示找不到包下的Action时,上例中会使用loginAction作为默认的Action处理请求。

《2》<action>中的method属性:可以不写,默认为”execute“。

《3》<result>中的name属性:默认为success。

《4》<result>中的type属性:dispatcher转发。


五、Action类配置

《1》创建一个类,可以是POJO。

           POJO:表示不用继承任何父类,也不需要实现任何接口。

           使struts2框架的代码侵入性更低。


《2》实现一个接口Action。

package com.zl.action;

import com.opensymphony.xwork2.Action;

public class ActionDemo implements Action{
	@Override
	public String execute() throws Exception {
		return null;
	}
}

    里面必须要实现execute()方法,提供action方法的规范。为了方便,Action接口预置了一些字符串,可以在返回结果时使用。


《3》继承一个类ActionSupport。(推荐使用)

     帮我们实现了Validateable、ValidationAware、TextProvider、LocalProvider这些接口,当我们需要用到这些接口的实现时,不需要自己来实现了。



精通SSH框架:Struts2+Spring2+Hibernate3综合指南 本文还有配套的精品资源,点击获取 简介:Struts2、Spring2 和 Hibernate3 组合形成了 Java Web 开发中的“SSH”三位一体,提供了完整的模型-视图-控制器(MVC)架构、事务管理和数据持久化解决方案。本课程旨在介绍这三个框架的核心概念、配置方法和在企业级应用中的协同工作方式,帮助开发者提升开发效率和系统的可维护性。 1. Strut... 阅读详情

相关推荐

Java EE博客网站开发实战:SSH框架与MySQL整合

博客网站的架构设计通常遵循MVC(Model-View-Controller)模式,可以分为表示层、业务层和持久层。表示层负责与用户直接交互,如展示博客文章、用户评论等;业务层处理博客的具体业务逻辑,例如文章的发布、编辑和管理;持久层主要负责数据的持久化存储,以及与数据库的交互。

weixin_42186015的博客 1266

Java EE SSH框架之整合(登录功能)

SSH三大框架整合原理见下图:了解大致原理之后就是导包一、导包(最终,WEB_INF的lib下一共40个jar包)若懒得自己去找直接用我的也可以——》Baidu网盘链接:https://pan.baidu.com/s/1rVESEVjq_eAp8bUDFjrx_Q  密码:bcnlStruts2:①apps下的Struts2-blank所有包,注意,图中选中的javassist包会与hiberna...

zl_StepByStep的博客 2676

Java Web开发实战:SSH与SSH2架构源码解析

JSP(Java Server Pages)是一种基于Java的动态网页技术,它允许开发者将Java代码嵌入到HTML页面中,从而创建出动态内容的网页。JSP是Java EE(Java Platform, Enterprise Edition)的一部分,广泛应用于开发动态网页和Web应用程序。

weixin_33582089的博客 938

【Java中级】15.0 SSH之Struts2框架(二)——package、action、常量和include的配置及 Action的编写和访问...

在struts2.xml的根标签下,可以对各种Action进行相关配置: image.png 主要是package、action、include需要熟悉怎么配置,有什么作用。 1.0 package相关配置 package标签称为包,这个包与Java中的包的概念不一致。包为了更好管理action的配置。 package标签的属性 name :包的...

我睡醒刚刚 411

Struts2框架核心Jar包清单与功能介绍

本文还有配套的精品资源,点击获取 简介:SSH(Spring、Struts2和Hibernate)是Java Web开发中常用的开源框架组合。本资源主要关注Struts2框架所需的基本jar包,这些包是构建企业级应用程序的核心。Struts2作为MVC框架,在应用中负责HTTP请求处理和业务逻辑管理。本文介绍了Struts2框架的核心jar包,包括struts2-core....

weixin_30336531的博客 981

Java Web经典框架SSH环境搭建实战指南

SSH(Struts 2 + Spring + Hibernate)是Java EE企业级开发中经典的三层架构整合方案,分别对应表现层、业务逻辑层和持久层。Struts 2基于MVC模式,通过Action控制器处理HTTP请求,实现视图与控制分离;Spring框架通过IoC容器管理Bean依赖关系,并结合AOP实现声明式事务控制;Hibernate作为ORM框架,将Java对象映射到数据库表,屏蔽JDBC底层细节,提升数据访问效率。

weixin_35899324的博客 1093

Spring总结:(4)SSH框架的配置文件

目录 1 Spring和Hibernate 1.1 实体类 1.2 映射 1.3 编写DAO及其实现类 1.4编写Service及其实现类 1.5 加载db.properties 1.6 在src下新建spring的配置文件applicationContext.xml 2Struts和Spring整合 2.1 配置类 2.2 业务逻辑类 2.3在spring配置文件中配置业务逻辑Action,为业务逻辑Action注入service 2.4在src下添加struts的配置文...

上善若泪 1052

SSH框架搭建 ssh的配置文件

SSH的搭建 ppt 有图片 详细的步骤

Java EE | 浅谈SSH三大框架及整合流程

Struts2、Structs2 标签、Hibernate、Spring核心技术、SSH框架整合

ZY-JIMMY 3606

从Halcon到数学原理:3D点云平面拟合与距离计算的5个关键陷阱

本文深入剖析了3D点云平面拟合与点到平面距离计算中的五个关键陷阱,包括无限与有限平面的距离歧义、法向量方向随机性、拟合算法选择、点云密度不均以及实际部署中的性能衰减。文章穿透Halcon等工具的操作层面,回归数学原理与工程实践,为工业视觉和三维测量领域的高精度应用提供关键指导。

fire9的博客 451

基于STM32的频率计(采用外部中断的方式)

前言 最近在了解电赛相关的东西,和指导老师交流一下,我决定先从最简单的频率计做起。 频率计是来检测信号的频率的,在做频率计的时候可以用信号发生器发出的信号来进行测试。 原理 这是最基础的方波,我们可以通过检测上升沿的方式来测量其频率。从周期的角度出发连续两个上升沿的时间就是这个方波的周期,那这个周期分之一就是这个方波的频率了。 在思考了一段时间~~(我是萌新。。)~~ 我觉得有两个方法可以实现,第一个是采用stm32定时器的输入捕获功能,第二个就是用外部中断来实现这个功能。正如标题,我这次采用外部中断的方

qq_45784922的博客 6171

SSH框架总结

传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的 JSP、负责流程逻辑控制的Servlet以及负责数据封装的Javabean。但是这种结构仍然存在问题:如JSP页面中需要使用符号嵌入很多的 Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密...

咕咕怪的博客 5294

9 HAL库驱动框架简述(STM32HAL库)

HAL库外设的使用步骤总结如下:1、定义并填充xxx外设句柄结构体。2、如果遵循HAL库规范,通过HAL_xxx_MspInit()函数,实现外设底层资源的初始化,包括但不限于GPIO、时钟、DMA、中断等资源的初始化。3、调用HAL库的对应外设初始化函数,形如:HAL_xxx_Init()。4、初始化完成,开始使用外设。5、使用方法具体查看对应外设的HAL库驱动包中的说明:补充:HAL库使用主线外设初始化外设使用。

qq_25218501的博客 1982

SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤

​ 在实际项目的开发中,为了充分利用各个框架的优点,我们通常都会把Spring与其他框架整合在一起使用。本节将针对 SSH(Struts2、Hibernate和 Spring)框架的整合内容进行详细讲解。 ​

unber的博客 2516

从理论到实践:用CST微波工作室完成单站雷达RCS仿真的完整指南

本文提供了一份利用CST微波工作室进行单站雷达RCS仿真的完整实践指南。文章深入剖析了从求解器选择(重点推荐积分方程法)、模型与材料设置、平面波激励定义到后处理分析的完整逻辑链条,旨在帮助工程师不仅完成仿真,更能理解其背后的物理原理与工程考量,从而高效、精准地评估目标的电磁散射特性。

weixin_29256771的博客 180

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

王老师青少年编程 714

java ssh框架 struts spring hibernate 简介

目录 什么是SSH框架 浅谈Struts 什么是Struts Struts的核心构成 为什么使用Struts 浅谈Hibernate 什么是Hibernate Hibernate的核心构成 浅谈Spring 为什么使用Spring 什么是SSH框架 官方的说法:SSH是 struts+spring+hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架。 SSH不是一个框架,而是把多个框架(Struts、Spring以及Hibernate)紧密的结合在一起.

whatday的专栏 1752

华为OD新系统机试真题 - 配置操作失败数量统计

华为OD机试新系统 4月8号【配置操作失败数量统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【配置操作失败数量统计】。

qq_45776114的博客 1161

SSH框架总结,超详细

2.1 什么是struts从简单性来看,Struts是这三个框架中最简单的一个,它是基于MVC的框架。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC的一个具体实现或着说是MVC的一个具体产品。2.2 Struts的核心构成Struts的核心同样也是MVC的核心,Struts是MVC的一个具体产品。(1)Model。

weixin_43696483的博客 8699

HDR 成像技术学习(三)—— LOFIC

LOFIC(Lateral Overflow Integration Capacitor,横向溢出集合电容)介绍,从像素结构到工作时序。

沧海一升的博客 9729

Camera HAL 多线程管理详解

本文摘要:Camera HAL 采用双线程管理体系(CAMX与CHI-CDK)实现高效并发处理。CAMX ThreadManager负责HAL内部及框架交互,采用线程池+任务调度机制,将节点处理、回调等封装为Job异步执行;CHI ThreadManager专注于OEM定制逻辑,支持异步/同步两种作业模式。两套系统通过函数指针解耦但共享地址空间,共同实现硬件流水线的强实时性。文章详细解析了两者的类层次架构、核心数据结构及典型应用场景,并提供了问题排查的代码切入点,为Camera HAL开发与性能优化提供指导

DU_YULIN的博客 56

java系列:什么是SSH?什么是SSM?SSH框架和SSM框架的区别

什么是SSH?什么是SSM?SSH框架和SSM框架的区别

weixin_54626591的博客 5243

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【SSH2(理论篇)】--Struts2配置详解

开发过程中发现SSH2的开发模型其实类似于经典的三层模式,在每一层中分别添加了不同的框架,显示层使用的是Struts2进行配置的,业务逻辑层使用的是Spring配置,数据持久层则采用的是Hibernate,开发模式简单易懂,接下来将会分别从三层着手讨论每一层的运行内容。

航帆远洋 8756

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java ee ssh_〖技术分享〗基于JavaEE架构SSH框架的web项目实现

本帖最后由 伟殿天下 于 2017-7-31 08:10 编辑如题: 制作一个基于SSH的web项目,要求实现用户注册、用户登录和用户发表帖子和回复帖子的功能。具体要求如下:1.实现用户的注册,注册信息包括用户名、密码、生日、手机号、年龄、电子邮箱,并对输入的注册信息进行检验。2.实现用户的登录,并对用户名和密码进行检验。3.实现帖子的发表,除对标题和内容的检验外,还要求对帖子内容进行拦截过滤。4...

weixin_29881131的博客 377

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: (9)Java多线程
下一篇: Java EE SSH框架之Struts2(3)—— 结果跳转方式和访问ServletAPI方式
zl_StepByStep
博客等级 码龄10年 154粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值