??xml version="1.0" encoding="utf-8" standalone="yes"?>
选择什么样的题材来写第二篇呢?我在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)
单的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>
以目前的情况Q我们ƈ没有必要把代码一句一句的都去搞懂。因为大部分的代码所有jsp文g转换出来都是相同Q是JSP容器已经讑֮好的。所以我们只x(chng)其中的部分?/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>
JSP/Servlet 的关p?
JSP QServlet 属于java web 层的技术,作用都是用来实现动态网c(din)JSP 主要面向的是|页设计人员QServlet 主要面向的是E序设计人员。无Z采用两者中哪一U单一的技?wbr>Q你都可以解x(chng)有动态网呈现的问题。从q行方式上讲QJSP 事实上需要{译ؓ(f)Servlet 才能q行Q所以,有一U说法说它们?一面两?Q这是很恰当的。Servlet 从本质上Ԍ是java E序片段?
JSP/Servlet 容器
既然 Servlet?javaE序片段Q那么它当然是不能直接运行的Q必L它放到某U运行环?wbr>当中Q它才能发挥它的作用。这个环境就是我们讲?容器"
完成?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)就忘?sh)(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)的本地盘?sh)Q意地新徏一个文件夹QƈL命名。我q里以D:/webapp/Z子。我x(chng)q个文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>
保存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>