Java Web 面试
1jsp 和 servlet 有什么区别?
JSP(JavaServer Pages)是一种用于创建动态Web页面的Java技术,它允许在HTML页面中嵌入Java代码,并通过JSP容器在服务器上进行解析和执行。JSP主要用于视图层的展示和交互。
Servlet是一种运行在服务器上的Java程序,用于接收和处理来自客户端的HTTP请求,并生成响应。Servlet可以通过编程方式生成HTML内容和其他数据,主要用于控制层的处理和业务逻辑。
2jsp 有哪些内置对象?作用分别是什么?
request:封装了客户端请求的信息,包括请求参数、请求头等。
response:封装了服务器响应的信息,包括响应内容、响应状态等。
out:用于向客户端输出内容。
session:表示会话对象,用于在多个请求之间共享数据。
application:表示应用程序对象,用于在整个应用程序范围内共享数据。
page:表示当前JSP页面本身,可以用于获取JSP页面的属性和配置信息。
config:表示当前JSP页面的配置信息。
3 说一下 jsp 的 4 种作用域?
page:页面作用域,表示在当前页面中有效。
request:请求作用域,表示在同一个请求中有效。
session:会话作用域,表示在同一个会话中有效。
application:应用程序作用域,表示在整个应用程序范围内有效。
4 session 和 cookie 有什么区别?
Session是服务器端的机制,用于跟踪用户的状态。服务器为每个会话创建一个唯一的Session对象,并将该对象的ID通过Cookie发送给客户端保存。Session可以存储在服务器的内存中或持久化到数据库等存储介质中。
Cookie是客户端的机制,用于在客户端存储少量的数据。Cookie是由服务器发送给客户端的小型文本文件,存储在客户端的浏览器中。每次浏览器向服务器发送请求时,都会将相应的Cookie信息包含在请求头中发送给服务器。
5 说一下 session 的工作原理?
客户端访问服务器时,服务器为该客户端创建一个唯一的Session对象,并生成一个Session ID。
服务器将Session ID通过Cookie发送给客户端保存。
客户端的浏览器在后续的请求中都会携带该Cookie,将Session ID发送给服务器。
服务器根据Session ID找到对应的Session对象,从而识别出用户的身份和状态。
6 如果客户端禁止 cookie 能实现 session 还能用吗?
如果客户端禁止Cookie,仍然可以使用Session,但需要通过URL重写的方式将Session ID添加到URL参数中,在每个请求中都携带Session ID。
7 spring mvc 和 struts 的区别是什么?
Spring MVC是一个基于Spring框架的Web MVC框架,提供了一套完整的、灵活的Web开发体系结构。Spring MVC是Spring的一部分,可以直接集成到Spring应用中使用。
Struts是一个独立的开源Web MVC框架,它的核心是一个基于Java EE的MVC框架。Struts需要单独配置和部署,与Spring框架集成需要额外的配置和工作。
8 如何避免 sql 注入?
使用参数化查询(Prepared Statement):将SQL语句中的参数使用占位符代替,然后通过设置参数的值来传递数据,从而避免拼接SQL字符串。
输入验证和过滤:对用户输入进行验证和过滤,确保输入的数据符合预期的格式和类型。
使用ORM框架(如Hibernate、MyBatis):ORM框架会自动处理SQL语句和参数的拼接,减少手动拼接SQL的机会,从而降低SQL注入的风险。
9 什么是 XSS 攻击,如何避免?
对用户输入进行转义处理:对用户输入的特殊字符进行转义,确保其在页面上仅作为普通文本显示,而不被浏览器解释为代码。
输入验证和过滤:对用户输入进行验证和过滤,确保输入的数据符合预期的格式和类型。
设置HTTP响应头的Content-Security-Policy:通过设置Content-Security-Policy响应头,限制页面中能够执行的脚本来源。
10 什么是 CSRF 攻击,如何避免?
验证请求来源:在后端验证每个请求的来源是否合法,可以通过检查Referer头、添加Token等方式来验证请求的合法性。
使用验证码:对于敏感操作,要求用户输入验证码进行验证,增加攻击者的难度。
设置SameSite属性:通过设置Cookie的SameSite属性为Strict或Lax,限制Cookie只能在同源请求中发送,从而减少CSRF攻击的风险。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!