??xml version="1.0" encoding="utf-8" standalone="yes"?>
选择什么样的题材来写第二篇呢?我在W一里面有提到“JSP需要经q{译成servlet”Q那q脆在q里讲讲q个转译q程。对于网设计h员来_q个部分的知识比较多余,也不适合没有E序设计基础的h看,对于E序设计人员来说Q应该可以加深您对JSPQServlet的理解,最最重要的,我认为有了这个部分的知识Q可以方便你q行JSP的相兌试。从我现在的l验来讲Q在不借助于大型的IDE的情况下Q只为学习目的的话,我是不喜Ƣ用大型IDE的,比如NetbeanQEclipse{等Q一是太占资源,偶的本本跑v比较?(Q二是对于新手往往会在太多的菜单选项里面q失方向Q甚臌很大_֊在徏立工E、添加\删除工程文g{等事情上,难以专注于要学习的东西)QJSP的调试是比较隄。虽然运行方式非常的单,您只需要在览器地址栏输入您发布的jsp文g路径Q回车即可测试,但如果JSP包含有错误(包括~译式错误&q行时异常)Q都会输Z堆看不太懂的调用堆栈。堆栈里面往往会提及xxx.java文g的xxx行,但对于JSP开发来_看不到这些文Ӟ甚至不知道有q些文g的存在。所以,大多数情况下QJSP里面是不提倡写太过复杂的java代码的?
好了Q正式开始研IJSP到Servlet的{换过E。接着上篇讲的例子。在/webapp/hello.jspQ?a href="http://localhost:8080/tianlinux/hello.jsp">http://localhost:8080/tianlinux/hello.jspQ里Ҏ如下的代码:
单的Q只有一句代码。我们在初学java的时候,写一个hello world应该都远q不止这点代码,里面一定有文章。ƈ且,您发C吗:W一ơ访问hello.jspQ浏览器停顿了一下下Q才昄Z"Hello, JSP/Servlet"q句话,后面再次讉KQ就不会再停了。是的,q正是因为第一ơ访问jsp的时候,JSP有个转译的过E。这个过E包括以下几个步骤:
1、根据jsp文g生成java文gQ?/p>
2、调用编译器对java文gq行~译Q?/p>
3、如果编译通过Q蝲入JVMq行Q?/p>
4、将执行l果q回?/p>
我们先看W一个步骤。由jsp转化而成的java文g在什么位|呢Q我们在Tomcat的安装目录下搜烦一下,比如刚才的hello.japQ?tomcat%表示tomcat的安装目录,则在如下的\?tomcat%\work\Catalina\localhost\tianlinux\org\apache\jsp\扑ֈ了hello_jsp.java文g。打开看看。这里我们偏偏题Q看看大家一般用什么文本编辑器Q不要告诉我说您写一个简单的java文g都要用IDE哦,也不要告诉我您还在用寒的notepad哦^_^Q我推荐使用notepad++。功能跟UltraEdit基本cMQ但UE是付费的Q虽然在伟大的祖国,基本上没有需要真正付费的Q但谁知道这U天堂般的日子什么时候会到头呢?Q,notepad++是完全免费的Qƈ且加入了sourceforgeQ遵从GPLQ作者是台湾Z今吾Q侯工可是学法国文学出生的哦~。在台湾企业工作?q多Q跟很多台湾c工E师有所接触Q别的不_感觉在敬业精&技术能力上Q大陆工E师q是普遍落后于v峡那边的同胞的,q跟受到的教Ԍl济水^是有直接联系的。扯q了Q反正ؓ了一句话Qؓ了民族xxx产业Qؓ了实现自我xxxQ也Z大把的银子,大家一起努力了~。好了,打开那个hello_jsp.java了吗Q我们看到如下的代码Q?br>
以目前的情况Q我们ƈ没有必要把代码一句一句的都去搞懂。因为大部分的代码所有jsp文g转换出来都是相同Q是JSP容器已经讑֮好的。所以我们只x其中的部分?/p>
首先是import语句l。这里import了javax.servletQ注意这个包q不是JDK里面默认包含的包Q所以现在如果在cmd里面输入javac hello_jsp.javaQ当然要在这个文件的路径下输入!Q可能会出现下面的画?/p>
出现了找不到javax.servletq个包的情况Q我的机Z是q种情况。怎么办呢Q赶紧google一下解军_法?/p>
1、在环境变量讄里面扑ֈclasspathQ然后把%tomcat%/common/libdq去。注意Tomcat的版本更新十分频J,如果版本不是5.5.12Q可能文件名或者\径稍有不同,h意变通。还有需要提醒的是,完成环境变量的设|以后,需要重新开启cmd哦?/p>
2、运气好的GGMM现在已经可以正确~译了吧^_^Q但偶不是。目前没有搞清楚是什么原因,我将/common/lib加入到classpath后仍然找不到servlet{包Q所以我采用了笨办法Q将/common/lib下的q三个文Ӟservlet-api.jarQjsp-api.jarQjasper-runtime.jar都手动加Cclasspath里面Q就OK了~各位有没有更好的Ҏ或者知?不能成功的原因的Q还望不吝赐教哦?/p>
不知道您发现没有Q我在写q篇博客的时候正在听林忆莲的?a title=我坐在这? target=_blank>我坐在这?/font>》,一首很好听的,快节奏的歌,d自Lene Martin的?a title="Sitting down here" target=_blank>Sitting down here》。我喜欢在工作的时候听歌,q里推荐l大家这两首:)?/p>
接着我们会关注的是_jspServiceq个函数Q这个函数源自javax.servlet.Servlet的HttpJSPPageQ对于JSP/Servlet创徏者,不用重新定义Q只需要重载,如果是JSP创徏的,那么重蝲的过E由JSP容器来完成了。这个函数大家可以把它看作是一个callbackQ由用户~写Q但ql来调用?/p>
最后我们来看看那句在JSP里面?out.println"在java代码里面再次出现了。out对实质是JSPWriter的实例,q个对象负责字W串{等发送到客户端显C?/p>
步骤3Q?不属于本文的范畴Q不q我惛_来对这个部分做q一步的解释Q因为我对JVMq蛮有兴的哦?/p>
以上是今天的分享,包括jsp到java文g的{换&javax包的importҎ。希望大家觉得有用?br>PS:有朋友留a在第一,要求介绍一些其他的JSP容器Q由于这个部分我目前只用qTomcatQ所以将在未来对其他的JSP容器有了使用l验再向大家介绍?/p>
脚本pȝ的必要?/strong>
游戏作ؓ上层应用E序Q是在游戏引擎的基础上运行的Q现在游戏的发展势来看Q游戏者(gamerQ对游戏的可自我配置性有非常高的需求,特别是在游戏q行时的自我配置Q已l不能通过单的传参数来完成q种配置。所以,整个游戏的架构有分成两大块的发展势。一块是kernelQ另一块是configuration。Kernel是游戏的基础c&Object的集合,而configuration是针对特定的上层应用E序Q游戏本w)Q对kernel的元素进行组l&配置。脚本系l无疑将是configuration的重要组成部分?/p>
游戏引擎需要ؓ脚本pȝ提供的接?/strong>
我们把游戏中的物体(实例Q称为objectQ把可以作用于object的函数叫action
1、保存全局变量Q局部变?br>2、得到object(s)的引?br>3、得到object(s)的属性,q调用object的action
4、提供timerq行周期性触发action
以上4点ƈ不全面,但是却是最最基本需要支持的部分。如果需要更深入Q应该还要提供对静态场景的配置、设|场景结束条件以及完善的Debug机制{等?nbsp;
游戏引擎不应该ؓ脚本pȝ提供的接?/strong>
1、画?amp;播放声音{算?br>2、内存管?br>以上2点也q不全面Q因为目前的目没有|络斚w的需求,所以没有考虑安全{因素进来?br>杂七杂八
外设响应
我们把所有的gamer的输入都归纳为外设输入。那么在游戏引擎里面Q对外设的响应应该是游戏实时反应能力的直接体玎ͼ在去q从事的游戏引擎目中,采用了类gwindows消息队列的方式,ҎU特定外设输入(比如Q游戏手柄左键按下)Q挂上一个写ȝ函数。在脚本pȝ引入以后Q应该不再挂上一个编译式语言~写的响应函敎ͼ而是调用脚本解释器来q行挂在q个外设上的脚本?strong>所有外N采用脚本来响?/strong>Q这一思想是保证游戏可用户自我配置的关键之一?/p>
冗余
脚本的性能L令h头疼的。所以在引擎提供l脚本的接口当中Q全面所q?点当然在内)Q不要害怕冗余的情况出现Q而是要针Ҏ戏开发者的需求,适当的增加引擎输出的功能Q让游戏开发者在使用脚本的时候,能用脚本写得尽量的单。D例来Ԍ比如需要在某个时刻获得M角最q的怪兽Q如果只使用前面所提的4U接口,需要在脚本里面枚D出所有的怪兽Q然后一一与主角的坐标q行距离计算Q然后才能得到最q的一个怪兽。这是十分低效的。如果这一动作需要频J发生,那么势必影响游戏的整体运行效率。解军_法就是在游戏引擎里面提供一个类似功能的APIQ由游戏引擎本n的开发语aQ一般是~译式语aQ来完成q项功能Q而游戏开发者只需要在脚本里面调用q个API卛_完成q项q算。如此做法在效率上应该比前面的做法要高出许多?/p>
JSP/Servlet 的关p?
JSP QServlet 属于java web 层的技术,作用都是用来实现动态网cJSP 主要面向的是|页设计人员QServlet 主要面向的是E序设计人员。无Z采用两者中哪一U单一的技?wbr>Q你都可以解x有动态网呈现的问题。从q行方式上讲QJSP 事实上需要{译ؓServlet 才能q行Q所以,有一U说法说它们?一面两?Q这是很恰当的。Servlet 从本质上Ԍ是java E序片段?
JSP/Servlet 容器
既然 Servlet?javaE序片段Q那么它当然是不能直接运行的Q必L它放到某U运行环?wbr>当中Q它才能发挥它的作用。这个环境就是我们讲?容器"
完成了Tomcat的安装,您马上就可以启动您自q服务器了Q^_^Q如果以前没有做q,有点紧张吧?br>在启动以前,让我们先打开web览器,输入Q?a href="http://localhost:8080/">http://localhost:8080Q回车,看到了什么?“该页无法昄”一cȝ昄吧,呵呵Q不要急,马上l您一个惊喜?br>很简单:开?>E序->Apache Tomcat 5.5->configure tomcat。会看到下面那个对话框:
Z快点体验到自己徏服务器的快感Q我们不做Q何设|,先点了Start再说吧,{待启动完成。好了,现在您的计算机已l作为服务器启动了。刚才那?#8220;该页无法昄”呢?h一下试试。如果您在左上角看到那只黄猫Q您的服务器已l启动了Q?/p>
在这个网늚左边QAdministration里面Q有Tomcat Manager的链接,点击它,会弹Z个输入用户和密码的对话框Q输入刚才安装的时候的帐号密码。默认帐hadminQ密码。。。不会就忘了?)?/p>
q入了Manager的页面了吗?好了Q您可以览一下这个网늚内容Q在Applicationsq个列表里面Q列Z在当前服务器上可以浏览的所有\径。您可以随意览一下,里面如果有一些jsp的例子您现在无法理解Q没有关p,我们现在先抛开它。今天要做的最后一件事是在这个服务器上徏立自q一个web文g夹,以后我们在q个文g夹中部v我们自己的写的小web应用E序QJSP/ServletQ。目前列表中的所有\径,都是在Tomcat的安装\径下Q?webapp/xxx下面?/p>
好了Q言归正传,我们现在来徏自己的文件夹Qƈ发布到服务器上。在您的本地盘上Q意地新徏一个文件夹QƈL命名。我q里以D:/webapp/Z子。我xq个文g夹作为我的webapp文g夹,q且在服务器上,q个文g夹的名字?tianlinux"。在刚才那个manager的页面下面,Deploy栏,里面Context Path (optional): 填上"/tianlinux"Q不要引PQ,在WAR or Directory URL:填上"file:d:/webapp"Q然后点?Deploy"Q好了,看这个网늚最上面Message栏,是否已经昄"OK - Deployed application at context path /tianlinux"Q好了,现在在Applications列表里面也有/tianlinuxq个子项了。点dQ会跌{到directories list的页面。当Ӟ现在q个文g多w面没有Q何的文g和文件夹Q怪可怜的Q新Z个txt文档Q改名ؓQhello.jspQ在里面d如下一句代?br>
保存Q关闭。这时你需要reload一下这个文件夹Q就在Applications的列表里有链接~或者干脆把/tianlinux文g夹UndeployQ再重新deploy一ơ也可以?br>讉KQ?a href="http://localhost:8080/tianlinux/hello.jsp">http://localhost:8080/tianlinux/hello.jsp。如果显C出"Hello, JSP/Servlet"Q今天就打完收工了。。。第一ơ写Q好累。如果没有搞定。。。给我留a或写信吧?/p>
下期QJSP基础?/p>