第一个Servlet程序―Hello World!
Step1:编写HelloWorldServlet类
编写一个Servlet,实际上就是编写一个实现了javax.servlet.Servlet接口的类。
我的Tomcat安装的路径是H:\Java-tools\apache-tomcat-7.0.47
下面用%CATALINA_HOME%来代替
在%CATALINA_HOME%\webapps新建一个ex1目录,再在ex1目录下再建立一个子目录src
将编写好的HelloWorldServlet.java源文件放在子目录src下。详细代码:
package org.lixiyu.ex1.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class HelloWorldServlet implements Servlet { private ServletConfig config; public void destroy(){} public ServletConfig getServletConfig() { return config; } /** *该方法很少使用,因此返回null即可 */ public String getServletInfo() { return null; } /** *ServletConfig对象由容器构造。容器在调用init()方法时,将其作为参数传给Servlet */ public void init(ServletConfig config) throws ServletException { this.config=config; } public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException { //得到PrintWriter对象。Servlet使用输出流来产生响应 PrintWriter out=res.getWriter(); //向客户端发送字符数据 out.println("Hello World"); //关闭输出流 out.close(); } }
大概实现过程:
在Servlet中,主要的方法是service(),客户端发出请求,Tomcat将调用Servlet实例的service()方法对请求进行处理。
service()方法中,先通过ServletResponse类中的getWriter()方法调用得到一个PrintWrite类型的输出流对象out,然后调用out对象的println()方法向客户端发送字符串“Hello World”,最后关闭out对象。
Step2:编译HelloWorldServlet.java
打开命令提示符,转到所在目录%CATALINA_HOME%\webapps\ex1\src下,然后执行:
javac -d . HelloWorldServlet.java
在这之前要先配置servlet环境变量:将%CATALINA_HOME%\lib\servlet-api.jar加入到ClassPath环境变量下
否则会出现错误如下图所示
正确编译会生成一个org包
Step3:部署HelloWorldServlet
在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。如果这两个目录下存在同名的类,起作用的将是calsses目录下的类。
在%CATALINA_HOME%\webapps\ex1目录下新建一个子目录WEB-INF(注意是大写)
再在WEB-INF目录下新建一个calsses目录
将生成的HelloWorldServlet.class文件连同所在org包一起放到WEB-INF\classes目录下
接下来,需要通过web.xml来对servlet进行部署
可以到%CATALINA_HOME%\webapps\ROOT\WEB-INF目录下复制一份web.xml存放到ex1\WEB-INF目录下。这个web.xml内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> </web-app>
然后编辑这个文件,添加HelloWorldServlet配置,如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>org.lixiyu.ex1.servlet.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldServlet</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping> </web-app>
Step4:访问HelloWorldServlet
确保Tomcat服务器已经启动。
通过浏览器访问,输入地址:http://localhost:8080/ex1/helloworld