教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

《订单管理系统(SSH版)》(10)

来源:网络收集 时间:2026-04-11
导读: 浪潮优派 订单管理系统(SSH版)技术总结报告 IV该问题的产生原因: 例1:显示调用next()输出2、4、6、8,默认这里首先知道 输出1-8正常。 输出的是么,输出的是栈顶元素,何来栈顶元素。其实如 果只写一个 空标签,

浪潮优派 订单管理系统(SSH版)技术总结报告

IV该问题的产生原因:

例1:显示调用next()输出2、4、6、8,默认这里首先知道

输出1-8正常。

输出的是么,输出的是栈顶元素,何来栈顶元素。其实如

果只写一个空标签,那么它也会工作,默认遍历栈顶元素,由于这时候该标签的外层是counter,所以counter压入栈顶,空标签即遍历的counter。

即使是空标签,也可以通过debug看到访问hasNext()->next()有8次。也就是说,只要写上了,他就会调用hasNext()->next(),栈顶集合有多少个元素就会调用这个过程多少次。而拿回来的那个数值那个元素压入栈顶,即s:iterator标签体本次循环作用域内的栈顶。好了,栈顶出来了,那么

默认输出的就是本次拿回来的那个集合中的元

素了,即那个栈顶元素了。所以,一句话总结,负责每次拿一个并压入栈顶,然后该标签体内部的标签默认输出当前栈顶元素,从而一唱一和,有条不紊的执行“拿回来->输出”这两个相互独立的过程,并产生了1-8输出的正常结果。

例2:再回到那几个错误例子,即显式调用next()导致只输出2、4、6、8的例子。这里再次声明标签的作用,负责拿回,负责输出,从而问一句负责干嘛,答案是负责“拿回并输出”。所以,当显式调用next()的时候实际已经自动放弃了每次iterator自动调用next()拿回来并压入栈顶的那个值,这个值没有碰到合适的结果输出不出来。这时候又显式调用了next(),从而拿到了一个新的值,正好外面套着一个s:property,于是输出。那么很好理解了,默认next()拿出了1,但是没有找到合适的s:property来输出,在栈顶呆着,忽然又显式next(),于是拿出了2,压入了栈顶,正好,显式next()外面套着一个s:property,于是2被输出。从而1人老珠黄无人问津,因为本次循环已经到了尾声,下次循环即将开始。同理,3被默认next()拿出压入栈顶,得不到输出,忽然显式next()导致4被拿出并输出。从而,造成了2、4、6、8的局面。

46

浪潮优派 订单管理系统(SSH版)技术总结报告

例3:最后,说最后的那两个例子。但是需要结合上一段的逻辑分析,在前的那个例子中,输出默认next()取出的1,然后还是在本次循环中又显示调用了next(),于是取出了2然后被输出。然后下一次循环输出了3和4,再下一次输出5和6,再下一次输出7和8。即上一段中没有被输出的1、3、5、7被出现在前面的输出,避免了人老珠黄永不见天日的悲剧。而出现在后面的一句再拿出另一个,并自己输出。这里有两个点,第一反正有hasNext()控制着next()随便调用去吧反正一不会越界二不会乱序(指拿取的过程不会乱序,输出再议),第二出现在头里的默认调用的next()搭配,自己是一伙,每次循环两次调用,不就是这样嘛。

例4:同理,最后那个乱序的例子也是一个很好的佐证,默认next()拿出了1,但是没有被及时输出,而是被拿出了2压入栈顶后输出于是从栈顶移除,这时候处在后面的便输出了栈顶呆着的默认next()时取出的1。所以,只是输出的顺序有变,拿取的顺序还是依旧那么有条不紊。所以导致了2、1、4、3、6、5、8、7的局面。两两是一次循环得到的结果,只不过是先后输出的问题。

47

浪潮优派 订单管理系统(SSH版)技术总结报告

④总结:

通过以上探索过程和原码分析,解决了三个疑惑, 第一first和last的开闭问题即是否包括端值;

第二,为什么在内部使用遍历的时候本应该输出1-8却输出了2-9每次都大1;

第三,建立在问题二探究结果的基础上,为什么显式调用next()即却只输出了偶数。 这三个问题的结论如下三条所述:

I进行first和last设值的时候,注意两头的端点值都是包括的,即左闭右闭区间; II显示访问current即进行输出的时候,得到的当前current总是比你预想的大1,所以输出当前值的正确方式是(前提,当不改变Counter默认值为1的interval属性时);

III知道以上两点Counter类就可以使用了。这一点要说的是作为学习遍历标签时候的一个补充。即使是空标签也会遍历栈顶集合元素,调用“元素个数”次hasNext()和next()方法,而如果其内部仅仅放一个那么会输出刚刚取回的这个元素。取回和输出是两个完全独立的过程。 (2)

让浏览器跳转到另一个页面或者action的js代码,即类似单击超链接时候的情形: 即使用windows.location.href=”htp://www.http://m.wodefanwen.com//”;语句即可。

48

浪潮优派 订单管理系统(SSH版)技术总结报告

(3)struts收到的值是乱码。 现象:

现象是这样的,从前台输入要进行模糊查询的字串,比如要查询“人民币”,输入了“人民”:

单击查询之后,发现了乱码。

首先后台收到的值就已经是乱码了:

然后在struts转向到jsp后使用ognl取得的参数也必定是乱码了: 原因:

原因的结论很简单,但是也引出了一点其它的问题。慢慢看。 ◆Filter的问题:

首先,在该项目中也有配置字符编码过滤器,并且在过滤器的doFilter()方法中使用UTF-8设置了请求的编码。如下图。

但是还是不行,不行的原因是经过追踪发现请求达到后都不走这个doFilter()过滤器,猜测的原因很简单,肯定就是过滤器制定的过滤拦截规则没有拦截到请求。这个规则制定的位置就是web.xml里面的

上图是原来的,发现请求到达后doFilter()都没有走。于是把改为了/*,这个和action的拦截器是一样的拦截规则。于是拦截到了。网上查,没查到权威的解说的区别。我估计是*.*拦截的是必须带.的这种请求,至于有没有后缀无所谓但是请求的url必须带.否则拦不住。而action的拦截规则就更加大众化了,只要是/*,只要你请求本项目(/代表绝对路径/oms/)的任何的url那么action都会拦截到,这比如很多请求中虽然请求到action却都不带action后缀,或者用do后缀,或者用标准的action后缀,反正都能拦截到。所以,问题就出在这里,把*.*替换为/*后请求的url被正常过滤,走了doFilter()。但是乱码依旧没解决。

49

浪潮优派 订单管理系统(SSH版)技术总结报告

◆编解码的方式要针对请求的方式:

走了编码设置逻辑,但是还是乱码。也就是说明了首先编码逻辑走了,但是该逻辑对于这里类型(乱码有太多类型)不起作用。原因是setCharacterEncoding()只对post请求生效,在filter中很标准的解决了post请求的乱码。但是在该项目中,观察每一个请求的地址栏 …… 此处隐藏:1861字,全部文档内容请下载后查看。喜欢就下载吧 ……

《订单管理系统(SSH版)》(10).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/412382.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)