Javaweb学习笔记day05---Web体系Servlet

本文主要介绍了JavaWeb开发中的Tomcat服务器,包括服务器概述、Tomcat的安装与配置,以及Servlet的入门与生命周期。内容涵盖Tomcat的下载、启动、配置,以及在IDEA中部署Web应用程序的方法。同时,文章还讲解了HTTP协议的基础知识,如请求和响应的组成。此外,还简单探讨了Servlet的实现方式和生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端概述

概述

	与用户进行交互,用于接收用户的输入(操作),展示服务器端的数据以及向服务器传递数据

常见客户端

	浏览器
	手机APP
	物联网设备

服务器概述

概述

  • 从硬件而言:服务器是计算机的一种,它比普通计算 机运行更快、负载更高、价格更贵。
  • 从软件而言:服务器其实就是安装在计算机上的一个软件,根据其作用的不同又可以分为各种不同的服务器,例如 应用服务器、数据库服务器(mysql)、Redis服务器、DNS服务器、ftp服务器等等

作用

	与客户端进行交互,接收客户端的数据、处理具体的业务逻辑、传递给客户其需要的数据。

常见硬件服务器

	刀片服务器
	塔式服务器
	机房

软件服务器

	tomcat、mysql、redis、es。。。

服务器操作系统

	比商用操作系统更加稳定,比如:Linux、Unix、windows server...
  • 程序开发三个阶段

    • 开发阶段

      • windows 、macos,比如:windows版的mysql、macos版的mysql…
    • 测试阶段

      • linux环境中
    • 生产阶段

      • linux

服务器端应用程序

概述

	可以在应用上运行的程序。比如:京东、淘宝、滴滴等等

三种方案

	最有钱:硬件+windows sever+tomcat+应用程序

稍微有点

	云服务器(阿里云、腾讯云、华为云。。。)+虚拟机+Linux+tomcat+应用程序

没钱

	Windows系统+虚拟机+Linux+tomcat+应用程序

tomcat服务器概述

  • 概述
    • tomcat时apache软件基金会的jakatai项目组的一个核心项目,由apache、sun和其他一些 公司及个人共同开发而成。由于有了sun公司的参与和支持,最新的servlet、jsp规范总是能 在tomcat中得到体现。因为tomcat技术先进、性能稳定,而且免费,所以深受java爱好者 的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
    • 概述
    • tomcat时apache软件基金会的jakatai项目组的一个核心项目,由apache、sun和其他一些 公司及个人共同开发而成。由于有了sun公司的参与和支持,最新的servlet、jsp规范总是能 在tomcat中得到体现。因为tomcat技术先进、性能稳定,而且免费,所以深受java爱好者 的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。
  • 下载
  • 安装
    • 解压即可
  • 启动tomcat、关闭tomcat
    • 点击startup.bat
    • 点击shutdown.bat
  • 验证tomcat启动成功
  • 安装
    • 解压即可
  • 启动tomcat、关闭tomcat
    • 点击startup.bat
    • 点击shutdown.bat
  • 验证tomcat启动成功
    • 在浏览器中输入"http://localhost:8080/"
      image-20211203094227361

tomcat相关配置

  • JAVA_HOME配置
    • tomcat运行需要jdk环境,支持JAVA_HOME环境变量,如果不是这种方式,tomcat会启动失败闪退
  • 端口号配置
    • tomcat默认端口:8080

tomcat安装目录结构说明

  • 结构说明
结构说明
bin存储tomcat的可执行文件,比如:startup.bat、shutdown.bat
conf存储tomcat的配置文件,比如:server.xml、web.xml
lib存储tomcat运行所需的jar包,比如:servlet-api.jar、jsp-api.jar
logs存储tomcat运行产生的日志文件
temp存储tomcat运行产生的临时文件
webapps部署应用程序
work存储jsp文件转译之后的java文件

Web应用程序

概述

	可以在服务器中运行,且可以别浏览器访问,也叫web应用
	web应用包括:html、css、JavaScript、servlet等等

项目结构

	WEB.IF目录
			web.xml(当前文本项目的配置文件)

tomcat部署web应用程序

①方式一

直接将web应用存储到webapps目录

②方式二

修改servlet.xml,在host标签中添加如下内容

③方式三

  • 在"\conf\Catalina\localhost"新建一个hello.xml,内容如下:
<Context docBase="C:\Users\qiuzhiwei\Desktop\webproject" />
  • 项目的访问路径就是xml文件名称

idea部署web应用程序

  • 开发步骤
    • ①新建javaweb项目
      • 2019版idea,创建时勾选Web Application
      • 2020版idea及以上,创建后勾选Web Application
    • ②当前javaweb项目设置tomcat插件
    • ③将当前javaweb项目部署到tomcat
    • ④启动服务器并测试
  • ①新建javaweb项目
  • ②当前javaweb项目设置tomcat插件
    image-20211203104939585
  • ③将当前javaweb项目部署到tomcat
    • image-20211203105344723
    • image-20211203105332908
  • ④启动服务器并测试
    • image-20211203105436948
    • http://ip:port/项目访问路径/资源访问路径

idea部署web应用程序补充一

  • 总结
    • tomcat副本
      • 起到隔离的作用,防止当前项目出错,影响到tomcat服务器中的其他项目
    • 项目目录 : E:\workspace\211018\web05
      • 用于写代码和存放资源的位置
    • 部署目录 : E:\workspace\211018\web05\out\artifacts\web05_war_exploded
      • 用于部署资源的位置
  • 注意事项
    • settings -> build,execution,deployement -> compiler -> 勾选build project automatically

