snail的Struts学习笔记(1)

Autodesk全家桶安装总报错1603?一个服务设置搞定3dsMax和CAD安装回滚问题 本文详细解析了Autodesk全家桶安装过程中常见的1603错误,特别是3ds Max和CAD安装回滚问题。通过调整AdskLicensingService服务的账户权限,提供四步修复法和安装流程优化策略,帮助用户彻底解决安装难题,提升Autodesk软件的安装成功率。 阅读详情

snail的Struts学习笔记(1) --- Simple Form Example的流程

 

( 06 年 10 月 20 日 )

在http://struts.apache.org/网站在下载struts- 1.3.5 -all.zip包

 

参考资料:

在网上找了2本书Jakarta Struts 编程.pdf,Struts in Action 中文修正版.pdf

加上官方的http://struts.apache.org/1.x/userGuide/index.html 的英文文档

 

 

看了Struts in Action的第二章节,内容上没有什么难理解的地方,但是光看没什么实际的认识。还

得操作一下,所以就把struts- 1.3.5 -all.zip解压缩,找里面的一个例子实际学习一下!(找个最简单的)

struts- 1.3.5 -all/struts-1.3.5/apps/struts-cookbook-1.3.5.war

 

整个的程序的所有文件:

Source Code for Simple Form Example


JavaServer Pages

Simple.jsp

SimpleResults.jsp

Actions

SuccessAction.java

ProcessSimpleAction.java

ActionForm

SimpleActionForm.java

Configuration files

struts-config.xml

Other source files

None

 

 

现在把整个流程走一下L(不知道有没有错)

 

1 用户浏览器访问Simple.jsp,填写表单,点击submit按钮。(客户端发生的事情)

 

这是Simple.jsp页面的一部分。

<html:form action="/processSimple">

         <p>* What's your first name?:<br/><html:text property="name" size="40" maxlength="50"/></p>

         <p>* Enter a secret word or phrase:<br/><html:password property="secret" size="40" maxlength="50"/></p>

。。。。。

 

2 当用户提交Submit按钮时,提交表单。用户的请求就发送到服务器,服务器把请求传给ActionServlet。(服务端发生的事情)

ActionServlet在自己的配置表里查找表单指定的”/processSimple”。

(” /processSimple”在struts-config.xml已配置,见下图。应用服务器一开启,ActionServlet就将struts-config里的所有配置加载进自己的某个或多个实例变量中去了。

所以上面ActionServlet能找到”/processSimple”,见下图”/processSimple”的配置)

 

"/processSimple"在struts-config.xml中的配置。

<action path="/processSimple"

                type="examples.simple.ProcessSimpleAction"

                name="simpleForm"//表单的名字,不是实际javaBean类的名字

                scope="request"

                input="/jsp/simple/Simple.jsp"

                cancellable="true" //表单可以被取消

                validate="true">  //表单在提交到ProcessSimpleAction前需要被验证

            <forward name="success" path="/jsp/simple/SimpleResults.jsp"/>

        </action>

 

 

Struts in Action第二章书上的一张图,下面参考这张图详细描述下接下来发生的事情。

 

根据图中所示:

1 当ActionServlet查找到”/processSimple”时,查找属性中有没有form bean,结果发现了 “simpleForm”.

2 然后在又在自己的配置里找到了“simpleForm”所对应的SimpleActionForm的类。

" simpleForm "在struts-config.xml中的配置。

  <form-beans>

        <!-- Simple ActionForm Bean -->

        <form-bean name="simpleForm" type="examples.simple.SimpleActionForm"/>

 </form-beans>

3如果是服务器开始后的第一次访问这个bean,则创建SimpleActionForm的一个新的实例。否则则重设它。

4 查找”/processSimple”的validate的属性是否是”true”.如果为true的话,就调用SimpleActionForm的

validata()方法

public ActionErrors validate(

        ActionMapping mapping,

        HttpServletRequest request) {

 

        ActionErrors errors = new ActionErrors();

 

        // Name must be entered

        if ((name == null) || (name.length() < 1)) {

            errors.add("name", new ActionMessage("errors.name.required"));

        }

 

        // Secret Phrase must be entered

        if ((secret == null) || (secret.length() < 1)) {

            errors.add("secret", new ActionMessage("errors.secret.required"));

        }

        return (errors);

}                            

5 现在假设validata()验证正确,则ActionServlet创建Action类ProcessSimpleAction类

  (ProcessSimpleAction类如果已实例化过的话,则直接调用,否则创建)。

6 ProcessSimpleAction的execute()方法被调用

public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response)

        throws Exception {

 

        // If user pressed 'Cancel' button,

        // return to home page

        if (isCancelled(request)) { 

            return mapping.findForward("home");

        }

 

        // Forward to result page

        return mapping.findForward("success");

    }

