??xml version="1.0" encoding="utf-8" standalone="yes"?>麻豆av一区二区三区久久,欧美亚洲一区在线,少妇av在线http://www.aygfsteel.com/tianlinux/archive/2007/05/31/121249.htmltianlinuxtianlinuxThu, 31 May 2007 13:28:00 GMThttp://www.aygfsteel.com/tianlinux/archive/2007/05/31/121249.htmlhttp://www.aygfsteel.com/tianlinux/comments/121249.htmlhttp://www.aygfsteel.com/tianlinux/archive/2007/05/31/121249.html#Feedback4http://www.aygfsteel.com/tianlinux/comments/commentRss/121249.htmlhttp://www.aygfsteel.com/tianlinux/services/trackbacks/121249.html原本的打是在第二篇介绍JSP的基本语法,逛了(jin)一些坛子,q类的文章实在是太多?jin)。就在blogjava里面Q都有博友正在推出系列的讲。我一一阅q,所以觉得这里应该讲一些他们没有讲到的地方。如果?zhn)q不?jin)解JSP的语法,q且对这个部分比较关注,(zhn)可以去alecwen的博?/font> 看看Q那里有alecwen博友有关JSP基本语法Q用法的文章Q比较简z实用?

选择什么样的题材来写第二篇呢?我在W一里面有提到“JSP需要经q{译成servlet”Q那q脆在q里讲讲q个转译q程。对于网设计h员来_(d)q个部分的知识比较多余,也不适合没有E序设计基础的h看,对于E序设计人员来说Q应该可以加深?zhn)对JSPQServlet的理解,最最重要的,我认为有?jin)这个部分的知识Q可以方便你q行JSP的相兌试。从我现在的l验来讲Q在不借助于大型的IDE的情况下Q只为学?fn)目的的话,我是不喜Ƣ用大型IDE的,比如NetbeanQEclipse{等Q一是太占资源,偶的本本跑v比较?(Q二是对于新手往往?x)在太多的菜单选项里面q失方向Q甚臌很大_֊在徏立工E、添加\删除工程文g{等事情上,难以专注于要学习(fn)的东西)(j)QJSP的调试是比较隄。虽然运行方式非常的单,(zhn)只需要在览器地址栏输入?zhn)发布的jsp文g路径Q回车即可测试,但如果JSP包含有错误(包括~译式错误&q行时异常)(j)Q都?x)输Z堆看不太懂的调用堆栈。堆栈里面往往?x)提及(qing)xxx.java文g的xxx行,但对于JSP开发来_(d)看不到这些文Ӟ甚至不知道有q些文g的存在。所以,大多数情况下QJSP里面是不提倡写太过复杂的java代码的?

