Loading

Java面试题5 JavaWEB

自己尝试通过打字来回答一些网上常见的面试题,答案仅代表我自己的观点

64. jsp 和 servlet 有什么区别?

Servlet是一个java类,它代表一个客户请求的处理器,它可以接收客户的请求,进行必要处理,并返回结果给对象,这就是Servlet的全部功能。

jsp是一个页面模板,主要用于展示页面给客户。但其实实际上jsp也会被编译成一个Servlet,因为它其实也是接收用户请求(用户访问页面)、进行必要处理(比如一些动态计算,接收Model的值填充到页面中、操作session等),然后返回结果给对象(返回页面)。所以,JSP只是提供给我们一种编写页面的更简单、更优雅的方式,实际上还是Servlet。

[-] 65. jsp 有哪些内置对象?作用分别是什么?

  1. request: 请求对象,代表用户发来的请求
  2. response 响应对象,代表我们要给用户返回的响应
  3. pageContext 页面上下文,它可以用来获取其它的对象
  4. session 会话对象,代表浏览器的这次会话,保存此次会话中的数据
  5. application 应用对象,整个应用共享的对象,可以保存一些应用级的全局数据
  6. out 输出对象,就是服务端向用户端响应的一个输出流
  7. config 配置对象,用于获取Web应用的一些配置
  8. page 页面对象,代表JSP页面本身
  9. exception 代表页面抛出的异常

66. 说一下 jsp 的 4 种作用域?

  1. page 只在当前页面中有效
  2. request 在当前请求中有用,forward可以更换页面但并不产生新的请求
  3. session 在浏览器的本次会话中有效
  4. application 在整个应用中有效

67. session 和 cookie 有什么区别?

由于HTTP协议是无状态的,它不会记录用户早先访问的任何细节,所以当你的网站需要保存某些用户数据时就需要Cookie

Cookie是Http协议指定的一个头部字段,服务器可以通过在响应头中添加Set-Cookie字段让浏览器保存某些键值对信息,在下次访问时,浏览器就会在请求头中携带这些键值对,这样就完成了数据的保存。

但Cookie有一些限制,比如它不并不安全,数据完全保存在客户端,这让服务端处于被动的状态,它必须对客户端中传入的所有Cookie持怀疑态度,并小心的验证,再有,Cookie的长度有限,而且只能保存字符串数据。

Session把数据存储这一功能交给服务端,每一个浏览器会话都会产生一个SeesionID,用于唯一标识一次会话,然后,服务端会通过Cookie将这个ID返回给客户端,客户端每次只需要携带这个ID请求服务器,服务器通过这个ID可以识别是哪一个会话,从而取出会话中的数据。

68. 说一下 session 的工作原理?

最简单的Session只需要在服务端存储一个散列表即可实现,不过需要考虑并发访问的安全,这种实现方式适用于单体应用程序,对于大型分布式应用程序,可以考虑将session存储在独立的数据库服务器上或使用分布式session。

69. 如果客户端禁止 cookie 能实现 session 还能用吗?

默认情况下,Session基于Cookie实现。我们不能把技术看得太死板,其实知道了它的原理,我们完全可以用URL来传递Session嘛,或者通过某种其它方式手动传递Session。

70. spring mvc 和 struts 的区别是什么?

没学过structs

71. 如何避免 sql 注入?

避免SQL注入只有一种方式,就是小心再小心的对前端传入的数据进行校验、转义工作。PreparedStatement可以帮我们完成这个工作。

72. 什么是 XSS 攻击,如何避免?

XSS漏洞一般是由于对用户传入的数据没有小心的转义造成的,用户可能保存一些JS脚本或者HTML标签,如果你没有过滤掉它们,这些数据通过浏览器前端展示的时候就会被当成页面的一部分执行。这就是XSS攻击。避免的方式也就是对前端传过来的数据进行小心的过滤和转义。

73. 什么是 CSRF 攻击,如何避免?

即利用浏览器会保存Cookie信息的事实,在页面中伪造一个发向被攻击用户曾经访问过的页面的请求,这个请求可能是转账,修改密码等。

CSRF的避免手段太多了,总结起来就是通过验证让攻击者无法伪造请求,下面列举一些避免手段:

  1. 验证Referer字段。
  2. 使用某种攻击者无法伪造的Token进行验证。
  3. 使用各种验证手段
posted @ 2022-06-23 10:17  yudoge  阅读(31)  评论(0编辑  收藏  举报