sturts2框架的学习笔记,问题解决:

深入理解Struts框架:结构与组件 本文还有配套的精品资源,点击获取 简介:Struts是Apache基金会支持的一个Java EE框架,基于MVC设计模式,便于Web应用开发。文章深入解析了Struts的核心组件、工作流程和优势,并说明了如何与Java集成以及Struts 2的更新特点。掌握Struts框架的知识对于开发高质量的Web应用程序至关重要。 1. Struts框架概述 Struts框... 阅读详情
直接继承ActionSupport有很多的好处,
sturt2的<s:form...>默认提供了输出校验错误的能力。
ActionSupport已经提供了国际化信息的能力,通过getText("");获取国际化的信息。
Sturt2也允许通过定义配置文件来完成数据校验。该校验框架实际上是基于Xwork的validator框架。

:No result defined for action com.test.action.Register and result input

解决方案:

1、没有定义input(不是这个问题)

     结果返回的时候有几个常量分别是:

    EORROR 对应的就是"error"

    INPUT 对应的"input"

    LOGIN 对应的"login"

    NONE 对应的"none"

    在validate中验证有错误的话且没有指定return 字符串的话,

    struts2默认就返回的是 return INPUT 也就是return "input"

    文件参数有错,input是拦截器返回的 

2、访问路径的问题,在sturts2.1之后,所有包的必须指定命名空间。(不是该            问题,调试后排除该问题)

3、配置文件的问题:(之前的配置文件里面没有加入<default-interceptor-ref />),加入之后就基本解决了问题。

<package name="demo" extends="struts-default" namespace="/user">

<default-interceptor-ref name="defaultStack"></default-interceptor-ref>

<action name="register" class="com.test.action.Register">

<result name="input">/index.jsp</result>

<result>/index.jsp</result>

</action>

</package>

问题原因分析:

org.apache.velocity.exception.ResourceNotFoundException: 之后遇到的问题,

<default-interceptor-ref>该标签用来甚至整个包范围内所有Action多要应用的默认拦截器信息。事实上我们的包继承了sturts-default包以后,使用的是Sturts的默认配置。在实际开发过程中,如果我们有特殊的希求是可以改变默认拦截器配置的。当时一旦更改这个配置,"defaultStack"将不再被引用,需要手动的追加。

在 struts-default.xml 中的配置的defaultStack,sturts.xml中<namespace />中extends继承某个配置文件就是包含该配置的内容。

里面是一堆的拦截栈(也就是向Struts2框架中注册拦截器或者拦截器栈)。(<intercrptor-ref>通过该标签可以为其所在的Action添加拦截器功能,

<interceptor-stack>则是一堆的拦截器组成的栈chain?栈空间)。

这里就可以发现问题了,前面已经说了<default-interceptor-ref>这个是指定默认的拦截栈。

但是,你看:t


struts-default.xml中默认的拦截栈是"defaultStack"。再看该栈中引用的拦截器:


但是,该栈中并没有包含,执行校验的拦截器:

 

好吧我错了!!!(实际上包含了该拦截器啊????默认的也是该拦截器栈???)但是为什么????


Sturts默认配置说明:


struts-default.xml 默认的拦截器等默认配置。

struts.xml

default.properties sturts的一些常量,在sturts.xml中修改,也可以直接修该,比如后缀,调试,国际化,上传下载限制等。

struts-2.1.7.dtd sturts.xml的定义文件,有sturt.xml说明。

/////////////////////////////////////////////////

信息:  Velocity  [debug] org.apache.velocity.exception.ResourceNotFoundException: WebappLoader : Resource 'VM_global_library.vm' not found.

网上有人也说是文件'VM_global_library.vm' 路径的原因。

再次部署运行。问题依旧 纠结了!!

最后怀疑是Tomcat的原因,于是把Tomcat\webapps目录下的工程目录给删掉重新来过,问题解决了。

靠,原来这个原因。报错信息全部解决了,为毛校验还不能用。纠结死了,问题还是没有解决。

////////////////////////////////////////////////////////////////////////////////////

警告信息:
警告: No configuration found for the specified action: '/myNameSpace/login.action' in namespace: ''. Form action defaulting to 'action' attribute's literal value.

解决办法:没有正确的使用<s:form>标签

配置:

<package name="demo" extends="struts-default" namespace="/user">

<action name="register" class="com.test.action.Register">

<result name="input">/index.jsp</result>

<result>/index.jsp</result>

</action>

</package>

把 <s:form action="/register/user"theme="simple">//找的是/register空间下"/register.action"当然找不到了。

