搞着搞着对web project是不是有点迷糊?先关注几个问题

2024-02-28 01:20

本文主要是介绍搞着搞着对web project是不是有点迷糊?先关注几个问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面说了在Eclipse里面怎么创建一个web project,并通过一个简单的jsp运行了web服务:

Eclipse是如何创建web project项目的?-CSDN博客

并且说过了java project中的main函数:

Eclipse的Java Project的入口main函数-CSDN博客

也应该明白了java project、dynamic web project和static web project的区别,那么就应该明白了,那么通过Eclipse创建dynamic project的例子后,就该有如下的疑问了:

1、现在纯静态的web项目应该很少了,也就是说只有不涉及动态处理,只有HTML和JS等静态资源的代码,毕竟还是需要交互的嘛,我们在前一篇只运行了一个jsp页面,其实并没有前端和后端交互,那怎么才能交互呢?

2、交互到时候肯定后端要有java代码的吧,前端jsp怎么去调用java写的程序呢?

3、如果我们能去调用java代码的话,通过java project的学习就会问,是不是web project也有main函数呢?如果没有怎么知道从哪儿开始执行对吧。

有了上面3个疑问后,我们就一步步的探求一下到底是怎么实现的。

1、web project的main函数

其实web project中并没有main函数,main函数是内置到web的容器(tomcat)中了的,tomcat的主类是BootStrap类,也是以此类的main方法作为入口启动的,web项目部署到tomcat服务器之后,启动tomcat,tomcat从它自己的主函数开始运行,就一直在跑着,等到请求过来的时候。tomcat接受到请求,它直接从项目文件中把那个没有主函数的应用拉进来,就这么直截了当的执行了其中的方法。

你也可以对照java project去理解,在执行java project的时候从main函数进入,其实并不是一运行完就结束了,如果有交互输入(控制台也好界面也罢),那么main函数就一直启动这的,在等待其他操作的输入执行,只有最后关闭交互界面整个main函数才结束。那么tomcat也就起到这么一个作用,我们部署在服务端的tomcat,也是上来就启动,然后等待从浏览器端的URL请求、动作请求等。

2、后端怎么获取到前端的请求?

后端接收前端的请求是通过servlet来实现的,那么什么是servlet?servlet运行在哪里?前端怎么告诉后端我是谁呢?

2.1什么是servlet?

首先,Java Servlet 是运行在 Web 服务器或应用服务器上的程序。顾名思义,java servlet,不是javascript servlet,所以是java写的程序。

其次,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求 HTTP 服务器上的数据库应用程序之间中间层

再次,它可以收集来自网页表单用户输入呈现来自数据库或者其他源的记录,还可以动态创建网页

了解servlet的基本介绍后,我们详细解释一下servlet的作用。

2.2Servlet有什么作用?

  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

2.3Servlet的生命周期

  • Servlet 通过调用 init () 方法进行初始化。
  • Servlet 调用 service() 方法来处理客户端的请求。
  • Servlet 通过调用 destroy() 方法终止(结束)。
  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

init()方法:它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化; service()方法:执行实际任务的主要方法;Servlet容器(即 Web 服务器)调用 service()方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
 service()方法:执行实际任务的主要方法;Servlet容器(即 Web 服务器)调用 service()方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
doGet()方法:GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理;
doPost()方法:POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
Destroy()方法:destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。
当然如果干去看2.2和2.3两节的话,上面的一些内容也不好理解,不过下一篇我们会对照一个栗子详细说一下就明白了,别着急。

3、一个web应用是怎么跑起来的?

就像一个java程序,如果我们不去双击它是跑不起来的,那么web项目也是一样,我们也是要启动web的服务(可以是tomcat也可以是别的),因为是在服务器上启动的,如果你不告诉别人怎么去访问它,别人肯定不知道是不是,那么怎么告诉别人呢?比如说百度,告诉你www.baidu.com你是不是就知道了,输入地址其实就跟点击按钮一样,要触发后面的功能是不是,其实它的后面也可以理解为一个web部署项目,也是有index.html/index.jsp等这类文件,只是做了一个映射转换到域名,知道后面启动着服务,前面知道怎么访问,这样的话两方面就对上号了,再去解决怎么对的问题,就比较有针对性了,关于tomcat怎么一个运行流程可看前面的文章:

聊一聊Tomcat的架构和运行流程,尽量通俗易懂一点-CSDN博客

来吧,好好理解一下Tomcat下的web.xml-CSDN博客

本文其他参考资料:

https://blog.csdn.net/lyt_7cs1dn9/article/details/52469472

https://www.cnblogs.com/231254971a/p/8166825.html

这篇关于搞着搞着对web project是不是有点迷糊?先关注几个问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/754086

相关文章

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo