Servlet HelloWorld

1. Servlet HelloWorld Maven环境

1.1. 依赖

1
2
3
4
5
6
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

1.2. 编写Servlet

继承HttpServlet,重写service方法

1
2
3
4
5
6
7
8
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 输出响应的内容
resp.getWriter().write("<h1>HelloWorld</h1>");
}
}

1.3. 配置Serlvet

编辑web.xml,配置Servlet

1
2
3
4
5
6
7
8
9
10
11
12
<servlet>
<!-- 给servlet取名,名称随意 -->
<servlet-name>haha</servlet-name>
<!-- 指定Servlet类 -->
<servlet-class>demo.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 与<servlet>的<servlet-name>对应 -->
<servlet-name>haha</servlet-name>
<!-- 指定URL -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>

1.4. 测试

运行tomcat,访问/hello

2. Servlet运行原理

浏览器访问 http://localhost:8080/webapp1/hello

  • 前面的localhost:8080,就指定了要访问哪个Tomcat
  • Tomcat接受到请求,分析URL,根据虚拟目录webapp1找到对应的web应用
  • 找到该web应用的web.xml,根据URI/hello找到对应的<servlet-mapping>,根据<servlet-name>找到关联的<servlet>
  • 找到<servlet-class>,得到对应Servlet的全类名。Tomcat就会通过Class.forName()cls.newInstance()反射创建Servlet,再执行service()处理本次请求
1
2
3
4
5
6
7
8
<servlet>
<servlet-name>haha</servlet-name>
<servlet-class>demo.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>haha</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
panchaoxin wechat
关注我的公众号
支持一下