好了(jin)Q正式开始研IJSP到Servlet的{换过E。接着上篇讲的例子。在/webapp/hello.jspQ?a href="http://localhost:8080/tianlinux/hello.jsp">http://localhost:8080/tianlinux/hello.jspQ里Ҏ(gu)如下的代码:(x)

 

1<% out.println("Hello, JSP/Servlet"%> 

 

单的Q只有一句代码。我们在初学java的时候,写一个hello world应该都远q不止这点代码,里面一定有文章。ƈ且,(zhn)发C(jin)吗:(x)W一ơ访问hello.jspQ浏览器停顿?jin)一下下Q才昄Z(jin)"Hello, JSP/Servlet"q句话,后面再次讉KQ就不会(x)再停了(jin)。是的,q正是因为第一ơ访问jsp的时候,JSP有个转译的过E。这个过E包括以下几个步骤:(x)

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的安装目录下搜烦(ch)一下,比如刚才的hello.japQ?tomcat%表示tomcat的安装目录,则在如下的\?tomcat%\work\Catalina\localhost\tianlinux\org\apache\jsp\扑ֈ?jin)hello_jsp.java文g。打开看看。这里我们偏偏题Q看看大家一般用什么文本编辑器Q不要告诉我说?zhn)写一个简单的java文g都要用IDE哦,也不要告诉我(zhn)还在用寒的notepad哦^_^Q我推荐使用notepad++。功能跟UltraEdit基本cMQ但UE是付费的Q虽然在伟大的祖国,基本上没有需要真正付费的Q但谁知道这U天堂般的日子什么时候会(x)到头呢?Q,notepad++是完全免费的Qƈ且加入了(jin)sourceforgeQ遵从GPLQ作者是台湾Z今吾Q侯工可是学法国文学出生的哦~。在台湾企业工作?q多Q跟很多台湾c工E师有所接触Q别的不_(d)感觉在敬业精&技术能力上Q大陆工E师q是普遍落后于v峡那边的同胞(yu)的,q跟受到的教Ԍl济水^是有直接联系的。扯q了(jin)Q反正ؓ(f)?jin)一句话Qؓ(f)?jin)民族xxx产业Qؓ(f)?jin)实现自我xxxQ也Z(jin)大把的银子,大家一起努力了(jin)~。好?jin),打开那个hello_jsp.java?jin)吗Q我们看到如下的代码Q?br>

 1package org.apache.jsp;
 2
 3import javax.servlet.*;
 4import javax.servlet.http.*;
 5import javax.servlet.jsp.*;
 6
 7public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase
 8    implements org.apache.jasper.runtime.JspSourceDependent {
 9
10  private static java.util.List _jspx_dependants;
11
12  public Object getDependants() {
13    return _jspx_dependants;
14  }

15
16  public void _jspService(HttpServletRequest request, HttpServletResponse response)
17        throws java.io.IOException, ServletException {
18
19    JspFactory _jspxFactory = null;
20    PageContext pageContext = null;
21    HttpSession session = null;
22    ServletContext application = null;
23    ServletConfig config = null;
24    JspWriter out = null;
25    Object page = this;
26    JspWriter _jspx_out = null;
27    PageContext _jspx_page_context = null;
28
29
30    try {
31      _jspxFactory = JspFactory.getDefaultFactory();
32      response.setContentType("text/html");
33      pageContext = _jspxFactory.getPageContext(this, request, response,
34         nulltrue8192true);
35      _jspx_page_context = pageContext;
36      application = pageContext.getServletContext();
37      config = pageContext.getServletConfig();
38      session = pageContext.getSession();
39      out = pageContext.getOut();
40      _jspx_out = out;
41
42 out.println("Hello, JSP/Servlet"); 
43    }
 catch (Throwable t) {
44      if (!(t instanceof SkipPageException)){
45        out = _jspx_out;
46        if (out != null && out.getBufferSize() != 0)
47          out.clearBuffer();
48        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
49      }

50    }
 finally {
51      if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
52    }

53  }

54}

55
56


以目前的情况Q我们ƈ没有必要把代码一句一句的都去搞懂。因为大部分的代码所有jsp文g转换出来都是相同Q是JSP容器已经讑֮好的。所以我们只x其中的部分?/p>

首先是import语句l。这里import?jin)javax.servletQ注意这个包q不是JDK里面默认包含的包Q所以现在如果在cmd里面输入javac hello_jsp.javaQ当然要在这个文件的路径下输入!Q可能会(x)出现下面的画?/p>

 

出现?jin)找不到javax.servletq个包的情况Q我的机Z是q种情况。怎么办呢Q赶紧google一下解军_法?/p>

1、在环境变量讄里面扑ֈclasspathQ然后把%tomcat%/common/libdq去。注意Tomcat的版本更新十分频J,如果版本不是5.5.12Q可能文件名或者\径稍有不同,h意变通。还有需要提醒的是,完成环境变量的设|以后,需要重新开启cmd哦?/p>

2、运气好的GGMM现在已经可以正确~译?jin)吧^_^Q但偶不是。目前没有搞清楚是什么原因,我将/common/lib加入到classpath后仍然找不到servlet{包Q所以我采用?jin)笨办法Q将/common/lib下的q三个文Ӟ(x)servlet-api.jarQjsp-api.jarQjasper-runtime.jar都手动加C(jin)classpath里面Q就O(jin)K?jin)~各位有没有更好的Ҏ(gu)或者知?不能成功的原因的Q还望不吝赐教哦?/p>

不知道?zhn)发现没有Q我在写q篇博客的时候正在听林忆莲的?a title=我坐在这? target=_blank>我坐在这?/font>》,一首很好听的,快节奏的歌,d自Lene Martin的?a title="Sitting down here" target=_blank>Sitting down here》。我喜欢在工作的时候听歌,q里推荐l大家这两首:)?/p>

