首页 > 其他分享 >tomcat与servlet

tomcat与servlet

时间:2024-01-26 13:44:07浏览次数:18  
标签:Java 请求 tomcat Servlet HTML JSP servlet 页面

1. Servlet

1.1 Servlet是什么

首先说明,Servlet什么都不是,他只是一个规范,是Java的一个接口。

 

 

所以Servlet做的事情就是接口做的事情,Java的接口的作用就是规范。

servlet接口定义的是一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:

  • 你初始化时要做什么
  • 你销毁时要做什么
  • 你接受到请求时要做什么

1.2 Web服务器和Servlet容器

Web服务器: web服务器就是将一个电脑上的资源映射成为一个URL供外界访问。

Servlet容器: 存放Servlet对象的容器,我们如果想要将通过URL来获得计算机上的资源,总绕不开三步:

  1. 接收请求
  2. 处理请求
  3. 响应请求

由于接受请求和响应请求是共性请求,不存在差异性(也就是不需要程序员根据不同的业务场景进行自定义),所以接收请求和处理请求这两个步骤就被抽取为Web服务器。

 

 

这里Tomcat就既是Web服务器,又是Servlet容器,他接收外部请求并封装成ServletRequest,并将request发送给指定的Servlet,同时又将Servelet的处理结果整理成ServletResponse返回给客户端。

可以发现Servlet的是在真正被启用的时候才会执行初始化,并且只执行一次。在项目关闭的时候执行销毁:

 

2.1 几个问题

上面有几个问题,JSP是什么,JSP又起什么作用?JSPServlet是什么,而index.html明显是一个静态资源,却还是走到了DefaultServlet,难道静态资源也会通过DefaultServlet来进行访问吗?

2.2 浏览器是如何获得html语句的?

我们知道,浏览器能通过解析html语句渲染出页面。比如:

 

 

 

 

因为仔细想来,我们的主要目的就是希望在最终输出的html的代码中嵌入后台数据罢了。除了把html语句拿出来在Servlet里拼接好再输出这种方式外,我们也可以直接在html语句中写入动态数据(注意,不是HTML文件,必须是JSP之类的动态模板文件中的HTML语句)。而这两种几乎是完全相反的设计思路!

也就是说,我们可以在其他工具中写好html语句,再在其中嵌入我们的数据即可,由这个工具生成最终的html静态语句返回给浏览器。而JSP就是这个工具。

2.3 JSP是什么

JSP全称Java Server Page,直译就是“运行在服务器端的页面”。上面已经介绍过,我们可以直接在JSP文件里写HTML代码,使用上把它当做HTML文件。而且JSP中HTML/CSS/JS等的写法和HTML文件中的写法是一模一样的。但它毕竟不是HTML,而且本质差了十万八千里。因为我们还可以把Java代码内嵌在JSP页面中,很方便地把动态数据渲染成静态页面。这一点,HTML打死都做不到。

当有人请求JSP时,服务器内部会经历一次动态资源(JSP)到静态资源(HTML)的转化,服务器会自动帮我们把JSP中的HTML片段和数据拼接成静态资源响应给浏览器。也就是说JSP是运行在服务器端,但最终发给客户端的都已经是转换好的HTML静态页面(在响应体里)。

即:JSP = HTML + Java片段(各种标签本质上还是Java片段)

 

 

但所谓的“JSP和HTML相似”只是JSP给我们的表面印象。我们还要继续往下挖一挖。实际上,JSP和HTML差远了。JSP本质是一个Java类(Servlet),是在服务器混的,只不过它输出结果是HTML语句。蜜蜂产出蜂蜜,但是蜜蜂不是蜂蜜啊!

Servlet是什么?

  • 一个Java类,运行在Servlet容器中(Tomcat)
  • 负责接收请求
  • 调用Service处理数据
  • 负责响应数据

 

 

2.5 JSP的工作流程

 

 

原本,我们需要把美工的HTML代码一行行复制到Servlet中,然后拼接数据,最后向客户端响应拼接好的HTML页面。

 

 

 

2.7 JSP与AJAX+HTML

其实请求、响应这么一来一回,无非要的就两样东西:数据+HTML骨架。如果把服务器端比作淘宝卖家,客户端(浏览器)比作买家,而数据和HTML则是一件商品的两个重要组成部件。那么我们很自然地能够想到,其实运输方式至少可以有两种:

1.卖家组装好商品后再发货(JSP)

