1.Http中get和post请求的区别?

共同点:都是Http请求方式,用户可以通过不同的请求方式完成对资源(Url)的操作。具体来讲就是get一般用于获取/查询资源信息,post用于更新资源信息。

增,删,改,查——put、delete、post、get

区别:

  (1)get请求的数据会在地址栏显示出来,而post不会。

  原因:get提交,请求的数据会附在Url之后,以?分割Url和数据,多个参数之间用&连接;post提交的数据放在Http包的包体中。

  (2)传输数据大小不同。

  原因:浏览器对地址长度是有限制的,get请求的数据因此受限。

  (3)安全性,post安全性高于get。

  原因:get请求的数据会显示在地址栏中,可以通过历史纪录找到密码等重要信息。

2.Servlet是什么?说一下对它的理解?

Servlet(Server Applet)是用Java编写的服务器端程序;主要功能是交互式的浏览和修改数据,生成动态Web内容;Servlet运行于支持Java的应用服务器中;实际在编写过程中,继承HttpServlet,重写doGet和doPost方法或者重写Service方法完成对get和post请求的响应。

3.Servlet的生命周期?

Servlet有良好的生存期定义,包括加载,实例化,初始化,处理请求和服务结束。这个生存期由Java.servlet.Servlet接口的init,service和destroy方法表达。

加载Servlet的class-------->实例化Servlet-------->调用Servlet的init完成初始化-------->响应请求(Servlet的service方法)-------->服务结束,服务器Servlet容器关闭(Servlet的destroy方法)

流程详解:Servlet启动时,开始加载Servlet生命周期。Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost等),当服务器决定将实例销毁时调用其destroy方法。

4.Sevlet API中forward()于redirect()的区别?

forward仅是服务器容器中控制权的转向,在客户端浏览器地址栏中不会显示转向后的地址;redirect则是完全的跳转,浏览器()客户端将会得到跳转的地址并重新发起请求链接。forward还是原来的请求,而redirect是重新发起请求,前者更高效,在前者满足其需求的前提下尽可能使用forward,并且这样也有助于隐藏实际的链接。有些情况下必须使用SendRedirect方法,比如需要跳转到另一个服务器上的资源。

总结:

  (1)forwaord是服务器端的转向,而redirect是客户端的跳转。

  (2)使用forward浏览器的地址不会发生改变,而使用redirect会改变。

  (3)forward是再一次请求中完成,而redirect是发起新的请求。

  (4)forward是在服务器短完成的,不需要客户端重新发起请求,效率更高。

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

相同点:Jsp是Servlet技术的扩展,Jsp的所有文件最后都会被翻译为一个继承HttpServlet的类,所以Jsp最终也是一个servlet,但是这个servlet是对外提供服务的。

不同点:

   (1)Jsp侧重于视图,而servlet主要用于控制逻辑。

   (2)Servlet如果要实现html的功能必须使用Writer输出html文件,比较麻烦,而Jsp可以把Java 和html结合成一个后缀名为.jsp的文件使页面展示比较方便,到那时嵌入逻辑比较复杂。

6.Jsp与纳西额内置对象?作用分别是什么?分别有哪些方法?

9个内置对象:

   (1)request——用户端请求,此请求会包含来自get/post请求的参数

   (2)response——网页传回用户端的回应

   (3)pageContext——网页的属性是在这里管理的。

   (4)session——与请求有关的会话期

   (5)application——servlet正在执行的内容

   (6)out——用来传送回应的输出

   (7)config——servlet的构架部件

   (8)page——Jsp网页本身

   (9)sxception——针对错误网页,未捕捉的例外

四大作用域:request、pageContext、session、application可以通过jstl用四大作用域中取值

Jsp传递值:request、session、application、cookie

7.session和cookie的区别?你在项目中哪些地方使用了?

相同点:都是会话跟踪技术,cookie通过在客户端记录信息确定用户身份,session通过在服务器记录信息确定用户身份。但是sessiong的实现依赖于cookie、sessionID(sessiong的唯一标识,需要存放在客户端)

区别:

  (1)cookie数据存放在客户浏览器上,而session存放在服务器上

  (2)cookie不是很安全,别人可以通过分析存放在本地的cookie进行cookie欺骗,考虑到安全性问题应该使用session

  (3)session会一定时间保存在服务器上,当访问增多时会比较占用服务器性能,看绿岛减轻服务器性能压力应该使用cookie

  (4)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie

个人建议:将登陆信息等重要信息存放在session中,无关紧要的信息可以存放在cookie中(比如购物车)