改成:

 <s:form action="register" namespace="/user" theme="simple">

/////////////////////////////////////////////////////////////////////////////////////

Struts 2中的表达式语言

Struts 2支持以下几种表达式语言:

1. OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;

2. JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;

3. Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;

4. Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。

Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:

1. 支持对象方法调用,如xxx.doSomeSpecial();

2. 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;

3. 支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;

4. 访问OGNL上下文(OGNL context)和ActionContext;

5. 操作集合对象。

OGNL:

“#”主要有三种用途:

1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:

名称

作用

例子

parameters

包含当前HTTP请求参数的Map

#parameters.id[0]作用相当于request.getParameter("id")

request

包含当前HttpServletRequest的属性(attribute)的Map

#request.userName相当于request.getAttribute("userName")

session

包含当前HttpSession的属性(attribute)的Map

#session.userName相当于session.getAttribute("userName")

application

包含当前应用的ServletContext的属性(attribute)的Map

#application.userName相当于application.getAttribute("userName")

attr

用于按request > session > application顺序访问其属性(attribute)

#attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止

2. 用于过滤和投影(projecting)集合,如books.{?#this.price<100};

“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值3. 构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。

“$”有两个主要的用途

1. 用于在国际化资源文件中,引用OGNL表达式

许多情况下,我们都需要在动行时(runtime)为国际化字符插入一些参数,例如在输入验证提示信息的时候。在Struts 2.0中,我们通过以下两种方法做到这点:

  1. 在资源文件的国际化字符串中使用OGNL,格式为${表达式},例如:
    validation.require=${getText(fileName)} is required
  2. 使用java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number | date | time | choice), 格式样式},例如:
    validation.between=Date must between {0, date, short} and {1, date, short}
在显示这些国际化字符时,同样有两种方法设置参数的值:
  1. 使用标志的value0、value1...valueN的属性,如:
    < s:text  name ="validation.required"  value0 ="User Name" />
  2. 使用param子元素,这些param将按先后顺序,代入到国际化字符串的参数中,例如:
    < s:text  name ="validation.required" >
    < s:param  value ="User Name" />
    </ s:text >

2. 在Struts 2配置文件中,引用OGNL表达式,如

<action name="AddPhoto" class="addPhoto">
<interceptor-ref name="fileUploadStack" /> 
<result type="redirect">ListPhotos.action?albumId=${albumId}</result>
</action>

OGNL用于页面的遍历:


////////////////////////////////////////////////////////////////////////

sturts2的编码过滤器

< filter > 
< filter-name > struts-cleanup </ filter-name > 
< filter-class > 
org.apache.struts2.dispatcher.ActionContextCleanUp
</ filter-class > 
</ filter > 

