【java面试】Web篇
1.AJAX创建步骤
step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象;
step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法、URL以及验证信息;
step3. 设置响应HTTP状态变化的函数;
step4. 发送HTTP请求;
step5. 获取异步调用返回的数据;
step6. 使用javascript和DOM实现局部刷新;
2.讲一下http get和post请求的区别
get和post请求都是http的请求方式,用户通过不同的http请求方式完成对资源(url)的不同操作,具体点来讲get一般用于获取/查询资源信息,而post一般用于更新资源信息。
1)get请求提交的数据会在地址栏显示出来,而post请求不会在地址栏显示出来。
get提交请求的数据会附在URL之后(就是把数据放置在http协议头中)以?分割url和传输数据,多个参数用&连接;post提交:把提交的数据放置的是在http包的包体中,因此,get提交的数据会在地址栏中显示出来,而post提交,地址栏不会改变。
2)传输数据的大小
http get请求由于浏览器对地址长度的限制而导致传输的数据有限制,而post请求不会因为地址长度限制而导致传输数据限制。
3)安全性,post的安全性要比get的安全性高,由于数据是会在地址中呈现,所以安全性可以历史记录找到密码相关等信息。
|
操作方式 |
数据位置 |
明文密文 |
数据安全 |
长度限制 |
应用场景 |
|
GET |
HTTP包头 |
明文 |
不安全 |
长度较小 |
查询数据 |
|
POST |
HTTP正文 |
可明可密 |
安全 |
支持较大数据传输 |
修改数据 |
3. 讲一下你对servlet的理解?或者servlet是什么?
servlet(servlet applet),全称Javaservlet,是用Java编写的服务端程序,而这些Servlet都要实现Servlet这个接口,其主要功能在于交互式地浏览和修改数据,生成动态web内容,servlet运行于支持java的应用服务器中。
httpservlet重写doGet和doPost方法或者你也可以重写service方法完成对get和post请求的响应。
4. 简单说一下servlet的生命周期?
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束,这个生存期由java servlet Servlet接口的init,service,destory方法表达。
Servlet启动时,开始加载Servlet生命周期开始,servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对其的doxxx方法(doGet,doPost)等,当服务器决定将实例化销毁的时候(服务器关闭)调用其destory方法
加载Servlet的class-->实例化Servlet的init完成初始化-->响应请求(Servlet的service方法)-->Servlet容器关闭时(Servlet的destory方法)
5. Servlet API中forward()与redirect()的区别?
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的链接,浏览器(客户端)将会得到跳转的链接,并重新发送请求链接。forward还是原来的请求而rediect是重新发起请求。这样,从浏览器的地址栏中可以看出跳转后的链接地址,所以前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且这样有助于隐藏实际的链接,在有些情况下,比如,需要跳转到一个其他服务器上的资源则必须使用sendRedirect()方法。
1)forward是服务器请求的转向而rediect是客户端的跳转。
2)使用forward浏览器的地址不会发生改变,而redrect会发生改变。
3)forward是一次请求中完成,而redrect是重新发起请求。
3)forward是在服务器端完成,而不用客户端重新发起请求,效率高。
6. JSP和Servlet有哪些相同点和不同点,它们之间的联系是什么?
JSP是Servlet的扩展。所有的jsp文件都会被翻译为一个继承httpServlet的类,也就是说jsp最终也是一个Servlet,这个servlet对外提供服务。
Servlet和JSP最主要的不同点在于,Servlet如果要实现html的功能,必须使用Writer输出对应的html比较麻烦,Servlet的应用逻辑是在java文件,并完全从表示层中的html分离出来,而jsp的情况是Java和HTML可以组合成一个扩展名为.jsp文件比较方便而嵌入逻辑比较复杂,jsp侧重视图,Servlet主要用于控制逻辑。
7. jsp有哪些内置对象?作用分别是什么?
9个内置的对象:
request 用户请求,此请求会包含来自get/post请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话棋
application servlet正在执行的内容
out 用来传送回应的输出
config servlet 的构架部件
page jsp网页本身
exception 针对错误网页,未捕抓的例外
四大作用域:pageContext,request,session,application可以通过jstl从四大作用域中取值
jsp传递值request,session,application,cookie也能传值
8. 说一下session和cookie的区别?你在项目中都有哪些地方使用了
Session和cookie都是会话跟踪技术,cookie通过客户端记录信息确定用户身份,session通过在服务端确定用户身份,但是session的实现依赖于cookie,sessionId(session的唯一标识需要存放在客户端)
cokike和session的区别
1)cookie数据存放在客户的浏览器上,session数据存放在服务器上。
2)cookie不是很安全,别人可以分析存放本地的cookie并进行cookie欺骗,考虑到安全性应当使用session
3)session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie
4)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20cookie
5)所以个人建议:
将登录等重要信息存放为session,其他信息如果需要保留,可以存放cookie中,比如购物车。
购物车最好使用cookie,但是cookie是可以在用户端禁用的,这时候我们要使用cookie+数据库的方式实现,当从cookie中不能取出数据时,就从数据库获取
9. mvc的各部分都有哪些技术来实现
M(Model)模型 javaBean,hibernate,mybatis
V(View)代码视图 jsp,html,freemaker,velocity
C(Controller)控制器 Servlet,Action,struts
Jsp+Servlet+javaBean 最经典mvc模式。实际上就是model2的实现方式,就是把视图和逻辑隔离
【java面试】Web篇的更多相关文章
- java面试③Web部分
2.2.1 讲一下http get和post请求的区别 get和post请求都是http的请求方式,用户通过不同的http请求方式完成对资源(url)的不同操作,具体点来讲get一般用于获取/查询资源 ...
- java面试基础篇(一)
最近想深入的理解一下java 的工作机制,也是便于后期的面试. 1.A:HashMap和Hashtable有什么区别? Q:HashMap和Hashtable都实现了Map接口,因此很多特性非常相似. ...
- java面试基础篇(二)
上一篇,我们说了一下线程和Map,或许那些太抽象,不太好理解,也不太方便记忆,我们这次说一些简单的. 1.Q:java的基本数据类型有哪些? A:四种整数类型(byte.short.int.long) ...
- Java面试框架篇(8)
71,谈谈你对Struts的理解. 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServle ...
- Java面试人事篇(二)
1.请你自我介绍一下你自己? 回答提示:一般人回答这个问题过于平常,只说姓名.年龄.爱好.工作经验,这些在简历上都有.其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能.最深入研究的知识领域 ...
- java面试基础篇(三)
1.Q:ArrayList 和 LinkedList 有什么区别? A:ArrayList查询快!LinkedList增删快.ArrayList是基于索引的数据接口,它的底层是数组.空间占用相对小一些 ...
- java 面试架构篇
1.非功能需求会考虑哪些? 可用性.扩展性.性能: 2.有没有遇到过建了索引反而变慢的情况? 3.从哪些角度去设计系统? 4.代码中使用过的设计模式?
- java面试基础篇-List
一.ArrayList: 底层为数组实现,线程不安全,查询,修改快,增加删除慢, 数据结构:数组以0为下标依次连续进行存储 数组查询元素:根据下标查询就行 数组增加元素:如果需要给index为10的位 ...
- Java 面试知识点解析(七)——Web篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
随机推荐
- ZR979B. 【十联测 Day 9】唯一睿酱
ZR979B. [十联测 Day 9]唯一睿酱 题目大意: 给定一个数组\(r_i\),表明对于第\(i\)个数来说,他是\([max(1,i - r_i),min(n,i+r_i)]\)中最大的,求 ...
- linux vmalloc 和 其友
我们展示给你的下一个内存分配函数是 vmlloc, 它在虚拟内存空间分配一块连续的内存 区. 尽管这些页在物理内存中不连续 (使用一个单独的对 alloc_page 的调用来获得每个 页), 内核看它 ...
- C++ 驱动开发 error LNK2019
最近在写一个机器人的时候,发现驱动无法编译通过.本文告诉大家如何解决这个问题. 在 VisualStudio 2017 15.8 的版本提供新的功能C++ Just My Code Stepping ...
- CF526F Pudding Monsters
CF526F Pudding Monsters 题目大意:给出一个\(n* n\)的棋盘,其中有\(n\)个格子包含棋子. 每行每列恰有一个棋子. 求\(k*k\)的恰好包含\(k\)枚棋子的子矩形个 ...
- ImportError: No module named 'cx_Oracle'问题处理过程记录,安装python cx_Oracle库
错误如下: E:\pargram>python Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [M ...
- UE4 C++ 代码编译方式
Unreal 有一个非常酷的特性 —> 不必关闭编辑器就可以编译 C++ 更改! 有两种方法可以达到这个目的: 1.直接点击编辑器主工具栏中的 编译(Compile) 按钮. 2.在编辑器继续运 ...
- 编写自己的JDBC框架(转)
一.元数据介绍 元数据指的是"数据库"."表"."列"的定义信息. 1.1.DataBaseMetaData元数据 Connection.g ...
- python内置模块(python标准库)
1.time模块 掌握下面三种方式的转换 文件名不能跟系统内置模块重名! #三种方式的转化关系 #时间戳(timestamp): 为了计时 为了减法计算 import time print(t ...
- Spring JDBC操作数据库示例
1.所需jar包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
- 【转】Vim显示中文乱码
Windows下,在Vim中如果想让中文正常显示,可以在 Vim安装目录下找到_vimrc 文件,用记事本打开就行,然后在其中加入如下语句: set fileencodings=gb2312,gb ...