最近接触了 Java Servlet,在这里写下笔记和大家分享。菜鸟一个,有不正确的地方,请各位指正交流。
Java Servlet 是不能单独运行的,它像是一个组件,得放到 web 容器才能响应用户的请求。整个过程是这样的,用户发起请求,web 容器接收了请求,根据配置然后分装一个对象,调用我们写的 Java Servlet 类。Tomcat 就是一个 web 容器。
接下来要做的分为三步:
1. 写一个类来处理请求,然后把这个类编译成字节码,也就是 class 文件;
2. 在 tomcat 的 webapps 目录新建一个 subdir 文件夹,下面有 WEB-INF 文件夹,WEB-INF 下面有 classes 文件夹 和 web.xml 文件。把第一步生成的 class 文件放在 classes 目录下面,注意,如果有包名,需要在 classes 下面建立相应的包名然后再把上面生成的 class 文件放在该包下面,web.xml 的内容下面会给出;
3. 现在就可以发起请求了;
第一步:
//HelloServlet.java
package com.phiau.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.getWriter().println("you are here!!!!!!");
response.getWriter().flush();
response.getWriter().close();
}
}
然后用 Javac 编译,在命令行执行
javac -cp E:\apache-tomcat-6.0.20\lib\servlet-api.jar HelloServlet.java
这个就会生成 HelloServlet.class 文件
第二步:
在 E:\apache-tomcat-6.0.20\webapps 下面创建 subdir 目录,并创建 classes 文件夹,把上面生成的 class 文件放到 E:\apache-tomcat-6.0.20\webapps\subdir\WEB-INF\classes\com\phiau\servlet 目录下面。
然后在 subdir 目录下面配置 web.xml 文件,web.xml 这个是配置文件,最常见的作用是描述了 url 和 servlet 的映射
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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">
<display-name>platform-auto-package-internal</display-name>
<servlet>
<servlet-name>helloservlet</servlet-name>
<servlet-class>com.phiau.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloservlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
上面定义了一个描述了一个 servlet,标示是 helloservlet,对应的类是
com.phiau.servlet.HelloServlet,然后指定了 url 的匹配规则
我本地的目录结构是
第三步:
因为上面的类处理的是 get 请求,那么现在就可以在浏览器或者其他地方发起 get 请求了。操作之前,记得得启动 tomcat,我本地的是 E:\apache-tomcat-6.0.20\bin\startup.bat
然后在浏览器输入 http://localhost:8080/subdir/k 就可以了,后面 k 只是随便的字符,任意字符都可以,本例子,如无意外,浏览器会显示 you are here!!!!!!