暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

JSP面试题

叶子闲聊 2021-07-02
376

1)JSP 和 servlet 有什么区别?

     JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于:

  1. servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的html 里分离开来,

  2. JSP 的情况是 Java 和 html 可以组合成一个扩展名为JSP 的文件。

  3. JSP 侧重于视图,servlet 主要用于控制逻辑。


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

  1. request:封装客户端的请求,其中包含来自 get 或 post 请求的参数;

  2. response:封装服务器对客户端的响应;

  3. pageContext:通过该对象可以获取其他对象;

  4. session:封装用户会话的对象;

  5. application:封装服务器运行环境的对象;

  6. out:输出服务器响应的输出流对象;

  7. configWeb 应用的配置对象;

  8. pageJSP 页面本身(相当于 Java 程序中的 this);

  9. exception:封装页面抛出异常的对象。


3)说一下 JSP 的 种作用域?

  1. page:表示页面范围,代表与一个页面相关的对象和属性。

  2. request:表示一次请求,代表与客户端发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件;需要在页面显示的临时数据可以置于此作用域。

  3. session:表示一个会话,代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的 session 中。

  4. application:代表与整个 Web 应用程序相关的对象和属性,它实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。


4)session 和 cookie 有什么区别?

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

  2. 安全性不同:cookie 安全性一般,在浏览器存储,可以被伪造和修改。

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

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


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

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


6)什么是 XSS 攻击,如何避免?

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

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

7)什么是 CSRF 攻击,如何避免?

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

防御手段:

· 验证请求来源地址;

· 关键操作添加验证码;

· 在请求地址添加 token 并验证。


8)forward 和 redirect 的区别?

   forward 是转发 , redirect 是重定向:

  1. 转发是由服务端实现跳转,所以只能跳转到当前web的资源;而重定向由客户实现跳转,可以跳转到任意资源;

  2. 地址栏 url :foward  不会发生改变,redirect 会发生改变;

  3. 数据共享:forward 可以共享 request 里的数据,redirect 不能共享;

  4. 效率:forward 比 redirect 效率高。


9)简述 tcp 和 udp的区别?

tcp 和 udp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输,而 udp 则常被用于让广播和细节控制交给应用的通信传输。

两者的区别大致如下:

  1. tcp 面向连接,udp 面向非连接即发送数据前不需要建立链接;

  2. tcp 提供可靠的服务(数据传输),udp 无法保证;

  3. tcp 面向字节流,udp 面向报文;

  4. tcp 数据传输慢,udp 数据传输快;


10)get 和 post 请求有哪些区别?

get 请求会被浏览器主动缓存,而 post 不会。

get 传递参数有大小限制,而 post 没有。

post 参数传输更安全,get 的参数显示在 url 上,post 不会。


11)如何实现跨域?

服务器端运行跨域 设置 CORS 等于 *;

在单个接口使用注解 @CrossOrigin 运行跨域;

使用 jsonp 跨域;


12)说一下 JSONP 实现原理?

jsonp:JSON with Padding,它是利用script标签的 src 连接可以访问不同源的特性,加载远程返回的“JS 函数”来执行的。

jsonp是使用方法回调的原理:

      在网页里,你如果引入其他网页的js,那这个页面的js是可以调用你网页的代码的;

     直接请求js 和 请求的动态页面(jsp,php,aspx)里输出的javascript代码效果一样。


13)servlet的生命周期

      Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和销毁五个阶段。

加载:解析请求,找到对应class文件,并加载

实例化:创建 Servlet 实例对象

初始化:仅执行一次init()方法,它是在服务器装入servlet时执行的,负责初始化servlet对象

处理请求:每次请求时,调用service方法,并根据请求分别调用doGet(),doPost()方法

销毁当服务器关闭或 Web 应用被移除出容器时,Servlet 随着 Web 应用的关闭而销毁。在销毁 Servlet 之前,Servlet 容器会调用 Servlet 的 destroy() 方法,以便让 Servlet 对象释放它所占用的资源。


14)说出Servlet和CGI的区别?

      CGI的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁;而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

    由于Servlet是单例的,当多个用户访问Servlet的时候,服务器会为每个用户创建一个线程。当多个用户并发访问Servlet共享资源的时候就会出现线程安全问题。

 

15)JSP的基本指令

page指令、include指令、taglib指令。

page指令:用于定义jsp页面中的各种属性,无论page指令出现在jsp页面中什么地方,它作用的都是整个jsp页面,通常位于jsp页面的顶端。

include 指令:可以将一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面中的 JSP 语句。

taglib指令:引入要使用的标签库。

  


文章转载自叶子闲聊,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论