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、优先级问题
指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求;