一、http
二、Tomcat
Tomcat 是一个开源的、轻量级的Web 应用服务器,用于运行 Java Web 应用程序,支持 Servlet/JSP 少量JavaEE规范,也称为Web容器,Servlet 容器。
web 服务器:
- 1.封装HTTP协议操作,简化开发。封装了之前网络编程学的 Tcp 通信 Socket 和 ServerSocket。
- 2.可以将web项目部署到服务器中,对外提供网上浏览服务。
下载时根据自己的java版本选择对应版本的Tomcat,注意:要先安装java,Tomcat才能正常启动:
image.png
(1)基本使用
image.png
image.png
(2)部署项目
一般 javeWeb 项目会被打成一个war包,比如:“hello.war” 然后扔到Tomcat的 webapps 目录里面,Tomcat 会自动解压缩 war 文件,部署就完成了。
(3)Web 项目结构
image.png
(4)IDEA 中创建 Maven Web 项目
方式一:我这里用的骨架(模版)方式创建,但是安装依赖的时候有报错,不过我发现没多大影响:
image.png
failed to download from remoteorg.eclipse.aether.transfer.MetadataNotFoundException: Could not find metadata /archetype-catalog.xml in alimaven (https://maven.aliyun.com/repository/public)
No archetype found in remote catalog. Defaulting to internal catalog
将pom.xml里面的多余部分删除,并创建标准目录结构:
image.png
方式二:安装 JBLJavaToWeb 插件将普通maven项目转为javaWeb项目
image.png
普通maven项目上右键选择 JBLJavaToWeb 即可
image.png
(5)IDEA 中使用Tomcat
方式一:IDEA里面集成本地Tomcat
image.png
image.png
就是这个目录就行了
image.png
配置快速部署项目:
切换到Deployment,然后点下面的+号选中刚刚我们创建的这个webapp项目
image.png
运行项目看下可以看到页面成功访问到:
image.png
image.png
方式二:Tomcat Maven插件方式使用
注意:这种方式目前只能是Tomcat7版本,没有更高版本,不过本地开发已经够用了。
image.png
pom.xml
<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/maven-v4_0_0.xsd">
<version>1.0-SNAPSHOT</version>
<name>maven_tomcat_webapp</name>
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>maven_tomcat_webapp</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 设置编码格式 -->
<uriEncoding>UTF-8</uriEncoding>
<!-- 控制 tomcat 端口号 -->
<port>9999</port>
<!-- 项目发布到 tomcat 后的名称 -->
<!-- 如果写 /abc,相当于项目发布后的名称为 abc -->
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
三、Servlet
需要在 pom.xml 里面添加 servlet 依赖
<dependencies>
<!-- servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
(1)Servlet 执行流程
要使用 Servlet,需要创建一个类去实现 Servlet 接口,当服务器启动或者被访问(根据配置)的时候,Tomcat 服务器会根据我们写的这个类来创建对象并调用里面的 service 方法。
下面是个最简单的 Servlet demo,当访问:http://localhost:9999/servletDemo 的时候,java控制台会打印 “Servlet Hello World”
package com.test.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/servletDemo")
public class ServletDemo implements Servlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Servlet Hello World");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return "";
}
@Override
public void destroy() {
}
}
(2)Servlet 生命周期
- 1.init 方法在当前 Servlet 对象被创建的时候执行一次,这个方法可以用来加载一些资源。
- 2.service 方法是提供服务的方法,每次 Servlet 被访问的时候会执行。
- 3.destroy 方法是在 Servlet 被销毁的时候调用一次(内存释放或服务器关闭的时候)
image.png
其他两个方法不是很常用,了解下即可:
getServletConfig:获取 ServletConfig 对象
getServletInfo:获取 Servlet 信息,比如作者、版本、版权这种信息。
(3)Servlet 体系结构
之前实现 Servlet 接口这种不是很常用,因为会强制实现四个方法,但是有的方法我们用不到。后面通常是继承的 HttpServlet 类,并重写里面的 doGet 和 doPost 方法。
image.png
(4)Servlet urlPatterns 配置
一个 Servlet 要想被访问,必须配置其访问路径(urlPatterns),一个 Servlet 可以配置多个 urlPatterns,如:
@WebServlet(urlPatterns = {"/httpServletDemo","/httpServletDemo2"})
urlPatterns 配置规则
image.png
(5)XML 配置 Servlet(了解即可,这个是老版本的用法,比较麻烦,改为用注解方式)
image.png
参考: 黑马 javaWeb 教程