1. Servler简介
Servlet是Sun公司开发动态web的一门技术。
Servlet本质是一个接口,如果要开发一个Servlet程序,只需两个步骤:
- 编写一个类,实现Servlet接口
- 把开发好的java类部署到web服务器中
一般情况下,习惯于把实现了Servlet接口的Java程序,叫做Servlet。
在实际开发中,我们不需要真的去写一个类,自己实现Servlet接口,因为Sun公司已经有两个默认的Servlet接口实现类,即GenericServlet、HttpServlet(HttpServlet继承了GenericServlet)。我们只需要继承HttpServlet,然后该使用就使用,该重写方法就重写方法即可。
2. 新建一个javaweb项目
2.1 环境搭建
- IDEA
- tomcat 9
- maven 3.6.3
- jdk 1.8
将IDEA、tomcat 9 、maven 3.6.3、jdk 1.8,都下载并安装好,同时配置好环境变量。
总之这一步是将需要用到的东西,都准备好,一切能正常使用就好。
2.2 新建javaweb项目
- 利用IDEA新建一个标准的 maven 项目,项目名称填上 javaweb ,待创建好后,将javaweb下面的 src 文件夹删除掉。
- 右键 javaweb ,新建一个 Module,名称填上 01-servlet ,其它看个人喜欢,配置一下,然后完成创建。
- 修改项目的maven配置,在IDEA的setting中,找到maven的配置,修改为maven 3.6.3的相关配置信息。
- 在 01-servlet/src/main 目录下,新建一个 java 文件夹和一个 resources 文件夹。
- 至此,整个项目的基础形式,创建完成,目录结构如下所示。
2.3 修改项目
- 在 01-servlet 的 pom.xml 文件中,引入对 servlet、jsp 的依赖,并增加对文件资源的过滤。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yuhuofei.servlet</groupId>
<artifactId>01-servlet</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>01-servlet Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--添加Servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--添加JSP依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<build>
<finalName>01-servlet</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
- 在 java 目录下,新建一个包 com.yuhuofei.servlet ,在包中,新建一个 HelloServlet.java 类
package com.yuhuofei.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @Description 继承HttpServlet,重写doGet方法
* @ClassName HelloServlet
* @Author yuhuofei
* @Date 2022/5/9 21:30
* @Version 1.0
*/
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("====开始执行doGet方法====");
//响应流
// ServletOutputStream outputStream = resp.getOutputStream();
PrintWriter writer = resp.getWriter();
writer.print("Hello,Method-Get!");
}
}
- 修改 web.xml 文件,加入 servlet 相关的配置内容
<?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">
<!-- 注册servlet-->
<servlet>
<servlet-name>Get</servlet-name>
<servlet-class>com.yuhuofei.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 配置servlet的请求路径-->
<servlet-mapping>
<servlet-name>Get</servlet-name>
<url-pattern>/doGet</url-pattern>
</servlet-mapping>
</web-app>
- 为 01-servlet 这个 Module 配置好 tomcat 服务器,并指定上下文路径为 01-servlet
- 到这里,项目改造完成
2.4 测试项目
- 启动 tomcat 服务器,进行测试
- 浏览器自动打开访问界面
- 将浏览器中的路径,改为 http://localhost:8080/01-servlet/doGet ,然后回车,访问自己写的 servlet
- 服务器中,正确打印日志信息
- 经过以上的步骤,这个简单的项目就完成了。