Java面试合集(Web篇)

Java面试合集(Web篇)

1.讲一下http get和post请求的区别?

  • 共同点:都是http请求,用来操作url的
    get和post都是http的请求方式,用户可以通过不同的http请求方式来完成对资源(url)的操作,get,post,put,delete就对应着对这个资源的查,改,增,删 4个操作。具体点来讲get一般用于获取/查询资源信息,而post一般用于更新资源信息

  • 不同点:

    • 1)Get请求提交的数据会在地址栏显示出来,而post请求不会在地址栏显示出来
      get请求的数据会附在url之后(就是把数据放置在HTTP协议头中),以?分割url和传输数据,多个参数用&链接
      post请求是把数据放置在Http包的包体中

    • 2)传输数据的大小
      由于浏览器对地址栏长度的限制而导致get请求传输属于有限,而post不会因为地址长度限制而导致传输数据限制。

    • 3)安全性:post比get安全
      由于get请求会在地址栏展示传输的信息,所以会不安全

2.说一下你对Servlet的理解?或者Servlet是什么?

Servlet(Server Applet),全程Java Servlet,是用Java编写的服务器端程序,而这些Servlet都要实现Servlet这个接口,其主要的功能就是用于交互式的浏览和修改数据,生成动态Web内容, Servlet运行于支持Java的应用服务器中。

实现HttpServlet接口并重写doGet和doPost方法或者你也可以重写service方法完成对get和post请求的响应

3.Servlet的生命周期

Servlet有良好的生存期的定义,包括:加载、实例化、初始化、处理请求以及服务结束。
它的生命周期是由java.servlet.Servlet接口的init,service和destory方法表达。

Servlet启动时,开始记载servlet生命周期开始,Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,服务器关闭时销毁,调用destory方法。
加载Servlet的class—>实例化Servlet—>调用Servlet的init完成初始化—>响应请求(Serlet的service方法)—>Servlet容器关闭时销毁(Servlet的destory方法)

4.Servlet API中forward()与redirect()的区别?

  • 1)forward是服务器端的转向,而redirect是客户端的跳转
  • 2)使用forward浏览器地址栏不会变,而redirect会变
  • 3)forward是一次请求中完成,而redirect是重新发起请求
  • 4)forward实在服务器中完成,而不用客户端重新发起请求,效率比较

5.JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

  • JSP和Servlet的联系:
    JSP是Servlet的一种扩展,所有的JSP继承HttpJspBase(Tomcat自己实现的),而HttpJspBase又继承了HttpServlet,所有的JSP文件都会被翻译为一个继承HttpServlet的类,那么说明JSP本质上就是一个特殊的Servlet

  • Servlet和JSP的不同点:
    Servlet的应用逻辑都在Java类中,并完全从表示层中的HTML里分离来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件 。JSP侧重于视图,Servlet主要控制逻辑。
    Servlet要是实现Html的标签,必须要使用Writer输出对应的Html,而JSP要想加入Java代码直接使用<% %>就可以了

6.JSP的内置对象?作用分别是什么?

9大内置对象:

  • out对象:用于向客户端、浏览器输出数据。
  • request对象:封装了来自客户端、浏览器的各种信息。
  • response对象:封装了服务器的响应信息。
  • exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
  • config对象:封装了应用程序的配置信息。
  • page对象:指向了当前jsp程序本身。
  • session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
  • application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
  • pageContext对象:提供了对jsp页面所有对象以及命名空间的访问。

四大作用域:

  • page(pageContext):只在一个页面中保存属性。 跳转之后无效。
  • request:只在一次请求中有效,服务器跳转之后有效。 客户端跳无效
  • session:再一次会话中有效。服务器跳转、客户端跳转都有效。 网页关闭重新打开无效
  • application:在整个服务器上保存,所有用户都可使用。 重启服务器后无效

JSP传值:
request,session,application,cookie

6.Session和Cookie的区别,你在项目中都有哪些地方使用了?

联系/相同点:

  • Session和Cookie都是会话跟踪技术。
  • Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
  • 但是Session的实现依赖于Cookie,sessionId(session的唯一标识需要存放在客户端)

Session和Cookie的区别:

  • 1)Cookie数存放在客户端,Session数据存放在服务端
  • 2)Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全应当使用Session
  • 3)Session会在一定时间内保存在服务器上,当访问量增多,会占用服务器的性能,考虑到服务器性能,应当使用Cookie
  • 4)单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie

总结:
将登陆信息等重要的信息放在Session中,其他的信息可以放在Cookie中
(比如购物车的实现最好使用Cookie,但是Cookie是可以在客户端禁用的,这时候我们可以使用Cookie+数据库的方式实现,当从Cookie中不能取出数据时,就从数据库中获取)

7.MVC的各个部分都有哪些技术来实现

Model 模型:JavaBean
View 视图:html,jsp,freemaker
Controller 控制器:servlet

  • model1: jsp+service+dao
    优点:架构简单,比较适合小型项目的开发
    缺点:JSP指责不单一,不利于维护
    Java面试合集(Web篇)_第1张图片
  • model2: jsp+servlet+service+dao,最经典的mvc模式,就是把视图和逻辑分来
    1.用户发送请求
    2.Serlet接受请求数据,并调用对应的业务逻辑方法
    3.业务处理完毕,返回更新后的数据给Servlet
    4.Serblet转向JSP,由JSP来渲染页面
    5.JSP响应给前端更新后的页面
    Java面试合集(Web篇)_第2张图片
    • 职责分析:
      • Controller:控制器
        1.取得表单数据
        2.调用业务逻辑
        3.转向指定的页面
      • Model:模型
        1.业务逻辑
        2.保存数据的状态
      • View:视图
        1.显示页面
  • springmvc: jsp+核心控制器+action+javabean
    Java面试合集(Web篇)_第3张图片
    Java面试合集(Web篇)_第4张图片

你可能感兴趣的:(面试合集)