Servlet(Server Applet),全称 Java Servlet,是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。本系列将一步步地写出一个 Servlet 程序。
这篇博文将演示如何创建一个 servlet。
新建项目
首先,使用 Maven 的 maven-archetype-webapp
创建一个 Java Webapp 项目。这样就可以得到一个 Java Webapp 项目的基本骨架。将项目命名为 servletdemo
。
创建 Servlet 对象
新建一个名为 DemoServlet 的类。
因为 GenericServlet
已经实现了一个 servlet 的生命周期方法,而且这里也不需要对生命周期方法做定制化,所以直接继承一个 GenericServlet
就可以。
1 2 3 4 5 6 7
| public class DemoServlet extends GenericServlet {
@Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
} }
|
实现这个 servlet 的功能
service()
方法定义了这个 servlet 的具体实现,这里先让它返回一个 HTML。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
res.setCharacterEncoding("utf-8");
try (PrintWriter writer = res.getWriter()) { writer.print("<html lang=\"en\">"); writer.print("<body>"); writer.print("<b>Response from DemoServlet</b>"); writer.print("</body>"); writer.print("</html>"); } }
|
注册到容器
光有 servlet 还不够,下面还需要让容器知道有这个 servlet,以及知道要把哪些请求发往这个 servlet。这里可以通过修改 web.xml
的方式,也可以通过注解的方式完成注册。
web.xml
web.xml
位于 src/main/webapp/WEB_INF/web.xml
。
向其中添加如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <servlet> <servlet-name>DemoServlet</servlet-name> <servlet-class>com.boris.tomcatlistener.servlet.DemoServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>DemoServlet</servlet-name> <url-pattern>/demoServlet</url-pattern> </servlet-mapping>
|
注解
WebServlet(String value)
注解表明了这个类是一个 servlet,其中 value
的值等同于 web.xml
中 url-patterm
参数。
在项目部署时,容器会处理 WebServlet
注解,并将这个 servlet 与指定的 URL pattern 绑定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @WebServlet(value = "/demoServlet") public class DemoServlet extends GenericServlet {
@Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
res.setCharacterEncoding("utf-8");
try (PrintWriter writer = res.getWriter()) { writer.print("<html lang=\"en\">"); writer.print("<body>"); writer.print("<b>Response from DemoServlet</b>"); writer.print("</body>"); writer.print("</html>"); } } }
|
运行起来吧,servlet 哟!
在上面步骤中,创建一个 servlet 的所有步骤就完成了,尽管这个 servlet 的功能及其有限,它甚至不能区分发来的 HTTP 请求。
那么,就将这个 servlet 部署到容器中,让它开始工作吧。启动成功后,使用浏览器,或者 HTTP 请求构造工具,向 http://localhost:8080/servletdemo/DemoServlet
(假设 Tomcat 在监听 8080 端口)发一条请求。
如果一切正常的话,就可以看到服务器返回了上面 service()
方法中指定的内容。
系列博文