App Engine 初步使用时所遇问题

作者在使用Google AppEngine部署基于JSP的Blog过程中遭遇多种难题,包括JSP语法不兼容、Spring MVC注解失效及Session管理等。通过不断尝试与调整,最终克服限制实现了项目的上线。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  网上的免费jsp空间很少,app engine就提供了这样一个环境。

 

 

   抱着对免费空间的使用心态,自己做了一个blog网站,想传到google中来供自己使用。却不想因google的 种种限制一直不能很好的运行,之后不得不对自己的项目进行一次次的改动,现在是终于可以正常的运行 了。这个版本可以说是第四个版本了。

 

 

    在修正项目期间,所遇到的问题在网上找了N久,很少有正确解答的,都是copy来copy去,无奈之下,只 好自己慢慢摸索,几次之中都想直接放弃,从code google上直接down一个下来改改就行了。可我的心告 诉我,别放弃,再来一次,说不定这次就行了,做为一个程序员,没有什么代码问题是解决不了的。还好 我坚持了下来,能坚持下来的这种淡淡喜悦真是一种难得的舒适。

 

 

    想想自己的辛苦,还是把到当前为此所遇到的一些为难的问题记录出来,让想在app engine中做项目却和 我遇到一样问题的朋友做个警示牌,朋友别放弃,也许这次就成功了。

 

 

    废话不多说,来正题。以下所说的本地开发环境是指使用google所提供的sdk模拟环境

 

第一个版本

    因为想快速开发个blog出来就使用了jsp做为页面表现,并且使用jsp做为了controller,具体架 构就略去,但在这里,我的jsp中使用了 <%@include file="..." %> ,这在正常情况下是没有任何问题。并且 在本地google所提供的开发环境中运行也是正常。但在进行上传时就出问题了,总是提示jsp文件编译错 误。在网上查了一圈,全部都是说与google的sdk包有关系,在上传时必须要使用google的sdk包进行编译 ,但那个包中编译所使用的编码是默认编码,改成utf8的就行了。唉,查了一圈了,千篇一律全部都是这 个。我就把sdk包反编译,加入utf8编码,最后,无效... ,苦闷中。再次使用google,到国外去找一圈 ,终于找到了几个描述和我的相似的问题,一开网页,却发现是以group.google打头,被国内封杀,无果 ,最后对于那个在搜索结果中的只字片语进行模糊猜测,发现了有@ include字样,再次试验。ok,终于 可编译了。得出一个观点:在本文编写当前时间2011-3-17日之前,app engine是不支持jsp的 <%@include file="..." %> 写法的只支持<jsp:include page="..."/>,不知道那些把app engine用的呼呼的高手们有没有注意到这点啊。

 

  第二个版本

        因为一开以是以jsp为控制器和表现层的写法,当要删除@ include时改动也不小,将在jsp中所 写的action全部打散,分成单个jsp处理。但这次却出现新的问题。所分散开的jsp编译是没问题,但上传 之后却总是在处理时会出错,这下我可没办法了。这又不能远程debug,本地开发环境运行也正常。想去 解决却无从下手,如果在代码里打log慢慢查应该也是能查出来的,但我不想费这个时间了。也许google 对 jsp的支持还是没那么好吧。再说打散了以后的jsp已经不是我想写的那个架构了,放弃这个,使用 spring mvc来实现

 

第三个版本

   终于还是用了别人的框架。我使用spring2.5并使用annotation快速的将自己的项目重新架一遍。ok,本地开发环境运行正常。上传成功。运行。。。失败。一头的瀑布冲了下来。我的天,这又是什么 问题。再去goole网上查一遍。无数的关键字都是spring mvc入门,就是没有我要的答案。终于在我忘了 名子的地方发现了某人的一句评语,真的就一句。app engine不支持annotation。我的眼前一片漆黑。。 。

 

第四个版本

    无奈之中,再次改版。去除annotation,使用xml配置,上传,ok,终于可以运行了。嗯?等下 ,怎么登陆出问题了!后台登陆是使用iframe结构,最后登陆时只能开一个iframe,别的都不行,再次从 址栏中打入页面地址被转到了登陆页面,也就是说,登陆时session存值无效!晕,再次上网搜索。无人 关心该问题。不知道那些把app engine玩出花来的高手们是怎么做的。验证后台的登陆全部都使用google 的用户模块?最后还是在老外一个不知名的网上中看到了几个字眼if use session ... implements seril... 不会吧,难到是要序列化?怎么文档里也没有说明啊。。。 再次对session存值对象做序列化 ,再次enhance,再次上传,再次运行。。。唉。。。成功。。。嗯,嗯?成功?哈哈,终于是成功了!


    不管怎么样,blog是运行是成功了。

    其实在使用app engine时还是遇到了很多其它的问题,就是限制的问题。比如,google为了保证数据库的 查询效率,不支持模糊查询。对于实体类String类型最多只支持255汉字,如果想要更长的,就使用google所提供的text类型,但这种类型是不支持排序的。使用有主的级联关系时,子类的pk只能是key类型,等等。。。最后一直解决,虽然对这些限制很是不满,不过,我有吃亏吗?我学到了那些为google工作的这些高手们对于效率的追求和解决方案。他们对于对象型数据库的解决方案。他们对所能提供最多功能时的标准限制决策。这些,无一不是珍贵的智慧结晶

 

   最后想说,app engine 想说爱你不容易啊。。。


   虽然国内对google封杀的很厉害,但是想要用它还是有办法的,具体办法去网上查这里不说了。  

 

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 类则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 类代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值