参考资料
《Java Web开发基础教程》 —— 李俊(主要)编著
文章目录
1. Servlet 简介
Servlet 的定义:Servlet是一种运行在Web服务端的Java
应用程序,是由SUN公司提供的一种用于开发动态
Web资源的技术。
Servlet 的作用:
- 收集来自网页
表单<form>
的用户输入 - 通过与数据库交互来操作数据
动态
创建网页
Servlet 的本质:遵循规范进行编写的Java类,没有main方法,创建、使用、销毁都有Servlet容器
进行管理
如上图所示,将HTTP请求交由给Servlet程序处理的HTTP服务器通常称为Servlet容器
,常见容器有Tomcat
、Jetty、WebLogic以JBoss等
2. 开发环境搭建
2.1 安装配置Tomcat
- Windows10 操作系统
- JDK8——用于支持基于Java语言开发的软件环境
- Tomcat9——基于Java语言开发的免费开源的Web应用服务器,即Servlet容器
- IDEA 2021 专业版——Java语言开发的集成环境,可搭建JavaWeb项目(Community Edition社区版除外)
这里主要介绍Tomcat的安装与配置
Tomact官网 https://tomcat.apache.org/
以 【Tomcat 9.0.52 Released】版本为例
选择可执行文件,方便安装
安装后的目录结构
配置环境变量,在系统变量一栏新建,用于表示JDK和Tomcat的目录
在系统变量中的PATH变量添加JDK和Tomcat的bin文件夹
至此,Tomcat配置完毕,接下来是web项目的创建。
2.2 IDEA创建Web项目
首次创建Java企业项目,需要新建Tomcat的服务器
找到之前安装好的Tomcat目录
若下方未显示JDK,点击添加后,选择对应的JDK目录即可
点击下一步后,只需选择Servlet
目前的项目结构
3. Hello Servlet
3.1 编写测试类
HelloServlet.java
package com.example.project;
import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name = "helloServlet", value = "/hello")
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("Hello,Servlet!");
}
}
3.2 编写跳转页面
index.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="hello">Hello Servlet</a>
</body>
</html>
访问localhost:8080/project_war_exploded
的页面
点击超链接后的页面
3.3 修改Tomcat配置
通过刚才的测试可以发现,访问的URL末尾有项目的名称project_war_exploded,那么如何省去这个名称,使得测试URL看起来更简洁呢,接下来就需要配置一下Tomcat
首先设置自动更新类和资源,这样在修改JSP页面的时候,服务器可以自动的刷新
接着点击部署,然后向下滑动滚动条
选择第一个空白
选择完毕后依次点击应用Apply和确定OK
再次启动Tomcat后,效果如下
4.Servlet 标识的两种方式
对于部分3的测试,你是否疑惑,为什么在点击超链接后,web服务器能执行java类的代码呢?
在了解这些之前,我们看看前端页面的关键一句代码:<a href="hello">Hello Servlet</a>
当我们在页面点击超链接后,地址URL变成了localhost:8080/hello
,同时也可以直接访问这个地址。
在helloServlet类中有这么一句:@WebServlet(name = "helloServlet", value = "/hello")
在Java当中像这样带@符号的叫做注解
,其作用是将当前类标识为一个Servlet类,这样Tomcat
容器便可以访问到该类。
注:Servlet标识不能重复,否则部署项目时会报错
4.1 注解方式
有两种方式使用注解来标识Servlet类
@WebServlet(name = "ServletClassName", value = "url")
@WebServlet(name = "ServletClassName", urlPattern="url")
其中的url便是前端网页调用时需要访问的地址比如 @WebServlet(name = “helloServlet”, value = “/hello”)
4.2 XML配置文件方式
在web项目中通常会有web.xml配置文件
注解是JDK1.5版本、Servlet3.0版本之后开始出现的,在那之前,JavaWeb项目里的Servlet声明通常是通过配置该文件,比如声明之前的hello类,具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee