web核心 2-tomcat服务器安装 web项目目录 servle执行流程与生命周期 虚拟路径

本文深入解析Tomcat服务器的安装与配置,以及Servlet的工作原理和生命周期。涵盖Tomcat的目录结构、常见问题解决、项目发布流程,Servlet的体系结构、执行流程及生命周期,适合初学者和开发者快速掌握。

内容介绍


1 tomcat服务器

2 servlet

服务器

在这里插入图片描述

mysql:用来操作数据库数据
nginx:用来部署静态资源项目的,可以被浏览器访问到
tomcat:用来部署静态资源项目和动态资源项目的,可以被浏览器访问到

tomcat服务器

概述

Tomcat:Apache组织提供的一个免费的小型的服务器软件
只要电脑安装了这个软件 就可以把这台电脑称为tomcat服务器或者是web服务器
常见的web服务器:
tomcat 免费的小型的服务器软件     apache
WebLogic收费的大型的服务器软件    oracle 
WebSphere收费的大型的服务器软件   IBM

ibm: db2+WebSphere   ssm框架

作用

只要是部署在Tomcat服务器里面的静态资源/动态资源项目,就可以被所有人通过浏览器去访问

软件的架构(了解)

在这里插入图片描述

C/S架构  Client/Server   客户端/服务器
特点:需要在自己的电脑安装一个客户端 QQ客户端 游戏各种客户端  迅雷客户端
优点:效果比较炫 好看
缺点:占用硬盘空间 服务器只要升级就要求客户端跟着升级

B/S架构  Browser/Server  浏览器/服务器
特点:不需要安装客户端 一个浏览器足矣  网页淘宝 网页京东 网页12306
优点:不会占用硬盘空间 服务器只要升级不要求跟着升级
缺点:效果不炫 所有压力都在服务器	

相同点: 都需要和服务器进行数据交互  都是先有请求 后给响应  一定是请求和响应成双成对
我们:B/S架构		

安装tomcat服务器

需求:想让自己的一个项目,被所有人通过浏览器去访问

在电脑安装一个tomcat软件 将电脑变成web服务器,步骤:

1 下载一个tomcat服务器软件. 官网地址 http://tomcat.apache.org
2 解压下载好的tomcat. 注意:将解压后的文件copy到一个没有中文和空格的路径下
3 启动tomcat服务:进入bin路径 双击startup.bat 服务器就可以启动:
4 测试 在页面输入地址访问http://localhost:8080 
5 关闭 tomcat服务:直接关闭 或者去 bin路径 双击shutdown.bat

Tomcat的常见问题总结

1 一闪而过
原因:没有配置环境变量JAVA_HOME 或者配置错误
解决:配置环境变量
JAVA_HOME,因为tomcat在启动的时候会去找环境变量JAVA_HOME
Tomcat的底层需要JDK的支撑
2 报错 java.net.BindException:  Address already in use: bind
原因:端口号被占用
解决:
    1 结束正在占用端口的进程
    cmd:netstat -ano (pid)
	任务管理器关闭占用端口(pid)
   
   
   2 改变自己的端口号
    修改conf/server.xml  大概在69行的位置
    或者修改端口号为80: 80是默认端口号.可以不写

tomcat的目录结构(重点)

bin: tomcat的二进制命令文件   关注点: 启动(startup.bat)     关闭(shutdown.bat)
conf:tomcat的所有配置信息    关注点: server.xml(端口 虚拟路径)     web.xml(文件类型)
lib:tomcat在运行过程中需要用到的jar包
logs:tomcat在运行过程中产生的日志文件  关注点:catalina.xxxx-xx-xx.log 错误日志
temp:tomcat的临时文件 由tomcat自身去管理
webapps:根目录 http://localhost:8080==webapps/ 用来存放项目让浏览器访问
work:和jsp相关

web项目的结构(重点)

web项目(静态资源和动态资源)的结构:(重点)

myweb(部署在tomcat中)

​ ||

​ ||----html js css 图片 视频 多层目录 通过浏览器可以直接访问到

​ ||

​ ||----WEB-INF目录 不能通过浏览器直接访问到 通过java代码去访问

​ || —classes文件夹(.class文件)

​ || —lib文件夹(整个项目需要的jar包)

​ || —web.xml文件(整个web项目的核心配置文件 作用于整个项目)

​ servlet.2.5版本 必须得有web.xml文件

​ servlet3.0以上版本 可以不写配置文件 注解代替

虚拟路径的2种方式发布项目(了解)

1 配置server.xml,添加context标签

在server.xml配置文件的最后加上如下代码:

<Context path="项目别名" docBase="项目所在的硬盘位置" />

谨慎使用(最好单独独立出来一个配置文件)

2 配置独立xml文件

在tomcat/conf目录下新建一个Catalina目录(如果已经存在无需创建)

在Catalina目录下创建localhost目录(如果已经存在无需创建)

在localhost中创建xml配置文件,名称为:xxx.xml(xxx名就是项目的浏览器访问地址名)

xxx.xml中代码如下:

<Context docBase="项目所在的硬盘位置" />

完成作业 idea中集成tomcat,发布一个web项目并且通过浏览器能访问到
步骤如下:
1.
111
先创建web文件夹,web文件夹下面可以创建html js css 图片 视频 多层目录等,其中WEB-INF文件夹必须有,这个文件夹下面有三个文件夹,分别是
–classes文件夹(存放.class文件)–lib文件夹(存放整个项目需要的jar包)
–web.xml文件(存放整个web项目的核心配置文件 作用于整个项目)
如果不是这种格式,tomcat不接收,无法使用tomcat.

