Java教程

Java面试题之Java Web

本文主要是介绍Java面试题之Java Web,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

六、Java Web

64. jsp 和 servlet 有什么区别?

  • jsp擅长表现页面显示,servlet擅长逻辑控制
  • servlet没有内置对象,jsp有内置对象
  • servlet的应用逻辑在.java文件中,而jsp中,java和html组合为一个.jsp文件.
  • servlet在java代码中嵌入html代码,jsp是在html中嵌入java代码

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

jsp有9个内置对象:

  • request 用户端请求,此请求会包含来自GET/POST请求的参数
  • response 网页传回用户端的回应
  • pageContext 网页的属性是在这里管理
  • session 与请求有关的会话期
  • application  servlet正在执行的内容
  • out 用来传送回应的输出
  • config  servlet的构架部件
  • page JSP网页本身
  • exception 针对错误网页,未捕捉的例外

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

  • application:它的有效范围是整个应用。整个应用是指从应用启动.application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访             问时得到的是修改后的值。
  • session:如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间        的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session)
  • request:就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过            程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
  • page:代表变量只能在当前页面有效

67. session 和 cookie 有什么区别?

  • 数据存放位置不同.session在服务器,cookie在客户端浏览器
  • 安全程度不同,别人可以分析存放在本地的cookie进行cookie欺骗.
  • 单个cookie保存的数据不能超过4k,而session是在服务器的,所以没有限制
  • cookie只能存储string类型的数据,session可以存储对象.

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

当用户第一次访问一个服务器,服务器就会为该用户创建一个session,并生成一个和该session有关的session_id,
这个id是唯一的,不可重复.这个id将会在本次响应中返回,保存在客户端的cookie中,下次访问的时候,客户端浏览器的cookie中含有session_id,服务器基于这个id就可以识别该用户.

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

可以,当cookie被禁用,我们可以使用"URL重写"来使session生效,简单来说就是将sessionid的信息作为请求地址的一部分 。这样服务器就可以解析URL,得到该sessionid,进而识别用户.

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

  • mvc的入口是一个servlet,struts2的入口是一个filter
  • mvc是单例的,struts2是多例的
  • mvc面向方法开发,struts2面向类开发.
  • struts2采用值栈存储请求和响应数据,mvc通过参数解析器将request请求解析.

71. 如何避免 sql 注入?

  • 采用预编译语句
  • 使用正则过滤传入的参数.
  • 屏蔽不安全的字符

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

XSS攻击,即跨站脚本攻击.是指攻击者在用户端注入恶意的可运行脚本,让其在用户浏览网页时运行,从而通过脚本来获得用户的信息.
    避免:

             对用户输入和URL参数进行过滤,过滤掉脚本相关的内容
             对输出进行编码

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

CSRF攻击也叫跨站请求伪造,攻击者通过伪造用户的浏览器请求,向用户自己曾经认证过的网站发送,使目标网站误以为 是用户的真实操作而去执行命令.
    避免:1.令牌机制 2.token验证

这篇关于Java面试题之Java Web的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!