< filter-mapping > 
< filter-name > struts-cleanup </ filter-name > 
< url-pattern > /* </ url-pattern > 
</ filter-mapping > 

/////////////////////////////////////////////////////////////////////////////////////////////////

JSON插件(Plugin)

在Struts 2的showcase中的AJAX部分,JSON的结果输出是通过Freemaker模板实现。这种方法在简易性和灵活性上都比不上JSON插件,所以JSON插件值得向大家五星推荐。

配置:

<package name="Struts2_AJAX_DEMO" extends="json-default">
<action name="JsonPlugin" class="tutorial.JsonPluginAction">
<result type="json" />
</action> 
</package>

------1,google自动填充的功能。2,用户注册校验的功能 3,动态显示查询信息的功能。(动态更新图片)。


-----两种实现方式(原生的和使用json插件)。

sturts sdfhrdioufhjkbnhgfhi 立即下载

相关推荐

酒店管理系统最终答辩版本

酒店管理系统最终答辩版本,包括源代码,数据库,文档等。

一、Struts基本介绍和使用

Struts的几个基本概念 1.struts是一个框架(frameset) 2.struts是一个web框架 3.框架提高了程序的规范同时,也约束了程序员的自由 4.struts是一个开源框架 Struts为什么有? struts的好处: 程序更加规范化 程序开发的效率提高了 程序的可读性增加 程序的可维护性增加了 struts的不足之处: 1.form表单有点鸡肋 2.action是单态(对网站...

也许是我送你哦 5万+

华为防火墙USG6600全流量日志配置指南:从流量监控到NAT日志的完整方案

本文详细介绍了华为USG6600防火墙全流量日志配置方案,涵盖流量监控、NAT日志及安全事件溯源等核心功能。通过精细化配置和性能优化技巧,帮助企业构建高效、合规的日志体系,提升网络安全运维效率。文章特别强调了日志采样与字段过滤的实用方法,适用于高流量环境下的资源优化。

gin88的博客 349

精通Struts1

 颓废了一段时间以后,决定要努力学习一下,先把以前的东西拾起来。首先学习《精通Struts》第一章    Sturts与JavaWeb应用简介1.JavaWeb应用的结构——MVC结构(模块model控制器controler视图view)2.Servlet组件:Servlet运行于Servlet容器内,可以被Servlet容器动态加载,来扩展服务器的功能,并提供特定的服务。

iverson79_82的专栏 1273

【机械臂算法】基于最小惯性参数集的动力学辨识仿真实践

本文深入探讨了机械臂动力学参数辨识的核心挑战与解决方案,重点阐述了基于最小惯性参数集的理论与方法。通过分析PUMA560实例,详细介绍了利用QR分解法或符号推导法获取可辨识参数集,并系统讲解了从激励轨迹设计、仿真数据采集、线性系统求解到模型验证的完整实践流程,为高精度动力学建模与控制奠定了坚实基础。

weixin_29054399的博客 376

LAMMPS GCMC模拟保姆级教程:从fix gcmc命令到吸附等温线实战

本文提供LAMMPS GCMC模拟的详细教程,从fix gcmc命令设置到吸附等温线实战,涵盖巨正则蒙特卡洛模拟的全流程。通过MOF-5吸附甲烷的案例,指导用户构建模拟体系、转换化学势与压力、定义GCMC区域,并绘制出版级吸附等温线,助力材料科学研究。

weixin_33724046的博客 604

搭建struts框架的步骤

使用sturts(也就是struts1)进行web项目开发,首先需要搭建struts框架建立web项目2.引入.jar包到lib文件夹下(点击下载struts-1.3.10-all)建立struts-config.xml文件(WEB-INF目录下创建)<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstruts-configP...

huckers的博客 100

【Milvus】实战指南:利用milvus-backup实现高效数据备份与恢复

本文详细介绍了如何利用官方工具milvus-backup为Milvus向量数据库实施高效的数据备份与恢复。文章从备份的必要性出发,逐步讲解了环境准备、配置要点、全量与按需备份操作,以及恢复数据的关键步骤和验证方法,旨在帮助用户构建可靠的数据安全防线,应对误操作或系统故障风险。

weixin_29217235的博客 131

Struts框架(一)——简介

引言:           一种 概述: 内容: 总结:

我!不一样的烟火 2512

如何构建高质量的 QA 问答知识库

NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从

Jiassheng的博客 2153

MFC下使用C++操作Word文档

由于项目需求,在MFC环境下操作将数据和图片写入word文档,之前没有接触过,网上查阅了很多资料,终于把任务完成。理解的不是很透彻,但是这些东西应该够用了,写篇博客记录一下,以便以后再用到。 (1)VS环境下创建一个MFC应用程序,然后在项目上单击右键,选择 类向导-----添加类----类型库中的MFC类。在弹出的对话框中选择文件,位置选择office安装目录下的...

GIS_yuhua的博客 7580

解决Sturts2中文乱码问题

终于在自己的项目中引入struts2了,但一上来就来一个中文乱码的问题。google了半天找了几个不痛不痒的结果,很是不满意。又调试了半天,终于解决了中文乱码的问题。总结一下,中文乱码,首先要区分是页面乱码、action乱码,还是数据库乱码。大致的原理是java使用unicode编码--&gt;window使用gbk(gb2312的扩展集)--mysql默认使用utf-8(unicode的一种编...

自由时飞扬 搬家拉 http://www.meiriyouke.net 222

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南——原生“龙虾”OpenClaw快速部署、问题速查与避坑指南

至此,你已经完成了从选购服务器到配置AI大脑的全过程。无论是想在云上养一只7x24小时的“龙虾”,还是在本地体验AI Agent的魅力,上述指南都提供了明确的路径。下一步,就是接入飞书、钉钉或QQ,让你的OpenClaw真正开始“干活”赚钱了 [citation:6]。

冯·诺依曼 990

Sturts2 框架搭建基本操作

Sturts2 框架搭建基本操作 1、导入struts2核心包。找到struts2核心包(可参考示例程序中的核心包),复制粘贴到WebRoot/WEB-INF/lib下。 2、在web.xml中添加过滤器 struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExec uteFilter &amp;lt;filter-mapping...

weixin_43960044的博客 276

【EB_Tresos专题】-01-EB Tresos导入工程

<--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> <--返回「Autosar_BSW高阶配置」总目录--> <--返回「Autosar_BSW高阶配置」专栏主页--> <--返回「个人博客」首页--> 结尾 ...

「汽车电子助手」的博客 6436

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Sturts2 要点细谈

Struts2 概述 Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架。 Stru...

liveJQ 598

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Sturts2 HelloWorld

最近开始学习Struts2,一个官网的HelloWorld居然搞了两天,一大堆莫名其妙的问题。万事开头难,今天终于把所有bug处理掉了。Struts2 官网的案例 http://struts.apache.org/docs/hello-world-using-struts-2.html搭建Tomcat开发环境 推荐两篇验证过可行没问题的文章: MyEclipse: http://www.tu

Dev_Lancer的技术博客 814

Statistics and Machine Learning Toolbox

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Sturts2学习笔记

struts框架的工作原理; 1.首先要经过Struts2框架的核心控制器StrutsPrepareAndExecuteFilter。 然后核心控制器依次查找ActionMapper来决定这个请求是否调用action。如果ActionMapper决定调用action,StrutsPrepareAndExecuteFilter就把请求的处理控制权委托给ActionProxy。 2.ActionPr...

Tommy_java的博客 228

sturts2校验总结

.struts2提供的校验有以下几种方式:  1.使用从ActionSupport类中继承而来的validate()方法实现校验,开发人员可以自定义如何实现校验, 如果最后校验有错误,则返回INPUT逻辑视图,所以要在配置文件中配置此逻辑视图对应的物理视图。 2.同样是继承ActionSupport类中的validate*()方法,后面的*代表的是将要校验的方法名称,并且方法名首字母要大...

a javaer 149

在Sturts2中跳转问题

为什么我在Struts2中,从Jsp提交到Action后,老是返回到Input页面? 大侠们。。。请指点一下。。。谢谢!

yang472579211的博客 178

关于sturts2和FCKeditor的一些问题

本人在刚接触sturts2的时候遇到的一些问题,在我们做的项目时候用的FCKeditor编辑器和struts2结合的时候有些小问题,就是在做新闻编辑的时候出现一些显示html源码的问题,这时就要设置struts2的标签要指定escape="false"属性才可以显示正常的内容和图片。

chaoloveyou的专栏 658

Sturts2学习:理解bean元素的作用

在看struts2的bean元素配置时一直对这个元素的作用不是很清楚,尽管官方文档说它有两个作用:对象注入和值注入,当时说的都相当抽象。于是上网查了很多资料,并且查了下webwork in action这本书,发现bean元素是struts2里面才引入的,无意间又看了下官方文档中plug-in这节,这才对bean元素的作用有了一点领悟,下面谈下个人理解。在这之前,首先说下struts2中的依赖注入

鱼与飞鸟 2987

sturts2框架知识点(Struts2框架----今天脑子有点炸)

1.struts2的源代码的导入: 对于struts2框架它的源代码我们主要使用三部分 truts2核心部分源代码 org.apache.struts2 要查找的是core目录下的源代码 struts2的xwork核心部分源代码 \struts-2.3.37\src\xwork-core\src\main\java\com\opensymphony\xwork2 struts2的插件的源代码 src/plugins 2.关于 Struts.xml配置文件中提示问题: 添加d

weixin_43562378的博客 378

Sturts2复习笔记

Sturts2复习笔记 第二章 1.基于Struts2框架的web应用开发流程。 创建web项目.添加基于struts2框架所需要的jar包 创建Web项目的视图 创建业务控制类(Action) 创建struts2.xml 创建web.xml 发布web项目并测试 第三章、第四章 1. struts框架的工作原理; 发起请求 接受请求交给struts2的核心控制器 根据url查看struts...

zhangjin2024的博客 632

Sturts

Sturts是什么?   Sturts是JSP模式2(MVC)基础上突出实现的一个框架,是使用JSP+Servlet组成;Sturts框架提供:标记库:也没黑色记者可以控制;支持国际化处理如:JSP显示为中文,可以转换为英文等...;支持用户认证。Sturts的优点:极好的框架和设计;重用模块化,可扩展性强;确定的框架,并且开源。 DTO传输

wkyb608的专栏 845

Sturts2如何获取request参数

Struts2获取request三种方法: struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象。 在Action中获取request 方法一: 在Action中的代码: Map request =(Map)ActionContext.getContext().get("request"

501
上一篇: 20130428 sturts2对ajax的支持
下一篇: jquery mobile 经验小结 (1)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值