知道了Servlet的作用后,我们来看一个Servlet的程序运行实例,为什么要看运行实例呢?因为要想成功运行一个Servlet程序,需要配置一些文件。
Servlet程序的编写
开发一个可以处理的HTTP请求的Servlet程序,肯定是要继承HttpServlet类,而且在自定义中Servlet类中至少还要覆写HttpServlet类中提供的doGet()方法,方法如下:
- public void doGet(HttpServletRequest req,HttpServletResponse resp)
- throws ServletException,IOException
从此方法中不难看出,此方法可以使用request和response对象。
理解不了不要担心,我们来以一个实例说明一下,从Hello World说起。
在Myeclipse中创建项目test,然后创建包Servlet,在包底下创建Servlet_01.java。如下图所示:
建好项目后不要急着写代码,我们还要导入一个jar包----Servlet-api.jar,这是Servlet的jar包,这个包需要去网上下载,不过本文末尾附加了此包的下载链接。
将jar包导入Myeclipse中的lib文件中
然后编写Servlet_01.java的代码,如下:
- Servlet_01.java
- package Servlet;
- import java.io.*;
- import javax.servlet.ServletException;
- import javax.servlet.http.*;
- public class Servlet_01 extends HttpServlet{
- public void doGet(HttpServletRequest req,HttpServletResponse resp)
- throws ServletException,IOException{ //覆写doGet()方法
- PrintWriter out=resp.getWriter(); //准备输出
- out.println("<html>");
- out.println("<head><title>WEB开发</title></head>");
- out.println("<body>");
- out.println("<h1>Hello World</h1>");
- out.println("</body>");
- out.println("</html>");
- out.close();//关闭输出
- }
- }
此代码中继承了HttpServlet,然后重写了doGer()方法,本程序首先从HttpServletResponse对象中取得一个输出流对象,然后通过打印输出HTML元素。
在代码中request变成了req,response变成了resp,虽然名称变化了,但是其操作的功能是一样的,并没有变化
大家可以看到,HTML的代码都是用out.println("<>")来输出的,这样很麻烦对吧,所以就是为了避免Servlet编程的这样麻烦,JSP才出世了,JSP就是为了输出方便才被广发应用的。也就是说JSP在一定程度上就是Servlet,Servlet要比JSP早。
一个Servlet程序就编写好了,但是现在还没有办法访问和执行,因为我们得需要配置一些东西来支持Servlet的运行。
Servlet程序运行的前提配置操作
虽然一个Servlet已经正常的开发完成了,但是现在此Servlet并不能被外部所访问,因为还缺少了另一个配置,这个配置就是映射的配置。即:每一个Servlet都必须通过web.xml文件进行映射的路径指定。这个web.xml在tomcat/webapps/test项目名称/WEB-INF/web.xml,用记事本打开,在<web-app></web -app>之间的随意某个地方写上如下代码:
- <servlet>
- <servlet-name>Servlet</servlet-name>
- <servlet-class>Servlet.Servlet_01</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Servlet</servlet-name>
- <url-pattern>/Servlet/Servlet_01</url-pattern>
- </servlet-mapping>
如下图所示:
ervlet-name 可以自己命名,但是两个servlet-name必须一致。
servlet-class 为路径,就是包.类 的名称。
url-pattern 为虚拟路径,访问的时候就通过这个路径进行访问,这个路径是自己命名的。
整个命名中,只有servlet-class 中的内容是固定的,取决于自己包的名称和.java的名称,其他的都是自己命名的,但是自己命名的要自己记住。
运行操作
修改完web.xml之后需要重启tomcat服务器,(注意:只要web.xml中的内容有变化,就必须重新启动服务器)如果没有错误的话,我们就可以在浏览器中输入:http://localhost:8080/项目名称/web.xml中配置的url-pattern的名称 ,在我们的这个项目中如下;http://localhost:8080/test/Servlet/Servlet_01
运行后如下图所示:
注意:
此操作中,有三点是必须得注意的:
1. web.xml中的配置一定要配置正确了,尤其是路径classpath是包名称 +类名称。在<url-pattern>中是在浏览器中写入的内容。
2. 运行的时候在浏览器中输入的地址是 <url-pattern>中自己写的内容,比如在web.xml中的url-pattern>中写的是/A,那么在地址栏中输入的就是 http://localhost:8080/test/A.
3. 一定要注意覆写的方法,以及Servlet代码的写法。