接着我们?x)关注的是_jspServiceq个函数Q这个函数源自javax.servlet.Servlet的HttpJSPPageQ对于JSP/Servlet创徏者,不用重新定义Q只需要重载,如果是JSP创徏的,那么重蝲的过E由JSP容器来完成了(jin)。这个函数大家可以把它看作是一个callbackQ由用户~写Q但ql来调用?/p>

最后我们来看看那句在JSP里面?out.println"在java代码里面再次出现?jin)。out对实质是JSPWriter的实例,q个对象负责字W串{等发送到客户端显C?/p>

步骤3Q?不属于本文的范畴Q不q我惛_来对这个部分做q一步的解释Q因为我对JVMq蛮有兴的哦?/p>

以上是今天的分享,包括jsp到java文g的{换&javax包的importҎ(gu)。希望大家觉得有用?br>PS:有朋友留a在第一,要求介绍一些其他的JSP容器Q由于这个部分我目前只用qTomcatQ所以将在未来对其他的JSP容器有了(jin)使用l验再向大家介绍?/p>

tianlinux 2007-05-31 21:28 发表评论
]]>
游戏引擎脚本pȝQ一Q?/title><link>http://www.aygfsteel.com/tianlinux/archive/2007/05/30/121006.html</link><dc:creator>tianlinux</dc:creator><author>tianlinux</author><pubDate>Wed, 30 May 2007 14:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/tianlinux/archive/2007/05/30/121006.html</guid><wfw:comment>http://www.aygfsteel.com/tianlinux/comments/121006.html</wfw:comment><comments>http://www.aygfsteel.com/tianlinux/archive/2007/05/30/121006.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tianlinux/comments/commentRss/121006.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tianlinux/services/trackbacks/121006.html</trackback:ping><description><![CDATA[<p>今天开始进行新目的预研,有关游戏引擎的脚本系l。之前自己对Python有所?jin)解Q但也仅仅限于应用层Q如今要把一个脚本系l加入到游戏引擎里面Q一时还有点不知道如何下手。赶紧上|查资料Q逛了(jin)大半天的gamedevQ现在ȝ有点眉目?jin)?br>首先要明的是脚本系l在游戏引擎中扮演什么样的角艌Ӏ?</p> <p><strong>脚本pȝ的必要?/strong></p> <p>游戏作ؓ(f)上层应用E序Q是在游戏引擎的基础上运行的Q现在游戏的发展势来看Q游戏者(gamerQ对游戏的可自我配置性有非常高的需求,特别是在游戏q行时的自我配置Q已l不能通过单的传参数来完成q种配置。所以,整个游戏的架构有分成两大块的发展势。一块是kernelQ另一块是configuration。Kernel是游戏的基础c&Object的集合,而configuration是针对特定的上层应用E序Q游戏本w)(j)Q对kernel的元素进行组l&配置。脚本系l无疑将是configuration的重要组成部分?/p> <p><strong>游戏引擎需要ؓ(f)脚本pȝ提供的接?/strong></p> <p>我们把游戏中的物体(实例Q称为objectQ把可以作用于object的函数叫action<br>1、保存全局变量Q局部变?br>2、得到object(s)的引?br>3、得到object(s)的属性,q调用object的action<br>4、提供timerq行周期性触发action <br>以上4点ƈ不全面,但是却是最最基本需要支持的部分。如果需要更深入Q应该还要提供对?rn)态场景的配置、设|场景结束条件以?qing)完善的Debug机制{等?nbsp;</p> <p><strong>游戏引擎不应该ؓ(f)脚本pȝ提供的接?/strong></p> <p>1、画?amp;播放声音{算?br>2、内存管?br>以上2点也q不全面Q因为目前的目没有|络斚w的需求,所以没有考虑安全{因素进来?br><strong>杂七杂八</strong></p> <p>外设响应</p> <p>我们把所有的gamer的输入都归纳为外设输入。那么在游戏引擎里面Q对外设的响应应该是游戏实时反应能力的直接体玎ͼ在去q从事的游戏引擎目中,采用?jin)类gwindows消息队列的方式,Ҏ(gu)U特定外设输入(比如Q游戏手柄左键按下)(j)Q挂上一个写ȝ函数。在脚本pȝ引入以后Q应该不再挂上一个编译式语言~写的响应函敎ͼ而是调用脚本解释器来q行挂在q个外设上的脚本?strong>所有外N采用脚本来响?/strong>Q这一思想是保证游戏可用户自我配置的关键之一?/p> <p>冗余</p> <p>脚本的性能L令h头疼的。所以在引擎提供l脚本的接口当中Q全面所q?点当然在内)(j)Q不要害怕冗余的情况出现Q而是要针Ҏ(gu)戏开发者的需求,适当的增加引擎输出的功能Q让游戏开发者在使用脚本的时候,能用脚本写得尽量的单。D例来Ԍ(x)比如需要在某个时刻获得M角最q的怪兽Q如果只使用前面所提的4U接口,需要在脚本里面枚D出所有的怪兽Q然后一一与主角的坐标q行距离计算Q然后才能得到最q的一个怪兽。这是十分低效的。如果这一动作需要频J发生,那么势必影响游戏的整体运行效率。解军_法就是在游戏引擎里面提供一个类似功能的APIQ由游戏引擎本n的开发语aQ一般是~译式语aQ来完成q项功能Q而游戏开发者只需要在脚本里面调用q个API卛_完成q项q算。如此做法在效率上应该比前面的做法要高出许多?/p> <img src ="http://www.aygfsteel.com/tianlinux/aggbug/121006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tianlinux/" target="_blank">tianlinux</a> 2007-05-30 22:07 <a href="http://www.aygfsteel.com/tianlinux/archive/2007/05/30/121006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP/Servlet学习(fn)W记Q一Q——JSP容器http://www.aygfsteel.com/tianlinux/archive/2007/05/29/JSP-Servlet.htmltianlinuxtianlinuxTue, 29 May 2007 14:58:00 GMThttp://www.aygfsteel.com/tianlinux/archive/2007/05/29/JSP-Servlet.htmlhttp://www.aygfsteel.com/tianlinux/comments/120767.htmlhttp://www.aygfsteel.com/tianlinux/archive/2007/05/29/JSP-Servlet.html#Feedback8http://www.aygfsteel.com/tianlinux/comments/commentRss/120767.htmlhttp://www.aygfsteel.com/tianlinux/services/trackbacks/120767.htmlQ于是写下这心(j)得,与大家一起分享。由于初涉java Q很多ȝ出的仅仅是经验或个h感受Q加上第一ơ写技术博Q紧张得汗Q谬误难免,Ƣ迎大家多多指教。我的联pL式是Qtianlinux at gmail dot com 。MSN 帐号Qtianlinx at hotmail dot com ?我假设了(jin)(zhn)已l熟(zhn)基本的java 语法Qƈ且对Web 应用E序的概念也有基本的?jin)解了(jin)。我q假设了(jin)(zhn)的计算机已l安装了(jin)JDK1.4以上Q如果还没有装,到sun的官|去下蝲吧,或者google一下,应该很好扑ֈ的。当(zhn)准备好q一切,我们可以开始一起学?fn)JSP/Servlet?jin)?

 

