Java Web

1.jsp和servlet有什么区别?

  jsp是servlet技术的扩展,本质上就是servlet的简易方式。

  servlet和jsp最主要的区别在于,servlet的应用逻辑是在java文件中,并且完全从表示层中的html里分离开来,而jsp是java和html组合成一个扩展名为jsp的文件。jsp侧重于视图,servlet主要用于控制逻辑。

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

  jsp中有9大内置对象

  • request:封装客户端的请求,其中包含来自get或post请求的参数。
  • response:封装服务器对客户端的响应。
  • pageContext:通过该对象可以获取其他对象。
  • session:封装用户会话的对象。
  • application:封装服务器运行环境的对象。
  • out:输出服务器响应的输出流对象。
  • config:web应用的配置对象。
  • page:jsp页面本身(相当于java程序的this)。
  • exception:封装页面抛出异常的对象。

3.jsp有哪些作用域?

jsp有四中作用域

  • page:代表与一个页面相关的对象和属性。
  • request:代表与客户端发出的一个请求相关的对象和属性。
  • session:代表某个用户与服务器建立的一次会话相关的对象和属性。
  • application:代表与整个web应用程序相关的对象和属性。

4.session和cookie有什么区别?

存储位置不同:session存储在服务器端,cookie存储在浏览器端。

安全性不同:cookie安全性一般,因为存储在客户端可以被伪造和修改。

容量和个数限制:cookie有容量限制,每个站点下的cookie也有个数限制。

存储的多样性:session可以存储在redis、数据库、应用程序中。而cookie只能存储在浏览器中。

5.session的工作原理?

  session的工作原理:在客户端登录完成后,服务器会创建对应的session,session创建完成后,会把session的id发送给客户端,客户端在存储到浏览器中。这样客户端每次访问服务器时,都会带着sessionid,服务器拿到sessionid之后,在内存中找到与之对应的session这样就可以正常工作了。

6.客户端禁止cookie能实现session还能用?

  可以用,session只是依赖cookie存储sessionid,如果cookie被禁用了,可以在URL中添加sessionid的方式保证session能正常使用。

7.Spring MVC和Struts的区别是什么?

拦截级别:struts2是类级别的拦截。spring mvc是方法级别的拦截。

数据独立性:spring mvc的方法之间基本是独立的,独享request和response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量。而struts2虽然方法之间也是独立的,但其所有的action变量是共享的,这不会影响程序的运行,却给我们的编码和读程序时造成一定的麻烦。

拦截机制:struts2有自己的intercepoter机制,spring mvc用的是独立的aop方式,这样导致struts2的配置文件量比spring mvc大。

对ajax的支持:spring mvc集成了ajax,所以ajax的使用很方便,只需要一个注解@ReponseBody就可以实现了。而struts2一般需要安装插件或者自己写代码才行。

8.如果避免sql注入?

使用预处理PreparedStatement。

使用正则表达式过滤掉字符中的特殊字符。

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

  XSS攻击:即跨站脚步攻击,它是web程序中常见的漏洞。原理是攻击者往web页面里插入恶意的脚步代码(css代码、Javascript代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户cookie、破坏页面结构、重定向到其他网站等。

  预防XSS的核心是必须对输入的数据做过滤处理。

10.是你是CSRF攻击,如何避免?

  CSRF:Cross-Site Request Forgery(跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你的名义发送邮件、发消息、购买商品、转账等。

防御手段

  • 验证请求来源地址。
  • 关键操作添加验证码。
  • 在请求地址添加token并验证。
原文地址:https://www.cnblogs.com/bl123/p/14994038.html