idea部署web应用程序补充二

  • 概述
    • 资源在项目目录,但是不一定会到部署目录。
  • ①资源在web目录
    • 会部署,直接在项目目录下
  • ②资源在src目录
    • 会部署,在项目目录下的WEB-INF目录下的classes目录下
  • ③资源在当前项目下
    • 不会部署
  • 思考
    • 资源在web目录,如果子目录”img/girl4.jpg“,会把子目录和资源一起部署!!!
  • 注意事项
    • 部署到WEB-INF目录中的资源是受保护的,外部无法直接访问,只能内部访问。

http协议概述

  • 概述
    • hyper text transfer protocol : 超文本传输协议
    • 基于TCP/IP协议
    • 客户端和服务器之间交互遵守的规则
  • 组成
    • http请求
    • http响应

http请求概述

  • 概述
    • 客户端请求服务器
  • 组成
    • 请求行
    • 请求头
    • 请求正文
  • 请求行
    • Request URL :请求资源的路径
    • Request Mehtod : 请求范式
      • GET :
        • 请求参数都会拼接到URL后面
        • 安全性低
        • 携带的数据量少
      • POST
        • 请求参数在请求正文
        • 安全性高
        • 携带的数据量大
    • protocol
      • http协议的版本信息,HTTP/1.1
  • 请求头
    • Content-Type : 告诉服务器,请求正文的mimeType
    • User-Agent : 告诉服务器,浏览器的信息
    • Connection : 告诉服务器,连接的状态
    • Cookie : 会话技术
  • 请求正文
    • 首先,有请求参数,其次,必须是post请求。

http响应概述

  • 概述
    • 服务器响应客户端
  • 组成
    • 响应行
      • Status Code : 响应状态码
        • 200 : 响应成功
        • 404 : 资源未找到
        • 304 : 页面内容没有改变,使用缓存
        • 500 : 服务器代码错误
        • 302 : 重定向
    • 响应头
      • location : 重定向,配合状态码302使用
      • Content-Type : 告诉浏览器,响应正文的mimeType
      • Content-Disposition : 告诉浏览器,必须打开下载窗口
      • Refresh : 告诉浏览器,定时跳转资源
      • Set-Cookie : 会话技术
    • 响应正文
      • 服务器发送给浏览器的数据

Servlet

Servlet介绍及入门

存在问题

之前的java程序无法字啊服务器中运行,没有对应的处理请求和处理响应的API

概述

A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across HTTP, the HyperText Transfer Protocol.

Servlet是一个可以运行在web服务器中的ava程序。Servlet可以接受和响应来自客户端的请求。通常通过HTTP协议。

开发步骤

  • 自定义继承HttpServlet
    重写方法

  • 配置自定义Servlet
    将自定义的Servlet声明到tomcat容器中
    给自定义的Servlet设置访问路径

  • ①自定义继承HttpServlet

public class Demo01Servlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //处理get请求
        System.out.println("Hello World");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //处理post请求
        doGet(req, resp);
    }
}
  • ②配置自定义Servlet
<!--将自定义Serlvet声明到tomcat容器中-->
<servlet>
    <servlet-name>Demo01Servlet</servlet-name>
    <servlet-class>com.atguigu.servlet.Demo01Servlet</servlet-class>
</servlet>
<!--给自定义Servlet设置访问路径-->
<servlet-mapping>
    <servlet-name>Demo01Servlet</servlet-name>
    <url-pattern>/demo01</url-pattern>
</servlet-mapping>
  • 注意事项

     Javaweb项目需要手动导入服务器的编译环境
    

Servlet执行流程

image-20211203155332715

Servlet关系视图

Servlet的其他两种实现方式

  • 继承GenericServlet
public class Demo02Sevlet extends GenericServlet {
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("hello world");
    }
}

   <servlet>
      <servlet-name>Demo02Sevlet</servlet-name>
      <servlet-class>com.atguigu.servlet.Demo02Sevlet</servlet-class>
   </servlet>
   <!--给自定义Servlet设置访问路径-->
   <servlet-mapping>
      <servlet-name>Demo02Sevlet</servlet-name>
      <url-pattern></url-pattern>
   </servlet-mapping>
  • 实现Servlet
public class Demo03Servlet implements Servlet {

    @Override
    public void init(ServletConfig config) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("hello world");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}
<servlet>
    <servlet-name>Demo03Servlet</servlet-name>
    <servlet-class>com.atguigu.servlet.Demo03Servlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Demo03Servlet</servlet-name>
    <url-pattern>/demo03</url-pattern>
</servlet-mapping>

总结

  • 这两种实现Servlet的方式,开发中并不使用,因为GenericServlet、Servlet中并没有针对HTTP协议的相关属性和方法。

Servlet生命周期

生命周期一个事物的出生(创建)到死亡(销毁)

  • Servlet的出生由init方法监听。Servlet的死亡有destroy方法j监听
  • 如果开发人员想监听Servlet的出生和死亡,重写init和destroy方法

代码实现

总结

  • Servlet创建:第一次访问
    - 只创建一次Servlet,这就叫单例模式 ,回村子线程安全问题
  • Servlet销毁:关闭服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值