1.Servlet简介
Servlet就是sun公司开发动态web的一门]技术
Sun在这些API中提供一个接口叫做: Servlet, 如果你想开发一个Servlet程序, 只需要完成两个小步骤:
编写一个类,实现Servlet接口
把开发好的Java类部署到web服务器中。
把实现了Servlet接口的ava程序叫做,Servlet。
2.HelloServlet
1.构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel;这个空的工程就是Maven主工程;|



2.导入servlet-api依赖。

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency>
3.新建一个子项目,servlet-01。





关于maven项目中父子工程的理解:
父工程pom中会有:
<modules> <module>servlet-01</module> </modules>
子工程pom中会有:
<parent> <artifactId>javaweb-02-servlet</artifactId> <groupId>com.allen</groupId> <version>1.0-SNAPSHOT</version> </parent>
4.把web.xml中的内容更新成最新的模板
<?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"> </web-app>
5.编写一个servlet程序
在servlet-01中新建java、resources,并标记文件

新建com.allen.servlet包,并在包下创建HelloServlet类。

package com.allen.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter witer = resp.getWriter();
witer.print("Hello, Servlet!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}6.编写servlet映射。
为什么需要映射:我们写的是IAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
在WEB-INF下的web.xml中添加:
<!-- 注册Servlet --> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.allen.servlet.HelloServlet</servlet-class> </servlet> <!-- Servlt映射路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
7.配置tomcat并启动。
补充:
如果遇到问题:Information:java: javacTask: 源发行版 8 需要目标发行版 1.8
解决方法:https://www.liqinglin0314.com/article/292

访问hello测试:

mapper问题:
1、一个servlet可以指定一个mapping映射路径:
<servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
2、一个servlet可以指定多个映射路径:
<servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello2</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello3</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello4</url-pattern> </servlet-mapping>
3、一个servlet可以指定通用映射路径:
<servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello/*</url-pattern> </servlet-mapping>
4、默认请求路径
<servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
5、指定一些后缀或者前缀
<!-- 可以自定义后缀实现请求映射 注意:.*前面不能加项目映射的路径 --> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
6、优先级问题
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;