首页 > 编程语言 > 详细

面试题整理----JavaWeb

时间:2019-09-19 22:11:08      阅读:100      评论:0      收藏:0      [点我收藏+]

1.jsp 和 servlet 有什么区别?

JSP本质上是Servlet的一种简易形式,JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet更侧重于控制逻辑,在MVC架构模式中,JSP适合充当视图(view)而Servlet适合充当控制器(controller)。

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

  JSP有9个内置对象:

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

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

  • page代表与一个页面相关的对象和属性。
  • request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。
  • session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。
  • application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

4.session 和 cookie 有什么区别?

cookie数据存放在浏览器即客户端,session存在在服务器上

cookie是不安全的,session是安全的

同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到;如果设置了访问路径,在同一个网站中不同路径下的cookie互相是访问不到的.cookie只能是子路径访问父路径设置的cookie

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

Session内容保存在服务器端的,通常是保存在内存中,当然也可以保存在文件、数据库等等。客户端跟服务器端通过SessionId来关联, SessionId通常以Cookie的形式存储在客户端。每次HTTP请求,SessionId都会随着Cookie被传递到服务器端,这样就可以通过SessionId取到对应的信息,来判断这个请求来自于哪个客户端/用户。

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

不一定,通常情况下,SessionId均由Cookie负责保存,但是客户端跟服务器端通过HTTP交互,除了Cookie可以携带信息之外,URL也可以。不过对用户不友好,所以基本上没有互联网项目会采用这种方案。

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

  一、拦截机制不同  

  Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属  性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对  应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。 

  SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传  递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的  请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。

  Struts2有自己的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式,这样导致Struts2的配置文件量还是比SpringMVC大。

  二、底层框架不同

  Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。Filter在容器启动之后即初始化;服务停止以后坠毁,晚于   Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。

  三、性能方面

  Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。所以,SpringMVC开发效率和性能高于Struts2。

8.如何避免 sql 注入?

  SQL Injection 就是利用
  某些数据库的外部接口将用户数据插入到实际的数据库操作语言(SQL)当中,从而达到入
  侵数据库乃至操作系统的目的。它的产生主要是由于程序对用户输入的数据没有进行严格的
  过滤,导致非法数据库查询语句的执行 。

  对 JavaJSP 开发的应用,可以使用 PrepareStatement+Bind-variable 来防止 SQL 注入(待扩展

------------待补充-----------欢迎评论补充-------共同探讨----

面试题整理----JavaWeb

原文:https://www.cnblogs.com/xianghebuyi/p/11552736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!