javaWeb面试题

这篇博客详细介绍了JavaWeb面试的常见问题,包括HTTP的GET和POST区别、Servlet的生命周期和架构,以及Spring的IOC和AOP机制。还讨论了JSP内置对象、session与cookie的差异、MyBatis的优点和缺点,以及MyBatis的一级和二级缓存等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、HTTP 请求的 GET 与 POST 方式的区别

2、解释一下什么是 servlet

3、说一说 Servlet 的生命周期

4、Servlet 的基本架构

5、什么情况下调用 doGet()和 doPost()

6、Request 对象的主要方法

7、forward 和 redirect 的区别

8、jsp 有哪些内置对象?作用分别是什么

9、JSP 的常用指令

10、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别

11、四种会话跟踪技术作用域

12、MVC 的各个部分都有那些技术来实现?如何实现

13、web.xml 文件中可以配置哪些内容

14、session 和 cookie 有什么区别

15、Java 反射技术主要实现类有哪些,作用分别是什么

16、讲一下什么是 Spring 

17、Spring 的 IOC 和 AOP 机制

18、Spring 中 Autowired 和 Resource 关键字的区别

19、依赖注入的方式有几种,各是什么

20、解释一下 spring bean 的生命周期

21、解释 Spring 支持的几种 bean 的作用域 

22、Spring 基于 xml 注入 bean 的几种方式

23、Spring 框架中都用到了哪些设计模式 

24、Spring MVC 流程

25、SpringMVC 怎么样设定重定向和转发的 

26、SpringMVC 常用的注解有哪些 

 27、什么是 MyBatis

 28、MyBatis 的优点和缺点

29、#{}和${}的区别是什么  

30、当实体类中的属性名和表中的字段名不一样 ,怎么办 

31、如何执行批量插入 

 32、MyBatis 实现一对一有几种方式?具体怎么操作的

33、Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么 

34、Mybatis 的一级、二级缓存


1、HTTP 请求的 GET 与 POST 方式的区别

1. get 是从服务器上获取数据,post 是向服务器传送数据。
2. 请求的时候参数的位置有区别:get 的参数是拼接在 url 后面,用户在浏览器地址栏可以看到;post 是放在 http 包的包体中
3. 能提交的数据有区别,get 方式能提交的数据只能是文本,且大小不超过 1024 个字节,而 post 不仅可以提交文本还有二进制文件。 所以说想上传文件的话,那我们就需要使用 post 请求方式
4. get 安全性非常低,post 安全性较高;比如说用户注册,不能把用户提交的注册信息用 get 的方式,会把用户的注册信息都显示在Url 上,是不安全的。

2、解释一下什么是 servlet

Servlet是一种独立于平台和协议的服务端的java技术,可以生成动态WEB页面与传统的CGI(计算机图形接口)和其他类似的CGI技术相比。Servlet具有更好的可移植性。更强大的功能,更少的投资,更高的效率,更好的安全性。

servlet是使用java Servlet应用程序接口(API)及相关类和方法的java程序。java语言能够实现的功能Servlet基本都能够实现。(除了图形化界面)。Servlet 主要用于处理客户端传来的Http 请求,并返回一个响应,通常来说Servlet就是指HttpServlet,用于处理Http请求,其能够处理的请求有doGet(),doPost(),service()等方法,开发servlet时可以直接结成javax.servlet,http.HttpServlet.

Servlet需要在web.xml中进行描述,例如。映射执行servlet的名字,配置servlet类,初始化参数,进行安全配置,URL映射和设置启动优先权。Servlet不仅可以生成HTML脚本输出,也可以生成二进制表单输出。

 Servlet应用广泛,现在许多流行框架都离不开Servlet的支持,比如SHH,Spring 容器启动的时候,要在web,xml中装载Spring容器和Actioncontext来初始化Spring的一些参数。如依赖注入,数据库表的映射,初始化系统的安全配置设置read等属性进行一些相关的操作。

3、说一说 Servlet 的生命周期

Servlet 生命周期包括三部分:
初始化:Web 容器加载 servlet,调用 init()方法
处理请求:当请求到达时,运行其 service()方法。service()自动派遣运行与请求相对应的 doXXX(doGet 或者 doPost)方法。
销毁:服务结束,web 容器会调用 servlet 的 distroy()方法销毁 servlet。

4、Servlet 的基本架构

public class ServletName extends HttpServlet { 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ } 
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }

5、什么情况下调用 doGet()和 doPost()

Jsp 页面中的 FORM 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

6、Request 对象的主要方法

setAttribute(String name,Object)
设置名字为 name 的 request 的参数值
getAttribute(String name)
返回由 name 指定的属性值
getAttributeNames()
返回 request 对象所有属性的名字集合,结果是一个枚举的实例
getCookies()
返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组
getCharacterEncoding()
返回请求中的字符编码方式
getContentLength()
返回请求的 Body 的长度
getHeader(String name)
获得 HTTP 协议定义的文件头信息
getHeaders(String name)
返回指定名字的 request Header 的所有值,结果是一个枚举的实例
getHeaderNames()
返回所以 request Header 的名字,结果是一个枚举的实例
getInputStream()
返回请求的输入流,用于获得请求中的数据
getMethod()
获得客户端向服务器端传送数据的方法
getParameter(String name)
获得客户端传送给服务器端的有 name 指定的参数值
getParametervalues(String name)
获得有 name 指定的参数的所有值
getRequestURI()
获取发出请求字符串的客户端地址
getRemoteAddr()
获取客户端的 IP 地址
getSession([Boolean create])
返回和请求相关 Session
getServerName()
获取服务器的名字

7、forward 和 redirect 的区别

转发与重定向
(1)从地址栏显示来说
forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器.浏
览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址;
redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的 URL.
(2)从数据共享来说
forward:转发页面和转发到的页面可以共享 request 里面的数据.
redirect:不能共享数据.
(3)从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
(4)从效率来说
forward:高.
redirect:低.

8、jsp 有哪些内置对象?作用分别是什么

名称
作用
request
包含用户端请求的信息
response
包含服务器传回客户端的响应信息
session
与请求有关的会话期
pageContext
管理网页属性
application
服务器启动时创建,服务器关闭时停止,为多个应用程序保存信息
out
向客户端输出数据
config
servlet 的架构部件
page
指网页本身
exception
针对错误页面才可使用

9、JSP 的常用指令

(1)page 指令: 属性最多的指令(实际开发中 page 指令默认),属性最多的一个指令,根据不同的属性,指导整个页面特性
格式:<%@ page 属性名 1= "属性值 1" 属性名 2= "属性值 2" ...%>
常用属性如下:
language:jsp 脚本中可以嵌入的语言种类,这个没用,写与不写一样的;
pageEncoding:当前 jsp 文件的本身编码---内部可以包含 contentType
contentType:response.setContentType(text/html;charset=UTF-8)
import:导入 java 的包
errorPage:当前页面出错后跳转到哪个页面
isErrorPage:当前页面是一个处理错误的页面
(2)include 指令: 页面包含(静态包含)指令,可以将一个 jsp 页面包含到另一个 jsp 页面中
格式:<%@ include file="被包含的文件地址"%>
(3)taglib 指令: 在 jsp 页面中引入标签库(
jstl 标签库、struts2 标签库)
格式:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值