本文简单介绍下通过「 web.xml 文件」以及通过「注解」的方式简单配置 servlet。
通过 web.xml 文件
为方便阅读,此项目目录结构如下图所示:
其中 ServletDemo1
中的 ServletDemo1 类需要实现 Servlet 接口内容,代码如下:
package com.demo.web.servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletDemo1 implements Servlet {
/**
* 初始化方法
* 在 servlet 创建时执行,只执行一次
* @param servletConfig
* @throws ServletException
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* 提供服务方法
* 每当 servlet 被访问时执行,执行多次
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 此代码方便稍后测试访问指定路径后,servlet 是否配置成功
System.out.println("Hello,Servlet!");
}
@Override
public String getServletInfo() {
return null;
}
/**
* 销毁方法
* 在服务器正常关闭时访问,只有一次
*/
@Override
public void destroy() {
}
}
其中 web.xml
需要在 <web-app> 标签内加上 <servlet> 标签体 <servlet-mapping> 中的内容,具体内容如下:
<?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_3_1.xsd"
version="3.1">
<!--配置 servlet-->
<servlet>
<!--demo1 为自定义的名称-->
<servlet-name>demo1</servlet-name>
<!--com.demo.web.servlet.ServletDemo1 是全类名,在 com.demo.web.servlet 下的某个完整类名,格式为:包名+类名-->
<servlet-class>com.demo.web.servlet.ServletDemo1</servlet-class>
</servlet>
<!--配置映射-->
<servlet-mapping>
<!--demo1 为 <servlet> 标签中的自定义名称,两者必须相同-->
<servlet-name>demo1</servlet-name>
<!--映射路径: /demo1 为以后可被访问的路径,例如:http://localhost:8080/demo1-->
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
此时,在正确配置 Tomcat 后,访问 http://localhost:8080/demo1
后会在 IDEA 的 Output 窗口中输出 「Hello,Servlet!」,如下图所示:
通过注解方式
条件:创建 JavaEE 项目时,选择 Servlet 的版本是 3.0 以上(也就是选择的 Java EE version 为 Java EE 6 以及以上)。
为方便阅读,此项目目录结构如下图所示:
其中 ServletDemo1
中的 ServletDemo1 类需要实现 Servlet 接口内容,代码如下:
package com.demo.web.servlet;
import javax.servlet.*;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo1")//此行为注解配置 Servlet 的代码
public class ServletDemo1 implements Servlet {
/**
* 初始化方法
* 在 servlet 创建时执行,只执行一次
* @param servletConfig
* @throws ServletException
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* 提供服务方法
* 每当 servlet 被访问时执行,执行多次
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 此代码方便稍后测试访问指定路径后,servlet 是否配置成功
System.out.println("Hello,Servlet By Annotation!");
}
@Override
public String getServletInfo() {
return null;
}
/**
* 销毁方法
* 在服务器正常关闭时访问,只有一次
*/
@Override
public void destroy() {
}
}
此时,在正确配置 Tomcat 后,访问 http://localhost:8080/demo1
后会在 IDEA 的 Output 窗口中输出 「Hello,Servlet By Annotation!」,如下图所示:
One More Thing:
查看 @webServlet
此注解代码中的:
java.lang.String name() default "";
java.lang.String[] value() default {};
java.lang.String[] urlPatterns() default {};
@WebServlet(urlPatterns = "/demo1")
→@WebServlet(value = "/demo1")
→@WebServlet("/demo1")
,此时也可以得到通过注解配置 Servlet 的结果。
urlPatterns 配置
urlPartten:Servlet 的访问路径
一个 Servlet 可以定义多个访问路径例如:@WebServlet({"/x1","/x2","/x3"})
-
/xxx:路径匹配
-
/xxx/xxx:多层路径,目录结构
-
*.do:扩展名匹配