第六部分 Java Web

100 阅读3分钟

64. jsp和servlet的区别

  • jsp经过编译就成了servlet(jsp本质就是servlet,JVM只能识别Java类,Web容器会将jsp转换成JVM能够识别的Java类)

65. jsp的内置对象有哪些?

jsp有9个内置对象

  • request:封装客户端的请求,其中包括来自Get请求和Post请求的参数
  • response:封装服务器的响应
  • pageContext:通过该对象可以获取其他对象
  • session:封装了用户会话的对象
  • application:封装服务器运行环境的对象
  • config:Web应用的配置对象
  • out:页面的输出流对象
  • page:页面本身(相当于Java类的this)
  • exception:封装了页面抛出的异常对象

66. jsp的四种作用域

JSP的四种作用域包括:page,request,session,application

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

67. session和cookie的区别

session是服务器保存的一种数据结构,用于追踪用户;cookie是客户端用于保存用户信息的机制,用于保存用户的信息,也是实现session的一种方法。在发送Http请求时,客户端都会发送相关的cookie到服务器。在第一次创建session的时候,服务器会告知客户端需要在cookie保存的Session ID,用于标识用户,下一次访问携带该cookie即可被识别该用户。如果客户端禁用cookie,可以使用url重写的方式来实现session机制

68. session的原理

类似于一个map,键存储的是Session ID,当客户端发送请求携带Session ID时,服务器端就可以从这个map中找到对应的信息

69. 如果客户端禁用cookie,session还可以实现吗

可以。手动通过url传值,隐藏表单传递Session ID

70. spring mvc和struts的区别

  • 拦截机制不同:spring mvc是方法级别的拦截,struts是类级别的拦截
  • 底层框架不同:sprig mvc是通过servlet(DispatchServlet)实现,struts是通过Filter实现
  • 性能不同:spring mvc的开发效率和性能要高于struts

71. 如何防止spl注入

  • PreparedStatement
  • 使用正则表达式过滤参数
  • 字符串过滤

72. XSS攻击

跨站脚本攻击,其原理是攻击者向存在XSS漏洞的网站输入恶意的HTML代码,当用户浏览该网站时,该代码会自动执行,从而达到攻击的目的。

防范思路:对输入进行过滤,对输出进行编码

73. CSRF攻击

跨站请求伪造:一般来说,攻击者通过伪造用户的浏览器请求,向用户曾经认证过的网站发送出去,而该网站会误以为是用户并执行相关的操作,通常用于盗取密码,转账,发送虚假信息

解决方法:

  • 验证Http Referer信息:记录了Http请求的来源地址
  • 使用验证码:用户不友好
  • 在请求地址添加toekn:要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中
  • 在请求头自定义属性并验证