华为2024春招面试,JavaWeb--快速入门Servlet,多线程面试题高并发

下面补充一点知识

Get请求和Post请求的区别?

GET请求一般用去请求获取数据

POST一般作为发送数据到后台时使用

GET请求也可传参到后台,但是其参数在浏览器的地址栏的url中可见,所以隐私性安全性较差,且参数长度也是有限制的

POST请求传递参数放在Request body中,不会在url中显示,比GET要安全,且参数长度无限制

GET请求比较常见的方式是通过url地址栏请求

POST最常见是通过form表单发送数据请求

6.通过继承 HttpServlet 实现 Servlet


一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。

1、编写一个类去继承 HttpServlet 类

2、根据业务需要重写 doGet 或 doPost 方法

3、到 web.xml 中的配置 Servlet 程序的访问地址

package com.caq.study;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class HelloServlet2 extends HttpServlet {

/**

  • doGet方法在get请求时调用

  • @param req

  • @param resp

  • @throws ServletException

  • @throws IOException

*/

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“HelloServlet2的doGet方法”);

}

/**

  • 在post请求的时候调用

  • @param req

  • @param resp

  • @throws ServletException

  • @throws IOException

*/

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“HelloServlet2的doPost方法”);

}

}

xml文件在第一个实例中

image-20211224185430889

7.如何使用idea创建Servlet程序


image-20211224190002979

8.Servlet类的继承体系


image-20211224190032839

二、ServletConfig类

===============================================================================

ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。

Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。

Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的ServletConfig 对 象。

ServletConfig 类的三大作用


1、可以获取 Servlet 程序的别名 servlet-name 的值

2、获取初始化参数 init-param

3、获取 ServletContext 对象

三、ServletContext 类

=================================================================================

什么是 ServletContext?


1、ServletContext 是一个接口,它表示 Servlet 上下文对象

2、一个 web 工程,只有一个 ServletContext 对象实例。

3、ServletContext 对象是一个域对象。

4、ServletContext 是在 web 工程部署启动的时候创建。在 web 工程停止的时候销毁。

什么是域对象?


域对象,是可以像 Map 一样存取数据的对象,叫域对象。

这里的域指的是存取数据的操作范围,整个 web 工程

image-20211224190703434

package com.caq.study;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class ContextServlet1 extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取context对象

ServletContext contest = getServletContext();

contest.setAttribute(“key1”,“value1”);

System.out.println(“Context1中获取域数据key1的值是:”+contest.getAttribute(“key1”));

System.out.println(“Context1中获取域数据key1的值是:”+contest.getAttribute(“key”));

System.out.println(“Context1中获取域数据key1的值是:”+contest.getAttribute(“key”));

System.out.println(“Context1中获取域数据key1的值是:”+contest.getAttribute(“key”));

}

}

image-20211224190858723

四、HTTP协议

=======================================================================

什么是HTTP协议?


协议就是指双方或多方规定好的,大家都需要遵守的规则,就叫协议

HTTP协议就是客户端和服务器通信时,发送数据要遵守的规则!

Http协议中的数据又叫报文

请求的 HTTP 协议格式


客户端给服务器发送数据叫请求。 服务器给客户端回传数据叫响应。

Get请求

请求又分为 GET 请求,和 POST 请求两种

放一个Get请求的HTTP协议内容

image-20211224191736902

image-20211224193309144

Post请求

image-20211224193422636

常用请求头的说明

Accept: 表示客户端可以接收的数据类型

Accpet-Languege: 表示客户端可以接收的语言类型

User-Agent: 表示客户端浏览器的信息

Host: 表示请求时的服务器 ip 和端口

哪些是 GET 请求,哪些是 POST 请求


GET请求有哪些:

1、form标签method=get

2、a标签

3、link标签引入css

4、Script标签引入js 文件

5、img标签引入图片

6、iframe引入 html页面

7、在浏览器地址栏中输入地址后敲回车

POST请求有哪些:

8、form标签method=post

响应的 HTTP 协议格式


image-20211224193632889

常用的响应码说明


200 表示请求成功

302 表示请求重定向

404 表示请求服务器已经收到了,但是你要的数据不存在**(请求地址错误)**

image-20211224193755581

500 表示服务器已经收到请求,但是服务器内部错误**(代码错误)**

因为我的代码里出现了除0的操作所以会报500

image-20211224193938695

五、HttpServletRequest类

====================================================================================

HttpServletRequest 类有什么作用


每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所有请求的信息。

HttpServletRequest 类的常用方法


getRequestURI() 获取请求的资源路径

getRequestURL() 获取请求的统一资源定位符(绝对路径)

注意区分两者

getRemoteHost() 获取客户端的ip 地址

getHeader() 获取请求头

getParameter() 获取请求的参数

getParameterValues() 获取请求的参数(多个值的时候使用)

getMethod() 获取请求的方式GET 或POST

setAttribute(key, value) ; 设置域数据

getAttribute( key); 获取域数据

getRequestDispatcher() 获取请求转发对象

实例

package com.caq.study;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

public class RequestAPIServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//获取请求的资源路径

System.out.println(“URI=>”+req.getRequestURI());

//获取请求的统一资源定位符(绝对路径)

System.out.println(“URI=>”+req.getRequestURL());

System.out.println(“客户端地址==>”+req.getRemoteHost());

System.out.println(“请求投User-Agent==》”+req.getHeader(“User-Agent”));

System.out.println(“请求的方式==》”+req.getMethod());

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

写在最后

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

Mybatis面试专题

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

MySQL面试专题

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

并发编程面试专题

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

[外链图片转存中…(img-CZ5l4eXF-1712480067728)]

Mybatis面试专题

[外链图片转存中…(img-udF9qd6z-1712480067729)]

MySQL面试专题

[外链图片转存中…(img-VUoUxJDg-1712480067729)]

并发编程面试专题

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值