Java教程

Java面试题(六)Java基础-JavaWeb

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

64.jsp 和 servlet 有什么区别?

jsp本质上就是一个servlet,它是servlet的一种特殊形式,每个jsp页面都是一个servlet实列

Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器管理,用来生成动态内容。一个 servlet 实例是实现了特殊接口 Servlet 的 Java 类,所有自定义的 servlet 均必须实现 Servlet 接口

区别

Servlet 适合动态输出 Web 数据和业务逻辑处理,对于 html 页面内容的修改非常不方便;Jsp 是在 Html 代码中嵌入 Java 代码,适合页面的显示

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

JSP有9个内置对象: 
- request:封装客户端的请求,其中包含来自GET或POST请求的参数; 
- response:封装服务器对客户端的响应; 
- pageContext:通过该对象可以获取其他对象; 
- session:封装用户会话的对象; 
- application:封装服务器运行环境的对象; 
- out:输出服务器响应的输出流对象; 
- config:Web应用的配置对象; 
- page:JSP页面本身(相当于Java程序中的this); 
- exception:封装页面抛出异常的对象
 

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

application

在所有应用程序中有效

session

在当前会话中有效

request

在当前请求中有效

page

在当前页面有效

67.session 和 cookie 有什么区别?

1、cookie存放在客户端浏览器上,session存放在服务器上

2、单个cookie保存的数据要<=4kb 最多可以保存20个cookie,session没有限制

3、cookie中只能保管ASCII字符串,并需要通过编码方式存储为Unicode字符或者二进制数据

      session中可以存储任何数据类型

4、cookie可以设置长期有效,session不能长期有效

5、cookie支持跨域名访问,session不支持

6、session存储到服务器比cookie存储在客户端本地安全

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

浏览器通过访问服务器的servlet 服务器会自动创建session并把sessionId通过cookie返回给浏览器存储,这样客户端每次访问时都会带着sessionId,服务器根据sessionid 获取出会话中存储的信息,服务器会默认给 session 一个过期时间,即从该 session 的会话在有效时间内没有再被访问就会被设置过超时,需要重新建立会话

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

默认情况下 session 无法生效

其他方法:

1、把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数

2、服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数

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

1、SpringMVC是方法级别的拦截,struts是类级别的拦截

2、Struts2采用Filter实现,SpringMVC则采用Servlet实现

3、Struts2每次加载都需要加载所有属性,SpringMVC加载一次单例模式bean注入,所以SpringMVC开发效率和性能高于Struts2

4、spring MVC和Spring是无缝的,从这个项目的管理和安全上也比Struts2高

71.如何避免 sql 注入?

1、对用户的输入进行校验,可以通过正则表达式,或限制长度

2、预编译 SQL(Java 中使用 PreparedStatement),参数化查询方式,避免 SQL 拼接

3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接,最大限度的减少注入攻击对数据库的危害

4、对进入数据库的特殊字符进行转义处理,或编码转换

5、报错信息不要包含 SQL 信息输出到 Web 页面

6、发布前,利用工具进行 SQL 注入检测

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

XSS攻击是指跨站脚本攻击,是一种代码注入攻击,攻击者通过在网站上注入恶意脚本,使之在用户浏览器上运行,从而盗取用户信息如Cookie等

如何避免:

1、关键字转义:可以在后端对"<",">"等符号进行转译成HTML能试别的转义符

2、长度限制:一般XSS嵌入的恶意代码无论是那种类型,都需要相当的长度才能实施

3、开启CSP:白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行

4、设置cookie的httpOnly属性:浏览器的cookie不能通过js脚本获取,即不能通过document.cookie获取

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

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