Servlet
Servlet是一个用Java语言编写的接口,它的定义了一些与浏览器交互的方法。
一个Servlet程序就是一个实现了了Servlet
接口的java类,它能够处理客户端发来的请求,然后对其进行响应。servlet在编写完成后部署到服务器上,就能够运行然后处理各种请求然后响应。
第一个Servlet程序
这次使用父子maven的方式进行开发,即一个maven主项目,下面多个子模块(model)这样可以减少重复导包。
具体步骤:
- 建立一个maven并且不勾选
create from archetype
- 在这个maven的
pom.xml
中添加依赖<!-- 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> <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> </dependencies>
- 建立一个名为cservlet的model,这次可以选择从
archetype
中选择一种模板建立。这个子model就可以直接使用父项目的拿两个jar包。 - 把cservlet的
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">
</web-app >
- maven父子项目搭建完成。
这里出现了一个问题,在上面步骤都完成后编写servlet时,idea提示项目中没有servlet的依赖。然后去视频中找,发现是model中pom.xml
少了parent
标签,手动添加后问题解决。
<parent>
<artifactId>parentMaven</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
- 建立一个继承自
HttpServelet
并覆写doGet()
和doPost()
方法类。 - 在
web.xml
中建立与servlet的映射。这个底层好像是反射实现的,所以我们要告诉xml我们的类的全名,以及开放给外界的访问位置(就是目录)
//servlet告诉tomcat我们要运行是哪个servlet
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.leei.HelloServlet</servlet-class>
</servlet>
//servlet-mapping提供浏览器访问的位置
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
- 配置tomcat并运行