7         ProcessSimpleAction返回ActionForward对象给ActionServlet,这里假设执行到

     return mapping.findForward("success");

则ActionServlet在自己本身的配置中找到名为” success”的ActionForward类。

("/processSimple"在struts-config.xml中的配置中有

<forward name="success" path="/jsp/simple/SimpleResults.jsp"/>这个ActionForward类的配置)

 

3 服务起通过ActionServlet把响应发送到了客户那里,则在客户那里显示如下。(客户端发生的事情)

虽然在浏览器地址栏显示的是http://localhost:8888/struts-cookbook-1.3.5/processSimple.do

但实际用户所在的页面是上面

"/processSimple"在struts-config.xml中的配置中的

<forward name="success" path="/jsp/simple/SimpleResults.jsp"/>

SimpleResults.jsp这个页面

 

 

 

这个例子虽然很简单,但大致把strute做的的主要工作体现了出来。

相对于下面这张表,上面的例子么有涉及到UserDelegate, HelperBean这两个过程,不过相信对上面的流程很熟悉的话,再找个复杂一点点的例子

把这两个过程也走一遍的话,相信对Struts的工作模式有个更好的里。

 

现在对Struts 的整个工作模式有了很好的理解,可以正式开始看书了,这样的话对书上的所讲的东西就不会不知所云了。明天继续学习Struts,今天

到此为止了。

 

反正第一天学习下来,感觉struts框架就是什么事情都问ActionServlet,ActionServlet什么事情都去找Struts-config.xml。

 

 

 
CUDA系列-Stream-1 This section describes static aspects of the CUSW_UNIT_STREAM unit’s architecture.和stream相关的其它Unit主要有Channel,Sync,Memmgr A CUDA stream is a software FIFO queue that allows commands like kernel launch and memcpy to be enqueued in it. The enqueued commands 阅读详情

相关推荐

从零到一:FAST_LIO与FAST_LIO2算法环境搭建与实战评测

本文详细介绍了FAST_LIO与FAST_LIO2算法的环境搭建与实战评测,包括算法原理、环境配置避坑指南、源码编译技巧及性能对比。FAST_LIO2凭借ikd-tree数据结构在动态环境中表现优异,处理速度提升至15ms,内存占用降低40%。文章还提供了常见问题排查和进阶优化技巧,助力开发者高效实现SLAM应用。

weixin_29271053的博客 470

Snails 框架

Snails 框架 基于 SpringBoot + Ng-Alain 前后端分离的实现,可以作为新手入门项目,也可以作为小项目的基础框架去扩展。目前 Snails 系统框架已支持基本的后台功能,基于简单、实用设计,并且已支持 Docker 进行项目部署。 Snails 框架:编程入门,新手礼赞 snails-web 前端:Angular + Ng-Zorro + Ng-Alain snails-...

ToBeStudy的博客 840

数据产品需求文档(PRD)怎么写?阿里P8分享的模板+5个避坑点

作用:记录文档的版本、作者、评审信息,避免“文档混乱”。填写规范字段说明示例文档名称清晰反映产品名称,如“用户行为分析平台PRD”用户行为分析平台PRD_V1.0文档版本用“版本号+日期”,如V1.0_20240301编写人数据产品经理姓名+联系方式张三(138-XXXX-XXXX)评审人员业务负责人、开发经理、数据分析师、运维负责人李四(业务)、王五(开发)、赵六(数据)、周七(运维)评审时间评审日期2024-03-05评审意见。

架构师的AI之路,分享AI应用开发架构的学习与实践。 1573

Snail:轻量级响应式编程框架

???? Snail:轻量级响应式编程框架 项目介绍 Snail 是一个轻量级的响应式编程框架,专为 Swift 和 Kotlin 设计。它提供了一种简洁的方式来处理异步数据流和事件,使得开发者能够更高效地管理状态和响应用户交互。Snail 不仅支持多种安装方式,如 Carthage、Swift Package Manager 和手动集成,还提供了丰富的功能和灵活的使用方式,适用于各种复杂的应用场景。 ...

gitblog_01167的博客 614

Spring Boot 实现多图片上传并回显,涨姿势了~