2 在IDE上面部署tomcat ,然后创建java Enterprise项目,详见以下截图在这里插入图片描述
3 启动tomcat就相当于启动项目,可以通过浏览器,输入http://localhost:8080/web_1Zhang/1.jpg 访问1.jpg文件

Servlet

在这里插入图片描述

概述

官方:servlet 是运行在 Web 服务器中的 小型 Java 程序

大白话:servlet本质上就是一个类,和普通的类比需要实现servlet 规范

​ 只要实现了servlet的规范,这个类就可以在服务上写java代码程序了

作用

servlet可以用来接受浏览器的请求,以及给浏览器做响应

在这里插入图片描述

servlet快速入门

servlet2.5的方式:(为主) 有web.xml配置文件
servlet3.0的方式: 没有web.xml配置文件 如下所示:

@WebServlet(urlPatterns = "/hello1")
public class MyServlet1 extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("访问都我了 我是3.0");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

    1. 创建JavaEE5的工程
    	2. 创建一个类 实现servlet接口
    	3. 在web.xml配置文件中告诉tomcat自己编写的类是一个servlet,配置该servlet在浏览器的访问路径 
    				ps:tomcat在启动的时候,首先加载的就是web.xml文件 只加载一次

// 具有和浏览器请求响应的功能
public class MyServlet1  implements Servlet{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

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

    @Override // 核心 和浏览器交互的方法
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("浏览器访问到我了...");

        // 1 接受请求参数
        // 2 使用jdbc连接数据库
        // 3 给浏览器做响应数据  (没做响应 底层给浏览器默认会有一个空内容的响应)
    }

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

    @Override
    public void destroy() {

    }
}

配置该servlet在浏览器的访问路径 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">


    <!--告诉tomat当前servlet的访问路径-->
    <servlet>
        <!--代表servlet的名称  特点:可以是任意值 但是整个web.xml中唯一-->
        <servlet-name>MyServlet1</servlet-name>
        <!--代表的是当前servlet的全限定名-->
        <servlet-class>cn.itcast.web.MyServlet1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet1</servlet-name>
        <!--告诉tomcat当前servlet的访问路径-->
        <url-pattern>/hello1</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>MyServlet2</servlet-name>
        <servlet-class>cn.itcast.web.MyServlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet2</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>MyServlet3</servlet-name>
        <servlet-class>cn.itcast.web.MyServlet3</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet3</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>MyServlet4</servlet-name>
        <servlet-class>cn.itcast.web.MyServlet4</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet4</servlet-name>
        <url-pattern>/hello4</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>MyServlet5</servlet-name>
        <servlet-class>cn.itcast.web.MyServlet5</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet5</servlet-name>
        <url-pattern>/hello5</url-pattern>
    </servlet-mapping>
</web-app>

servlet的执行流程
在这里插入图片描述

1. 创建JavaEE6(含6)以上的工程
2. 创建一个类 实现servlet接口
3. 创建servlet,在@WebServlet注解中添加urlPatterns = "/hello",作为请求路径

注意:servlet的对象创建和方法(service)调用都是有web服务器完成的,我们只需要配置自己编写的servlet在浏览器的访问路径即可

servlet的生命周期

init方法 service方法 destroy方法都和servlet的生命周期相关

init方法   Servlet对象只要一创建出来就会调用的方法  

service方法 处理好浏览器交互的方法  

destroy方法 销毁方法

面试题:聊一下Servlet的生命周期?

默认第一次访问到该servlet的时候,会创建该servlet的对象,执行init初始化方法,只执行一次,所以
我们的servlet是只有一个对象,所有人用的都是同一个servlet
当每次访问到该servlet的时候,他的service处理方法都会执行,访问一次执行一次
当服务器关闭的时候,会销毁当前的servlet对象,执行destroy方法,只执行一次
/*servlet的生命周期
*      init(..)  : servlet的初始化方法  特点:只要当前的servlet一创建出来 就会自动执行init方法进行初始化
*      service(..): 和浏览器交互的核心方法
*      destory(): 销毁方法  是用来销毁当前servlet的对象
* */
public class MyServlet2 implements Servlet {



    /*
    *  执行时机:访问当前servlet的时候 创建当前servlet的对象 执行init方法
    *  执行次数: 1次 该类只会创建一个对象  所有人用的都是这个对象
    *  执行者: tomcat服务器调用的
    * */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("我出生了...5555555555");
    }


    /*
     *  执行时机: 访问到了就执行
     *  执行次数:访问一次执行一次
     *  执行者: tomcat自动调用
     * */
    @Override  // 和浏览器交互的方法
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("浏览器访问到我了22222...");
    }

    /*
     *  执行时机:服务器关闭执行
     *  执行次数:1次
     *  执行者:tomcat服务器
     * */
    @Override
    public void destroy() {
        System.out.println("我挂了...666666666666666666");
    }


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

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


}

servlet的体系结构

Servlet–接口

​ |

​ |

GenericServlet

​ |

​ |

HttpServlet (功能最多)

企业开发中:继承HttpServlet,只需要复写doget和dopost方法,而开发工具已经提供好了模板,我们直接用即可

作业:

在idea中集成tomcat发布一个web项目

​ web项目中要有servlet

通过浏览器访问到tomcat服务器中的servlet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值