Java-Tomcat&&Servlet-第37节

学习目标:

  • 回顾熟悉相关的web概念
  • 学会Tomcat的使用步骤
  • 熟练掌握Tomcat与IDEA的相关环境配置
  • 理解并应用Servlet接口

学习内容:

一、web相关概念
1、软件架构
  • C/S:客户端/服务器端
  • B/S:浏览器/服务器端
2、资源分类
  • 静态资源:所有用户访问得到的结果是一样的
    • HTML,css,JavaScript
  • 动态资源:每一个用户访问相同资源后得到的结果可能不一样
    • Servlet/jsp
      在这里插入图片描述
3、网络通信三要素
  • IP
  • 端口
  • 传输协议
    在这里插入图片描述
二、web服务器程序:Tomcat
1、web服务器程序概念
  • 服务器:安装了服务器软件的计算机
  • 服务器软件:接收用户请求,处理请求,做出响应
  • web服务器软件:接收用户请求,处理请求,作出响应
    • 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
    • web容器
  • Java相关的常见的web服务器APP
    • weblogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费
    • webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费
    • JBOSS:JBOSS公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费
    • Tomcat:Apache基金组织,中小型的JavaEE服务器,支持少量的JavaEE规范,开源免费
  • JavaEE
    • Java语言在企业级开发中使用的技术规范总和
    • 一共规范了13项大的规范
2、Tomcat使用步骤

在这里插入图片描述

  • 下载:https://tomcat.apache.org/
  • 安装:解压压缩包即可,安装的目录不要有中文空格
  • 卸载:删除目录
  • 启动
    • bin/startup.bat 双击运行
    • 访问: localhost:8080
      127.0.0.1:8080
    • 可能遇到的问题
      • 窗口一闪而过
        • 原因:没有正确配置JAVA_HOME环境变量
        • 解决方案:正确配置环境变量
      • 启动报错
        • 暴力:找到占用的端口号,和对应的进程,杀死该进程
          • netstat -ano
        • 温柔:修改自身的端口号
          • conf/server.xml
          • 一般会将Tomcat的默认端口号修改为80。
            • 80端口号是HTTP协议的默认端口号
            • 在访问时,不需要输入端口号
  • 关闭
    • 正常关闭:
      • bin/shutdown.bat 双击关闭
      • Ctrl+C
    • 强制关闭:直接关闭窗口
  • 配置
    • 部署项目的方式
      • 直接将项目放到webapps目录下
        • /hello:项目的访问路径–>虚拟目录
        • 简化部署:将项目打包成war包,放置到webapps目录,war包会自动解压缩
      • 配置conf/server.xml文件
        • 在标签体中配置

          docBase:项目存放的路径
          path:虚拟路径
      • 在conf\Catalina\localhost创建任意名称的xml文件,在文件中编写
        • 创建文件的名称:虚拟路径
    • 静态项目和动态项目
      • Java动态项目目录结构
        – 项目根目录
        – WEB-INF目录
        – web.xml:web项目核心配置文件
        – classes目录:放置字节码文件的目录
        – lib目录:放置依赖的jar包
    • 将Tomcat集成到IDEA,创建JavaEE项目,部署项目
      在这里插入图片描述
三、Servlet入门学习
1、概念:运行在服务器端的小程序
  • Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则
  • 将来定义类,实现Servlet接口,复写方法
2、快速入门
  • 创建JavaEE项目
  • 定义类,实现Servlet接口
  • 实现接口中的抽象方法
  • 配置Servlet,在web.xml中进行配置
3、执行原理
  • 服务器接受请求,解析URL,获取访问到Servlet资源路径
  • 查找web.xml文件,查询对应标签体内容
  • 通过URL标签体找到对应的全类名
  • Tomcat将字节码文件加载到内存,并创建对象
  • 调用方法
4、Servlet生命周期方法
  • 创建:执行init方法,只执行一次
    • Servlet什么时候被创建
      • 默认第一次访问时被创建
      • 可以配置web.xml文件
        • 值为负:第一次访问时创建
        • 值为非负:服务器启动时创建
    • init方法只执行一次,说明一个Servlet内存中只有一个对象,是单例的
      • 多个用户同时访问,存在线程安全问题
      • 尽量不在Servlet中定义变量,且不对值进行修改以避免上述问题
  • 提供服务:执行service方法,执行多次
    • 每次访问Servlet时都会访问
  • 销毁:执行Destroy方法,执行一次
    • 服务器正常关闭,执行该方法
    • 在Servlet对象销毁之前执行,常用于释放资源
5、Servlet 3.0
  • 优点
    • 支持注解配置,不需要web.xml
  • 步骤
    • 创建JavaEE项目,选择Servlet 3.0以上版本,可以不创建web.xml
    • 定义一个类,实现Servlet接口
    • 复写方法
    • 在类上使用@WebServlet注解,进行配置
      • @WebServlet(“虚拟路径”)
6、IDEA与Tomcat的相关配置
  • IDEA会为每一个Tomcat部署的项目单独建立一份配置文件
    • 查看控制台的log:Using CATALINA_BASE: “C:\Users\Administrator.IntelliJIdea2017.3\system\tomcat_JavaWeb”
  • 工作空间项目 和 Tomcat部署的web项目
    • Tomcat真正访问的是“Tomcat部署的web项目”,“Tomcat部署的web项目”对应的是
      “工作空间项目”的web目录下的所有资源
    • WEB-INF目录下的资源不能被浏览器直接访问
  • 断电调试: 使用“小虫子”启动debug启动

学习产出:

1、 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_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>demo1</servlet-name>
        <servlet-class>webap.tomcat.servlet.Demo01ServletBase</servlet-class>
        <load-on-startup>-1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo1</servlet-name>
        <url-pattern>/demo1</url-pattern>
    </servlet-mapping>
</web-app>
Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-06-09 19:57:51.583 INFO 1 --- [nio-9211-exec-3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-06-09 19:57:51.604 INFO 1 --- [nio-9211-exec-3] o.s.web.servlet.DispatcherServlet : Completed initialization in 21 ms 2023-06-09 19:57:58.676 INFO 1 --- [nio-9211-exec-5] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the HTTP protocol [RTSP/1.00x0d0x0a0x0d...] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:560) ~[tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260) ~[tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_312] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_312] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.37.jar!/:9.0.37] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_312]
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值