上传 Controller的代码非常简单,由于用了SpringMVC框架,所以直接用MultipartFile来接即可。由于是多图片上传所以用数组来接。此处应该注意参数名应该和<input>中的name值相对应: @RequestMapping("/pic") @ResponseBody publicResponseEntity<String>pic(MultipartFile[]pictures)throwsException{ ResponseEnti...

weixin_54556126的博客 893

多源异构数据融合(Kaggle+Google Trends联合分析)

本文详细介绍了如何利用Python实现多源异构数据融合,以Kaggle电商销售数据与Google Trends搜索指数为例,展示了数据清洗、预处理、时间对齐、数据合并、相关性分析、回归建模和可视化全过程。数据预处理与内存优化通过分块加载、数据类型转换和缺失值处理,有效降低了大规模数据在内存中的占用,并确保数据质量。时间对齐与数据融合策略采用重采样与内连接方法对齐不同数据源的时间维度,实现了高质量数据的融合,为后续联合分析奠定基础。模型构建与分析。

闲人编程的博客 1016

SnailApp项目---路由框架搭建

SnailApp项目—路由框架搭建

fsf_snail的专栏 465

016、自动标注方案实战:用大模型(SAM/Grounding DINO)生成 YOLO 格式伪标签

本文介绍了一种利用大模型自动生成YOLO格式伪标签的实战方案。针对传统人工标注效率低、易出错的问题,作者提出结合Grounding DINO(零样本检测)和SAM(精细分割)的优势:前者快速生成候选框,后者优化边界精度。文章详细阐述了技术选型理由(平衡速度与精度)、环境搭建避坑指南(关键依赖版本)、核心三步流程(检测-分割-格式转换)以及后处理技巧(置信度分级过滤)。实验表明,该方案相比纯人工标注可节省80%时间,且经过SAM优化的边界框精度提升10-15%。特别强调了工程细节:文本描述格式、阈值设定、小目

zzfmlxs的博客 544

分享一个前后端分离的web项目(vue+spring boot)

前后端分离(vue+spring boot) Github地址:https://github.com/smallsnail-wh 前端项目名为wh-web 后端项目名为wh-server

smollsnail的博客 8万+

YOLOv11 快速入门指南 | 10分钟吃透网络结构与新特性

2024 年 9 月 30 日,Ultralytics 发布了 YOLOv11,这是继 YOLOv8、v9、v10 之后的最新一代实时目标检测模型。 与前几代相比,YOLOv11 在保持“单阶段、实时、端到端”三大基因的同时,带来了两大核心升级:一句话总结:YOLOv11 = 更快 + 更准 + 更少参数。 2.2 微观单元:C3k2 与 C2PSA 2.2.1 C3k2 模块 作用:替换 YOLOv8 的 C2f,做跨阶段局部特征融合。 核心代码(ultralytics/nn/modules/block

shrgegrb的博客 1407

轮式并联五连杆下肢机器人运动控制:从建模到强化学习仿真训练

本文提出了一种基于强化学习的轮式并联五连杆下肢机器人运动控制方法。首先建立了机器人的运动学和动力学模型,推导了正逆解公式,并构建了URDF模型。随后在PyBullet仿真环境中搭建了包含复杂地形的训练场景,设计了基于PPO算法的端到端控制策略,包含状态空间、动作空间和奖励函数的详细设计。通过多组仿真实验验证了该方法在台阶攀爬等任务中的有效性,为轮腿机器人运动控制提供了完整的可复现技术方案。

huanghm88的专栏 347

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 334

23、OpenMP常见用例与标准循环级示例详解

本文详细介绍了OpenMP的三种典型用例:循环级OpenMP、高级OpenMP和MPI+OpenMP,适用于不同层次的并行需求。重点讲解了循环级OpenMP在向量加法、流三元组和模板计算中的应用示例,并探讨了首次触摸优化、线程绑定、NUMA架构影响等关键性能优化策略。通过实际代码演示和性能分析,帮助开发者快速掌握OpenMP的基础并行化方法,并为后续高性能优化提供指导。

fanta的博客 86

仿muduo实现高并发服务器——EchoServer完成

本文介绍了一个纯头文件实现的 Reactor 服务端骨架,核心结构从 Buffer(双下标缓冲区)出发,依次封装 Socket(RAII 封装 fd)、Channel(事件与回调绑定)、Poller(epoll 封装)、TimerTask/TimeWheel(秒级时间轮)、EventLoop(事件循环 + 任务队列 + eventfd 唤醒),并集成 LoopThread/Pool、Connection、Acceptor 与 TcpServer。通过 EchoServer 示例展示业务逻辑仅需绑定三个回调即

深入探究的博客 378

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 416

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

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

【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork

本文详解多进程TCP服务器的实现原理,从单进程并发瓶颈出发,通过fork分离连接接收与服务职责。重点解析文件描述符继承机制、僵尸进程问题及双重fork解决方案,最终构建高效、稳定的多进程服务器模型,并说明服务器重启时可能因端口未释放导致绑定失败的原因。

2402_87731470的博客 2372

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

自建 Git 服务器和裸仓库差在哪:要能提合并请求

在一台 Linux 上 git init --bare 就能自建 Git 服务器,但它只能推拉代码,没有网页、合并请求、评审和按仓库分配的权限。对照裸仓库和 AngusGit 各自能做什么,再走一遍在 AngusGit 上发起合并请求的最短路径,以及已有裸仓库怎么完整搬过来。

AngusTester 318

主从 Reactor 高并发服务器实战 (三):服务器套接字Socket模块详解与实现

本文实现了一个封装完善的Socket模块,将socket→bind→listen→accept等复杂操作收敛为简洁的类接口。通过RAII机制自动管理文件描述符生命周期,避免资源泄漏;提供CreateServer等便捷函数简化服务端创建流程,并支持非阻塞模式与属性设置。模块设计注重安全性与易用性,有效解决样板代码重复、错误处理分散等问题,为后续网络通信模块奠定坚实基础。

dasdasfv的博客 204

轻量点对点定时备份方案:个人文档与服务器文件跨机同步实践

本文探讨了轻量级文件备份场景下的实际需求与解决方案。针对个人文档及小型服务器备份,传统BAT脚本虽易上手,但存在断点续传差、安全缺失、维护困难等短板。作者提出理想方案应具备点对点传输、断点续传、加密传输、版本管理、文件过滤及自动清理等能力。最终选用松鼠备份工具,实现稳定、低运维成本的跨机同步,尤其适合中小型场景,强调“稳定省心”优于复杂功能,是小团队和个人运维的高效之选。

2501_93776716的博客 207

架设一台NFS服务器

3、将/home/tom目录仅共享给192.168.100.136这台主机,并只有用户tom可以完全访问该目录。注意:tom是一个用户目录,并且在客户端创建tom用户一定与服务端的tom用户的uid/gid保持一致。2、开放/nfs/upload目录,为192.168.100.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UID和GID均为210。1、开放/nfs/shared目录,供所有用户查询资料。架设一台NFS服务器,并按照以下要求配置。

2401_87595340的博客 233

安徽京准:NTP网络校时服务器在化工厂网络部署要点

安徽京准:NTP网络校时服务器在化工厂网络部署要点

235

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 137

SIP广播,没有SIP服务器,一台手机APP的P2P广播会议方案。

开源项目ovmeet实现SIP协议下轻量级会议广播,无需传统服务器。通过P2P直连技术,手机可作为移动MCU/SFU节点,支持终端间点对点互呼、分组广播、分区音乐与应急对讲,兼容华为、宝利通等主流SIP设备。内网P2P+公网SIP双模组网,部署简单,开箱即用,适用于临时会议、应急指挥等场景,真正实现“免服务器、轻量组网、快速广播”。

fangji999的专栏 253

Linux网络编程:彻底理解IO多路复用select!从fd_set位图、读写就绪到手写TCP多客户端字典服务器

在前面的Linux网络编程中,我们已经学习了五种经典I/O模型:其中,我们通过 配合: 将文件描述符设置为非阻塞模式。例如: 这样,在没有数据可读时: 可以立即返回: 并设置: 而不需要让当前线程一直阻塞等待。但是,这又引出了一个新的问题。假设我们的TCP服务器同时连接了100个客户端: 如果使用简单的非阻塞轮询: 服务器就需要不断检查这些Socket。即使其中99个客户端都没有发送任何数据,服务器仍然可能反复调用它们对应的 。显然,这种方式可能产生大量无意义的系统调用。我们真正希望实现的是:能不能让内核

Face_FeaR的博客 644

【服务器数据恢复】RAID5阵列双盘掉线Oracle+OA系统的数据恢复案例

某医药公司服务器组建RAID5磁盘阵列,阵列内两块硬盘先后离线,直接造成服务器宕机。服务器操作系统为RedhatLinux,承载基于Oracle数据库搭建的OA业务系统,业务数据价值高、恢复时效要求紧急。由于该OA配套Oracle版本早已停止技术支持,客户需求为:完整恢复业务数据,同时尽可能复原原有操作系统环境。

beiya123的博客 125

BarTender异地客户端怎么连服务器?

适配场景:制药、汽车等,对网络环境、合规规范存在较高要求的企业。处在外部网络的异地计算机,如果要和总部服务端交换数据,就要建立加密通信隧道,VPN、云组网都属于这类网络实现方式。经常收到这样的技术咨询:标签软件的服务端部署在总部,外地车间、异地仓库、外协工厂的计算机分属不同局域网,这类情况下是否可以实现互通?这套软件本身不支持公网直接访问总部服务端,需要构建安全的虚拟通信链路,将分散各处的计算机纳入同一个虚拟内网环境。异地分厂、仓库以及外协作业点位,设备不必回到总部内网,就可以运行标签相关软件。

2601_96728078的博客 421
上一篇: [转]我的世界观 阿尔伯特·爱因斯坦
下一篇: mysql参考(仅供自己参考)
飞羽飞之猪
博客等级 码龄21年 127粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值