JavaWeb介绍

一、JavaWeb简介

1.什么是JavaWeb?

        JavaWeb是用Java技术来解决相关web互联网领域的技术栈。

2.JavaWeb技术栈

        B/S架构:Browser/Server(浏览器/服务器)架构模式。
(1)特点:
        客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取web资源,服务器把web资源发送给浏览器即可。
(2)Web资源: 
        1)静态资源HTML/CSS/JavaScript、图片等,负责页面展示
        2)动态资源Servlet、JSP等,负责逻辑处理
(3)HTTP协议:规定了浏览器和服务器之间通信的规则。
(4)Web服务器:负责解析HTTP协议,解析请求数据,并发送响应数据。
                Web服务器可以封装HTTP协议操作,简化开发;可以将web项目部署到服务器中,对外提供网上浏览服务。

二、HTTP协议

        HTTP协议:HyperText Transfer Protocol ,超文本传输协议,规定了浏览器和服务器之间通信的规则。

1.HTTP的特点

(1)基于TCP协议,面向连接,安全;
(2)基础请求-响应模型,一次请求对应一次响应;
(3)HTTP是无状态的协议,对于事务的处理没有记忆能力,即每次请求--响应都是独立的,后一次请求不能记录前一次请求的数据
        1)缺点:多次请求间不能共享数据。
        2)优点:速度快。

2.HTTP-请求数据格式

        请求数据分为三部分:请求行、请求头、请求体。
        

(1)请求行

        请求数据的第一行,包括了请求方式(GET/POST等7种请求方式)、请求资源路径(/,这里代表根目录)、协议版本(HTTP/1.1);
【注意】三者之间用空格" "隔开。

(2)请求头

        从第二行开始,格式为键值对(key:value)的形式
        常见的HTTP请求头:
Host 表示请求的主机名
User-Agent 浏览器版本
Accept 表示浏览器能接受的资源类型,如text/*表示文本、image/*表示图片、*/*表示所有类型
Accept-Language 表示浏览器偏好的语言,服务器可以据此返回不同语言的网页
Accept-Encoding
表示浏览器可以支持的压缩类型

(3)请求体

        POST请求方式的最后一部分,与请求头之间有一个空行,用来存放请求参数。
【tips】GET请求和POST请求的比较:
                ①GET请求的请求参数放在请求行中,没有请求体;POST请求的请求参数在请求体中;
                ②GET请求的请求参数有大小限制,POST请求没有限制。

3.HTTP-响应数据格式

        响应数据分为三部分:响应行、响应头、响应体。
        

(1)响应行

        响应数据的第一行,包括了协议版本状态码(200)、状态码描述(OK);

(2)响应头

        从第二行开始,格式为键值对(key:value)的形式
【tips】①状态码分类:
状态码分类 说明
1XX 响应中:临时状态码,表示请求已接受,告诉客户端应该继续请求或如果已经完成则忽略它。
2XX 成功:表示请求已经被成功接收,处理已完成。
3XX 重定向:重定向到其他地方,让客户端再发起一个请求来完成整个处理。
4XX 客户端错误:处理发生错误,责任在客户端。
5XX 服务器端错误:处理发生错误,责任在服务器端。
            ②状态码大全:https://cloud.tencent.com/developer/chapter/13553

(3)响应体

        最后一部分,与响应头之间有一个空行,用来存放响应数据。

三、Tomcat的使用

1.Tomcat简介

        Tomcat是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量的JavaEE规范。

2.Tomcat目录结构

        

3.Tomcat的使用

(1)启动:双击bin\startup.bat

(2)关闭:Ctrl+C.
(3)配置:
        修改启动端口号:在conf\server.xml中修改。
        
【tips】HTTP协议默认端口号为80,如果将Tomcat端口号改为80,将来访问Tomcat时,直接输入"localhost"即可,不用加端口号了。
        端口号冲突问题:关掉对应的程序。
        
(4)项目部署:
        将项目放到webapps目录下, 即部署完成。
【tips】一般JavaWeb项目会被打包成war包,然后将war包放到webapps目录下,Tomcat会自动解压缩war文件。

4.IDEA中的Maven Web项目

(1)Maven Web项目结构:
        
(2)部署的JavaWeb项目(已开发完成可部署的项目)结构:
        

5.在IDEA中创建Maven Web项目

(1)使用骨架创建Maven Web项目:

        1)删除pom.xml中多余的坐标;
        2)补齐缺失的目录结构javaresources

(2)(★推荐★)不使用骨架创Maven Web项目:

        1)在pom.xml中添加打包方式为war(默认为jar):
<packaging>war</packaging>
        2)补齐缺失的目录结构webapps

6.在IDEA中使用Tomcat的两种方法

(1)本地部署Tomcat

        

(2)(★推荐★)使用Tomcat插件

        

全部评论

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题//&nbsp;实现一个解析&nbsp;url&nbsp;参数的函数function&nbsp;parseUrl(urlStr)&nbsp;{//&nbsp;TODO}parseUrl('*********************************************');//&nbsp;返回&nbsp;{a:&nbsp;1,&nbsp;b:&nbsp;2,&nbsp;c:&nbsp;3}追问:在链接里见过什么部分?用&nbsp;hash&nbsp;路由的话放在哪第二题//&nbsp;考虑有一个异步任务要执行,返回&nbsp;Promise,这个任务可能会失败,请实现&nbsp;retry&nbsp;方法,返回新方法,可以在失败后自动重试指定的次数。/***&nbsp;异步任务重试*&nbsp;@param&nbsp;task&nbsp;要执行的异步任务*&nbsp;@param&nbsp;times&nbsp;需要重试的次数,默认为&nbsp;3&nbsp;次*/function&nbsp;retry(task,&nbsp;times&nbsp;=&nbsp;3)&nbsp;{//&nbsp;TODO:&nbsp;请实现}//&nbsp;---------------测试示例&nbsp;----------------//&nbsp;原方法const&nbsp;request&nbsp;=&nbsp;async&nbsp;(data)&nbsp;=&gt;&nbsp;{//&nbsp;模拟失败if&nbsp;(Math.random()&nbsp;&lt;&nbsp;0.7)&nbsp;{throw&nbsp;new&nbsp;Error('request&nbsp;failed');}const&nbsp;res&nbsp;=&nbsp;await&nbsp;fetch(&#39;https://jsonplaceholder.typicode.com/posts&#39;,&nbsp;{method:&nbsp;'POST',body:&nbsp;JSON.stringify(data),});return&nbsp;res.json();}//&nbsp;新的方法const&nbsp;requestWithRetry&nbsp;=&nbsp;retry(request);//&nbsp;使用async&nbsp;function&nbsp;run()&nbsp;{const&nbsp;res&nbsp;=&nbsp;await&nbsp;requestWithRetry({&nbsp;body:&nbsp;'content'&nbsp;});console.log(res);}run();第三题就是给&nbsp;retry&nbsp;函数添加类型注释,用到泛型第四题:在组件库中将&nbsp;Alert&nbsp;用&nbsp;api&nbsp;的形式实现(应该就是&nbsp;message&nbsp;这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务