JSP/Servlet 的关p?

JSP QServlet 属于java web 层的技术,作用都是用来实现动态网c(din)JSP 主要面向的是|页设计人员QServlet 主要面向的是E序设计人员。无Z采用两者中哪一U单一的技?wbr>Q你都可以解x有动态网呈现的问题。从q行方式上讲QJSP 事实上需要{译ؓ(f)Servlet 才能q行Q所以,有一U说法说它们?一面两?Q这是很恰当的。Servlet 从本质上Ԍ是java E序片段?

 

JSP/Servlet 容器

既然 Servlet?javaE序片段Q那么它当然是不能直接运行的Q必L它放到某U运行环?wbr>当中Q它才能发挥它的作用。这个环境就是我们讲?容器"。容器也?java E序Q它的主要功能除?jin)?f)Servlet 提供q行环境Q还有更重要的,是提供|络传输协议与java E序实体的相互{换。ؓ(f)什么需要这U{换呢Q因为Web 应用E序是分布式的,客户端和服务器端之间需要交换数?wbr>Q就要通过|络Qƈ在一定的通讯协议下进行。最常见和常用的协议是HTTP 。客L(fng)向服务器发送数据,遵@的是HTTP 协议的数据格式,服务器向客户端发送数据也是遵循HTTP协议的。在客户端和服务器端Q可能存在着不同的编E语a~写的程序,比如javaQC++{等。各U语a都有自己用于处理HTTP协议数据的方法(c)(j)Qؓ(f)?jin)用java提供的各UHTTP处理相关的类Q必dHTTP协议下的数据做一定的转换Q{换成一些java objectQ这h能用java的方法进行数据处理。同理,当这些处理完成,又需要将q些java object转换回HTTP协议下的数据Q反馈给客户端(JSP/Servlet当然存在与服务器端)(j)。JSP/Servlet容器扮演了(jin)完成q个双向转换的角艌Ӏ至于JSP/Servlet容器为javaE序片段提供q行环境的细节,我们在后面再讨论q个问题?br>我用的JSP/Servlet容器是Tomcat 5.5.12。这里给大家一个google上找到的链接Q下载源比较E_?a >http://leshui.clwind.com/Download/apache-tomcat-5.5.12.exe?br>下蝲完成后,卛_安装?br>安装q程没有太大问题Q中间有步需要输入一个管理员密码Q自己随便设吧,q里我们只是针对学习(fn)Q不针对商业应用Q所以设个傻瓜密码也无所谓。这个密码在你配|服务器的时候会(x)用到?/span>

完成?jin)Tomcat的安装,(zhn)马上就可以启动(zhn)自q服务器了(jin)Q^_^Q如果以前没有做q,有点紧张吧?br>在启动以前,让我们先打开web览器,输入Q?a href="http://localhost:8080/">http://localhost:8080Q回车,看到?jin)什么?“该页无法昄”一cȝ昄吧,呵呵Q不要急,马上l?zhn)一个惊喜?br>很简单:(x)开?>E序->Apache Tomcat 5.5->configure tomcat。会(x)看到下面那个对话框:(x)

