首页
学习
活动
专区
工具
TVP
发布

LeoXu的博客

专栏作者
81
文章
94679
阅读量
13
订阅数
在 Tomcat 中设置 Tapestry 框架的 html 热加载
如果开发中使用到了 Tapestry 这个框架,如果事先没有设置过的话,开发的时候 html 是不会热加载的,也就是说修改了 html 文件,不能刷新浏览器后立马看到修改完的效果,必须先重新启动应用服务器(比如 Tomcat)才行。
LeoXu
2018-09-21
1.8K0
IE7下面固定尺寸的 div 滚动样式设置的一个BUG
今天我在编辑html页面的时候使用到一个固定尺寸的div,这里就叫它wrapper吧。
LeoXu
2018-08-15
6610
[翻译]使用 Velocity 构建一个稳定安全的Web应用
<p> draft document -- 2003年6月11日 </p> <p> 作为一名web开发者,任何时候当你构建一个Web应用时,有责任确保你的应用程序能够做什么和什么是应该做的:在发生错误的时候优雅的处理错误;让用户获取不到他们不应该查看的数据;防止恶意用户对应用程序进行的干扰操作。 </p> <p> 然而,详细的讨论如何去构建一个稳定的web应用程序是一个太过复杂的主题,这一篇短文设计的是构建基于Velocity的web应用程序常见的几个问题。短文是从一个开发者的角度写起的,他需要同大量的html模板开发人员和最终用户接触。我们鼓励读者发表自己的意见,其他问题和相关的设计建议请致信 Velocity 用户列表,或者直接联系作者,Will Glass-Husain。 </p> <p> <b>Velocity 如何帮助开发者创建一个稳定的App</b> </p> <p> 通常,Velocity 是一个html设计师容易学会,并且不会难用的web模板工具。这一点基于如下的几个要素: </p> <p> <b>Velocity 模板语言(VTL)是简单的。</b> 使用几个简单的指令,外加应用本身定义的引用,需要学习的东西少(也不怎么凌乱)。 </p> <p> <b><em>页面文件中不存储非展示用的信息。</em></b> 对比JSP文件,它常常需要带上一个页面头文件。如果一个不懂技术的web设计师去掉了这个头部,那么这个JSP页面就不起作用了。在一个Velocity模板中这样的头部或者其他技术信息是不需要的。 </p> <p> <b><em>在一个web页面中没有Java代码。</em></b> 这样就消除了一些共有的错误和混乱设计,同时让恶意的页面编辑者去调用不必要的Java代码变得困难。 </p> <p> <b><em>一个方法的异常不会阻塞一个页面的创建。</em></b> 使用MethodExceptionEventHandler,一个方法异常可以被获取和记录日志。 </p> <p> <b><em>一个无效的引用不会阻塞一个页面的创建。</em></b> 模板指令中无效的引用通常被忽略不计。页面中一个无效的引用将会简单的把其引用参考字打印出来。(比如:$foo)。 </p> <p> 基于如上的原因,大部分Velocity开发者将会发现:没有什么离奇的现象或者问题,页面以一种直接的方式被渲染。 </p> <p> <b></b> </p> <p> <b>基于Velocity稳定和安全性的具体问题</b> </p> <p> 考虑安全和稳定要素时,你需要意识到基于Velocity的web应用程序的几个特性。 </p> <p> <b><em>Velocity 是一个模板工具, 而不是一个框架。</em></b> 它不解决任何像认证、访问控制、会话状态或者数据持久化这样的问题。 </p> <p> <b><em>VTL方法调用实际上是Java的方法调用。</em></b> 这意味着一个糟糕的velocity应用程序设计使得模板设计者改变系统的状态,直接执行SQL查询或者随意的实例化Java类。潜在的安全威胁将在下面被详细提到。 </p> <p> <b><em>VTL引用具有Java类型。</em></b>尽管对被模板编辑者是不可见的,每一个引用还是一个具有特定类型的Java对象。如果 $apple 是一个 integer 的 “1”, $orange是一个String 的“1”,$banana是一个 double 的 “1.0”,那么根据VTL这些对象没有一个是==(对等)的。典型的非技术html模板设计者可能会对此感到迷惑。(事实上,如果对象不是同一个类型的,会有对它们字符串值的比较。因此, 在VTL中, $apple和 $orange现在是对等的了。) </p> <p> <b></b> </p> <p> <b>在构建安全,稳定的Velocity Web应用程序中的最佳实践。</b> </p> <p> 如下所列是能够帮助你构建一个稳定的Velocity Web应用程序的最佳实践。它们包括: </p> <blockquote> <p> <i>在上下文环境context中审查所有不必要的方法。</i> </p> </blockquote> <blockquote> <p> <i>编码HTML特殊字符,以避免交叉脚本漏洞。(cross-scripting)</i> </p> </blockquote> <blockquote> <p> <i>使用最新且做了合适设置的app服务器。</i> </p> </blockquote> <blockquote> <p> <i>进行适合生产中使用的Velocity配置</i> </p> </blockquote> <p> <b><i>在上下文环境context中审查所
LeoXu
2018-08-15
4900
Tapestry 教程(一) 原
这篇教程帮助人们来创建基于 Tapestry 的 web 应用程序。你是否有过使用 Tapestry 早期版本或者其它 web 框架的经历,这一点并不重要。事实上,从某些立场来看,对于一般的 web 开发了解的越少,你就能学得更好……因为那样你要忘掉的就不太多啦!
LeoXu
2018-08-15
1K0
HTML样式offset[Direction] 和 style.[direction]的区别
以offsetLeft与style.left为例: offsetLeft使用的值是字符串,如“100px", style.left则使用数值,如 100 offsetLeft只可以读,因此用无法通过Js改变这个值实现样式的改变, style.left是可读写的,因此可以通过改变这个值调整div的位置 style.left的值需要事先定义,否则取的时候返回空 Js访问方法:[Element].offsetLeft, [Element].style.left
LeoXu
2018-08-15
7360
Tapestry 教程(五)实现Hi-Lo猜谜游戏
在这个游戏中,计算机会选择一个介于1到10之间的数字。你尝试猜出这个数字,点击一些链接。最后,计算器会告诉你确认目标数字你需要猜多少次。即使是像这样一个简单的示例,也能体现Tapestry中的几个重要概念:
LeoXu
2018-08-15
9970
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档