面试题--JavaWEB基础

常见Http状态码

200 成功返回状态

301 永久重定向,被请求的资源永久移动到新位置

302 临时重定向,被请求的资源临时移动到新的位置,项目中使用了oauth2,对目标资源访问无权限时就会见到,它是会重定向到授权地址

401 无权限访问

403 禁止访问,服务器已经接收到请求,但拒绝执行

404 找不到该资源

500 服务器内部错误 zuul找不到服务名就会见到

503 服务器内部错误 服务器维护或者过载

504 网关超时

Servlet的生命周期

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

  • Servlet 初始化后调用 init () 方法。

  • Servlet 调用 service() 方法来处理客户端的请求。

  • Servlet 销毁前调用 destroy() 方法。

  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

什么是过滤器?怎么创建一个过滤器

过滤器:在请求发送之后,处理之前对请求的一次拦截,可以更改请求状态或者参数值等。

创建过滤器:实现filter接口,重写doFilter方法,最后在web.xml中配置过滤器

讲一下Session的工作原理

服务端的session id会自动写入客户端的cookie中,每次请求客户端回自动把cookie带入后台,后台自动根据cookie中的sessionid就能找到session

Session和cookie有什么区别

session和cookie都是为了弥补http协议的无状态特性,解决会话问题

session是以ConcurrentHashMap结构存储在服务器端,同时生成一个sessionid返回客户端并存放到cookie中

cookie是将数据存储在客户浏览器端

session占用服务器的性能,但安全性较高,使用cookie减轻服务器的压力,但有被用户篡改风险因此安全性较低

说说preparedStatement和Statement的区别

statement的sql语句使用字符串拼接,很容易出错,而preparedStatement使用?作为占位符,不容易出错易于维护

statement不对sql语句作处理,直接交给数据库,而preparedStatement支持预编译,事先将编译好的sql语句放到数据库端,相当于缓存,因此效率更高

statement有sql注入风险,preparedStatement没有sql注入风险

请求转发和重定向的区别

转发是一次请求,可以共享同一组request和response,重定向是多次请求,不能共享同一组request和response

转发地址栏不会发生变化,重定向地址栏会发生变化

转发不能到外部应用,重定向可以到尾部应用

如果我们需要数据共享,使用转发,如果需要访问内部资源(WEB-INF),使用转发,如果需要跨域到外部资源,必须使用重定向

get和post请求的区别

最直观的区别,get把参数包含在url中,post是把参数放到request body中

post相对于get更安全,post发送的数据更大,get有url的长度限制

post更发送更多的数据类型,get只能发送ASCII字符

在restful中,get一般用户查询搜索数据,post一般用户添加或者修改数据

JSP的原理

jsp的本质就是servlet,每个JSP文件都回被编译成一个Serverlet去执行,在该Serverlet会对JSP中的动态内容进行替换,静态部分是标准的html,动态部分是java程序

写在最后:

笔者小,中,大厂均有面试经验,目前正在从事全栈开发工作,坚持每日分享java全栈开发知识与相关的面试真题,希望能够给大家带来帮助,同大家共同进步

相关推荐
伯牙碎琴8 分钟前
十一、SOA(SOA的具体设计模式)
架构
【D'accumulation】9 分钟前
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
java·设计模式·mvc
wn53119 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
试行24 分钟前
Android实现自定义下拉列表绑定数据
android·java
茜茜西西CeCe30 分钟前
移动技术开发:简单计算器界面
java·gitee·安卓·android-studio·移动技术开发·原生安卓开发
bjzhang7530 分钟前
SpringBoot开发——集成Tess4j实现OCR图像文字识别
spring boot·ocr·tess4j
Hello-Mr.Wang31 分钟前
vue3中开发引导页的方法
开发语言·前端·javascript
救救孩子把34 分钟前
Java基础之IO流
java·开发语言
flying jiang35 分钟前
Spring Boot 入门面试五道题
spring boot
WG_1735 分钟前
C++多态
开发语言·c++·面试