Z(jin)快点体验到自己徏服务器的快感Q我们不做Q何设|,先点?jin)Start再说吧,{待启动完成。好?jin),现在?zhn)的计算机已l作为服务器启动?jin)。刚才那?#8220;该页无法昄”呢?h一下试试。如果?zhn)在左上角看到那只黄猫Q?zhn)的服务器已l启动了(jin)Q?/p>

在这个网늚左边QAdministration里面Q有Tomcat Manager的链接,点击它,?x)弹Z个输入用户和密码的对话框Q输入刚才安装的时候的帐号密码。默认帐hadminQ密码。。。不?x)就忘?jin)?)?/p>

q入?jin)Manager的页面了(jin)吗?好了(jin)Q?zhn)可以览一下这个网늚内容Q在Applicationsq个列表里面Q列Z(jin)在当前服务器上可以浏览的所有\径。?zhn)可以随意览一下,里面如果有一些jsp的例子?zhn)现在无法理解Q没有关p,我们现在先抛开它。今天要做的最后一件事是在这个服务器上徏立自q一个web文g夹,以后我们在q个文g夹中部v我们自己的写的小web应用E序QJSP/ServletQ。目前列表中的所有\径,都是在Tomcat的安装\径下Q?webapp/xxx下面?/p>

好了(jin)Q言归正传,我们现在来徏自己的文件夹Qƈ发布到服务器上。在(zhn)的本地盘上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好?jin),看这个网늚最上面Message栏,是否已经昄"OK - Deployed application at context path /tianlinux"Q好?jin),现在在Applications列表里面也有/tianlinuxq个子项?jin)。点dQ会(x)跌{到directories list的页面。当?dng)现在q个文g多w面没有Q何的文g和文件夹Q怪可怜的Q新Z个txt文档Q改名ؓ(f)Qhello.jspQ在里面d如下一句代?br>

<% out.println("Hello, JSP/Servlet"); %>


保存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今天就打完收工?jin)。。。第一ơ写Q好累。如果没有搞定。。。给我留a或写信吧?/p>

 

下期QJSP基础?/p>

tianlinux 2007-05-29 22:58 发表评论
]]>
վ֩ģ壺 ɰ| | ̶| | | Ͷ| ٸ| ¦| | | Ѱ| Ƥ| ٸ| | | | | | | | ƽ| | ĵ| пѷ| ÷ӿ| | | ˮ| Զ| | Ƽ| | | | ţ| | | | | | |