📄 right10_1_8.htm
字号:
<html><head><title>JAVA编程语言</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><link rel="stylesheet" href="../../../css/text.css" type="text/css"></head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" ><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td valign="top"> <table width="90%" border="0" cellspacing="0" cellpadding="0" align="center" bgcolor="#FFFFFF"> <tr> <td valign="top"> <p class="pt9-black"> Resin自带一个Servlet Runner和HTTP Server,因此要构建一个简单的Web环境,光有Resin已经足够了,不需要额外的支持软件。Resin不需要安装,解压之后即可使用。<br> <br> Resin目录下有几个子目录,bin目录存放的是可执行文件,要启动HTTP Server和Servlet Runner只需要分别点击其中的httpd.exe和srun.exe即可,启动后会出现四个窗口,分别对应HTTP Server的标准输出,启/停控制和Servlet Runner的标准输出,启/停控制。conf目录下存放的是Resin Servlet Runner的配置文件,这是配置整个Web环境的关键,包括Servlet的配置和后面要用到的JSP的配置。doc目录是默认的发布目录,即Resin自带的HTTP Server是以这个目录为根目录的。<br> <br> 下面我们以一个最简单的HelloWorld的例子,来讲解如何配置Resin,使其能运行Servlet程序,同时也做为Servlet编写的入门。程序如下:<br> <font color="339900">//HelloServlet.java</font><br> import java.io.*;<br> import java.util.*;<br> import javax.servlet.http.*;<br> import javax.servlet.*;<br> <font color="339900">//导入必要的包</font><br> public class HelloServlet extends HttpServlet { <br> <font color="339900">//所有Servlet必须从HttpServlet派生</font><br> public void doGet (HttpServletRequest req, HttpServletResponse res) <br> throws ServletException, IOException <br> <font color="339900">//doGet()是这个Servlet的核心,真正处理请求的地方</font><br> {<br> res.setContentType("text/html"); <br> <font color="339900">//设置相应的类型为text/html</font><br> PrintWriter pw = res.getWriter(); <br> <font color="339900">//从HttpServletResponse得到输出流</font></p> <p> <span class="pt9-black"> pw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">");<br> pw.println("<head>");<br> pw.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">");<br> pw.println("<!-- The Servlet expression tags interpolate script variables into the HTML -->");<br> pw.println("<title>Hello, world!</title>");<br> pw.println("</head>");<br> pw.println("<body bgcolor=#cc99dd>");<br> pw.println("<h1>Hello, world!</h1>");<br> pw.println("</body>");<br> <font color="339900">//上面的语句都是向客户端打印HTML文本</font><br> pw.close(); <br> <font color="339900">//关闭HttpServletResponse,使Web服务器知道相应结束</font><br> }<br> public HelloServlet() {} <font color="339900">//构造函数,可以不要</font><br> }<br> <br> 这是最简单的一个Servlet程序,整个类从HttpServlet派生,就跟Applet一样,这个派生关系是必须的。这个Servlet必须实现doGet()方法(因为它是作为静态页面通过地址访问的,这种方式在HTTP中称为GET请求,在后面还会有更具体的讲解),这是这个Servlet真正处理请求的地方,是整个Servlet的主体,就跟线程体的run()方法一样。doGet()有两个参数HttpServletRequest req和 HttpServletResponse res。HttpServletRequest包含了客户请求的各种信息,HttpServletResponse则包装了服务器响应,主要处理对客户机的输出。这个程序是很简单的,如果对网络编程和HTML有一些概念的话,很容易就应该能理解。<br> <br> 通过javac对以上程序进行编译,我们可以得到HelloServlet.class,下面我们就通过配置Resin来运行这个Servlet。前面说过如果你没有修改过Resin的配置文件的话,doc是Resin默认的发布目录。发布目录下的WEB_INF/classes是Resin默认的Classpath,读者只要把自己的Servlet拷贝到该目录下,Resin就能识别,当然只要拷贝的有效的系统的或用户的Classpath下,Resin都是能够找到的。我们把HelloServlet.class拷贝到WEB_INF/classes目录下。接下来就需要修改conf目录下的resin.conf文件,来配置我们的Servlet。读者可以使用任何一种自己所熟悉的文本编辑器来打开该配置文件。找到<web-app id='/'>,在它和 </web-app>之间任何地方添加以下的配置语句(可以参考已有的语句)<br> <servlet-mapping url-pattern='Hello' servlet-name='Hello' /><br> <servlet servlet-name='Hello'<br> servlet-class='HelloServlet' ><br> </servlet><br> <br> 这样当客户端产生/Hello请求的时候,Resin就能把这个请求定向到HelloServlet上,该Servlet就能正常运行了,我们也可以采用以下的配置语句<br> <servlet-mapping url-pattern='Hello' servlet-name='HelloServlet' /><br> <br> 这种情况下,没有对Servlet的名字进行映射,系统会默认的使用servlet-name作为servlet-class进行类的查找,所以servlet-name必须填写正确的类名,而不能是随意的名字。关于Resin更多的配置信息,有兴趣的读者可以参考Resin的帮助文档,这里就不再赘述了。<br> <br> 下面我们启动Http Server和Servlet Runner(通过双击bin下的httpd.exe和srun.exe)。这样我们就可以通过浏览器访问这个Servlet了。打开浏览器,比如IE,在地址栏键入http://localhost:8080/Hello,我们可以打开如下的一个网页:<br> </span><img src="../../../images/tu/ch10/10_1_8.gif" width="440" height="314"><br> <br> <span class="pt9-black">通过查看源码,我们可以得到如下的结果<br> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><br> <head><br> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><br> <!-- The Servlet expression tags interpolate script variables into the HTML --><br> <title>Hello, world!</title><br> </head><br> <body bgcolor=#cc99dd><br> <h1>Hello, world!</h1><br> </body><br> <br> 很显然这些文本正是我们在Servlet中向客户端所打印的信息,在Http头部content=text/html也是我们在程序中所设置的。<br> <br> 通过这样一个简单的HelloWorld的程序,读者对Servlet的工作原理的基本配置方法应该有了一个大概的了解,如果读者对这个例子还有疑问,务必搞清楚后再继续学习。</span></p> </td> </tr> </table> </td> </tr></table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -