servlet入门
servlet是什么
Servlet是sun公司提供的一个开发动态web的接口,如果你想要的开发一个servlet应用,只需要完成两个步骤:
- 编写一个类,实现servlet接口
- 把该类部署到web服务器中
Servlet有两个默认的实现类:HttpServlet
和GenericServlet
Hello Servlet
-
构建一个Maven项目,选择webapp模板
-
在
main
目录下创建java
和resources
文件夹,并分别标记为源文件夹和资源文件夹
-
导入相关依赖,如下
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency>
-
在Java目录下新建一个
HelloServlet
类,并继承HttpServlet
类,内容如下import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello servlet!</h1>"); out.println("</body>"); out.println("</html>"); } }
-
在WEB-INF下的
web.xml
中注册该servlet,并指定映射关系,内容如下<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <!--注册servlet--> <servlet> <servlet-name>helloServlet</servlet-name> <!--指定该servlet对应的类--> <servlet-class>HelloServlet</servlet-class> </servlet> <!--一个servlet对应一个Mapping--> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <!--请求路径--> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
-
配置Tomcat服务器,点击add configuration,添加本地tomcat,并部署项目
-
在下图所示的位置可以修改项目的访问路径
-
运行项目后,访问http://localhost:8080/hello就可以看到到hello servlet了。
路径映射(servlet-mapping)
servlet的路径映射主要有以下几种类型
-
指定一个路径:只有指定的路径可以访问到该servlet
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
-
指定多个路径:这些指定的路径都可以访问到该servlet
<servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/hello2</url-pattern> </servlet-mapping>
-
指定通用路径:在路径中
*
表示通配符,例如/hello/*
表示hello
下的任意路径都可以;/*
表示任意路径(默认路径),注意:通用路径的优先级是最低的 -
指定后缀:例如
*.do
表示以.do
结尾的路径,注意:*.do
前不能加路径