扩展:购物车最好使用cookie,到那时cookie是可以在浏览器禁用的,这时候需要使用cookie+数据库的方式实现,当不能呢从cookie中取数据的时候就从数据库取。

8.MVC各个部分都由哪些技术实现?

M(Model模型)——javabean;V(View视图)——html、Jsp;C(Control控制器)——Servlet、Action

最经典(简单)的MVC模式:Jsp+Servlet+javabean

实际上就是Model2的实现方式,把逻辑和视图隔离。

Model1:Jsp+service+dao

Model2:Jsp+servlet+service+dao

使用structs2和spring后:Jsp+核心控制器+action+javabean

Java面试题复习笔记(Web方向)的更多相关文章

  1. Java面试题复习笔记(框架)

    1.什么是框架? 为解决一个开放性问题而设计的具有一定约束性的支撑结构,再次结构上可以根据具体问题扩展,安插更多的组成部分,从而更迅速和方便地构建完整解决问题的方案. 2.MVC模式? 用一种业务逻辑 ...

  2. Java面试题复习笔记(数据库)

    1.数据库分类? 关系型数据库和非关系型. 常用关系型:Myspl.Oracle.SQLServer 非关系型:Redis.Hadoop.Memcache.Mogobd 2.关系数据库三范式? 范式就 ...

  3. Java面试题复习笔记(前端)

    1.Html,CSS,Jsp在网页开发中的定位? Html——定义网页结构(超文本标记语言) CSS——层叠样式表,用来美化界面 Jsp——主要用来验证表单,做动态交互(Ajax) 2.介绍Ajax? ...

  4. Java二次复习笔记(1)

    Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...

  5. java面试题复习(六)

    51.实现多线程的方法 一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如 ...

  6. Java面试题复习之Java基础

    1.面向对象的特征主要有哪些?   封装.继承.多态.抽象 2.final.finally.finalize的区别? final主要用于修饰类.方法.属性(变量)等. 通常被final修饰的类不能够被 ...

  7. java面试题复习(八)

    71.如何通过反射创建对象? 方法1:通过类对象调用newInstance()方法,例如:String.class.newInstance()  方法2:通过类对象的getConstructor()或 ...

  8. java面试题复习(七)

    61.jdbc的操作步骤 加载驱动:Class.forName("oracle.jdbc.driver.OracleDriver"); 创建连接:Connection con =D ...

  9. java面试题复习(五)

    41.阐述final.finally.finalize的区别 final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract ...

随机推荐

  1. centos7 docker安装

    Docker分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施.容器.插件等 社区版按照stable和edge两种 ...

  2. Shell命令-文件及内容处理之cut、rev

    文件及内容处理 - cut.rev 1. cut:切割文件内容 cut命令的功能说明 cut 命令用于显示每行从开头算起num1 到 num2 的文字. cut命令的语法格式 cut [OPTION] ...

  3. DAY12、装饰器

    一.补充:nonlocal关键字 1.作用:将L与E(E中的名字需要提前定义)的名字统一 2.应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值 3.案例: def outer():    ...

  4. [SimplePlayer] 8. 音视频同步

    音频与视频在播放当中可能会由于种种原因(如:音视频并非在同一时间开始播放,或视频由于解码任务繁重导致输出图像延迟等)导致音频与视频的播放时间出现偏差,这种就是音视频的同步问题,本文会对音视频同步进行讨 ...

  5. MySQL报错: SQLSTATE[HY000]: General error: 1030 Got error 28 from storage engine

    执行命令:df -h [root@iZ25z6qcmrhZ ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/xvda1 40G 38G ...

  6. <Android基础> (五) 广播机制

    1)接收系统广播:a.动态注册监听网络变化 b.静态注册实现开机启动 2)发送自定义广播:a.发送标准广播 b.发送有序广播 3)使用本地广播 第五章 5.1 广播机制 Android中的每个程序都可 ...

  7. 05VueCli

    详情请见: https://pizzali.github.io/2018/10/30/VueCli/ Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,Vue CLI 致力于将 Vue ...

  8. Linux交换分区使用过多的处理办法

    处理办法 echo "vm.swappiness=0" >>/etc/sysctl.conf sysctl -p swapoff -a && swapo ...

  9. 删除链表倒数第n个节点

    题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...

  10. python之OpenCv(五)---抓取摄像头视频图像

    OpenCV 可以通过 头videoCapture()方法打开摄像 摄像头变量 = cv2.VideoCapture(n)   n为整数,内置摄像头为0,若有其他摄像头则依次为1,2,3,4,... ...