2.卖家把部件拆开,运到之后买家自己组装(AJAX+HTML)

 

虽然我们在浏览器地址栏输入localhost:8080/xxx/xxx.jsp,就显示出了当前页面,但那不是JSP页面,而是HTML页面。服务器并没有直接把JSP文件从服务端扔到客户端!JSP是Java Server Page,是服务器端的东西。服务器的东西永远不可能直接在浏览器运行。浏览器只能接受静态页面。

 

 

 

 

 

聊这个,纯粹是因为很多朋友很容易搞错一个概念,认为MVC模式是JavaEE独有的开发模式。其实不是的。MVC是web开发都有的一种模式,比如PHP开发web时也有MVC模式。而三层架构则是JavaEE的:Controller/Service/Dao。分层开发是为了使代码逻辑更加清晰,也起到了一定的解耦合作用。

值得注意的是,MVC只是在web层。当然,如果站在更高的角度,可以看成这样:

 



 

标签:Java,请求,tomcat,Servlet,HTML,JSP,servlet,页面
From: https://www.cnblogs.com/JavaYuYin/p/17989147

相关文章

  • IDEA报错:java: 程序包javax.servlet不存在
     DEA报错:java:程序包javax.servlet不存在 在IDEA中如果报缺少servlet-api.jar和jsp-api.jar这两个包的话,这是因为没有加入tomcat的依赖包。如下图,在IDEA下,importjavax.servlet.*相关的包都是报红的话,就肯定就是缺少jar包了。导入tomcat依赖包  查看是否导入成功在......
  • IDEA之Tomcat进行热部署
    前言由于最近手上有个web项目需要完成,是Tomcat部署的,每次修改想看成效都得重新启动Tomcat(烦,后来了解到可以进行热部署,就可以实时更新修改内容了IDEA设置修改首先得修改IDEA本身的设置,这里的几个都勾上Tomcat配置修改修改箭头所标处注意事项首先Tomcat配置所部署的工件得是......
  • 【Tomcat】Web服务器Tomcat简介及配置
    Tomcat简介Tomcat配置及虚拟路径配置<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version>......
  • 【Servlet】Servlet快速入门
    Servlet简介在Java的Web开发中,Servlet是一种用于处理HTTP请求和响应的Java程序。Servlet通常被部署在支持Java的Web服务器上,如ApacheTomcat。在Servlet中,Request对象和Response对象是两个重要的接口,它们用于处理客户端发来的请求和向客户端发送响应。Servlet快速入门创......
  • 【Servlet】Request请求对象 && Response响应对象 && 资源路径问题
    Request&&Response简介在Servlet中,Request对象和Response对象是两个重要的接口,它们用于处理客户端发来的请求和向客户端发送响应。Request对象Request:获取请求数据Request继承体系Request获取请求数据Request使用通用方式获取请求参数Request请求参数中中文乱码问题......
  • Servlet系列:生命周期(init、 service、destroy)详解
    Servlet的生命周期是由Web容器(如Tomcat)管理的,包括以下三个阶段:加载和实例化:当Web应用程序启动时,Web容器会加载和实例化Servlet。加载和实例化过程可以在应用程序启动时自动完成,也可以通过Servlet的名称手动加载。在实例化Servlet后,Web容器会调用其init()方法进行初始化。处理请......
  • Tomcat_实现内嵌代码方式启动
    构建tomcat_maven项目可以从github上直接拉取tomcat_maven项目;也可以自己下载源码构建,这里贴一下tomcat8对应的pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/20......
  • Servlet(JSP)学习笔记
    目录IDEA配置JSP基本语法page指令ScriptLet标签注释包含跳转JSP四大作用域applicationsessionrequestpageJSP九大内置对象responseoutpageContextconfigexceptionJavaBean组件JavaBean组件引入创建JavaBean设置属性值获取属性值JavaBean的保存范围JavaBean的删除ServletHelloWorld......
  • Servlet系列:(HttpServletRequest、HttpServletResponse、ServletContext、ServletConfi
    HttpServletRequestHttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是HttpServletRequest接口的实例化对象,表示该对象主要应用在HTTP协议上,该对象是由Tomcat封装好传递过......
  • Docker初级:Docker安装部署Nginx、Tomcat
    Docker初级:Docker安装部署Nginx、Tomcat:https://blog.csdn.net/Zp_insist/article/details/127636875?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170548607116800188590783%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170548......