讲一下get和post请求的区别
GET和POST都是http的请求方式,用户通过不同的http的请求方式完成对资源(url)的不同操作
GET POST PUT DELETE对应这个资源的查,改,增,删 4个操作,
GET一般用于获取/查询资源信息,POST一般用于更新资源信息
1、GET提交,请求的数据会在地址栏显示出来,而POST请求不会在地址栏显示(数据放置在HTTP包的包体中)
2、传输数据的大小,GET请求由于浏览器对地址长度的限制而导致传输的数据有限制
而POST请求不会因地址长度限制而导致传输数据有限
3、安全性,POST的安全性比GET高,数据会在地址中呈现。
说一下你对servlet的理解?或者servlet是什么?
servlet全称 Java Servlet,是用java编写的服务器端程序。
其主要功能在于交互式地浏览和修改数据,生成动态Web内容
Servlet运行于支持Java的应用服务器中
HttpServlet重写doGet和doPost方法或重写service方法完成对get和post请求的响应
简单说一下servlet的生命周期
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期由javax.servlet.Servlet接口的init,service和destory方法表达、
加载servlet的class--实例化servlet--调用servlet的init完成初始方法--
响应请求(servlet的service方法)--servlet容器关闭时(servlet的destory方法)
servlet启动时,开始加载servlet生命周期开始。servlet被服务器实例化后,容器运行其init方法,
请求到达时运行其service方法,service方法自动派遣运行与请求对应对的doXXX方法(doget、doPost)等
当服务器决定将实例销毁的时候(服务器关闭)调用其destory方法
Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。
(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet
(2)创建:通过调用servlet构造函数创建一个servlet对象
(3)初始化:调用init方法初始化
(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求
(5)卸载:调用destroy方法让servlet自己释放其占用的资源
Servlet API中forword()和redirect()的区别?
1、forword是服务器端的转向而redorect是客户端的跳转
2、使用forword浏览器的地址不会发生变化,而redirect会发生变化
3、forword是一次请求中完成,而redirect是重新发送请求
4、forword是服务器端完成,而不用客户端重新发送请求,效率较高
JSP和Servlet有哪些相同点和不同点
JSP是Servlet技术的扩展,所有的jsp文件都会被翻译为一个继承HttpServlet的类。
JSP最终也是一个Servlet,这个Servlet对外提供服务
Servlet和JSP最主要的不同点在于JSP侧重于视图,Servlet侧重于控制逻辑
Servlet如果要实现html的功能,必须使用writer输出对应的html,比较麻烦。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp文件,方便做界面
JSP有哪九大内置对象?作用分别是什么?
request 用户端请求,此请求会包含来GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话
application servlet正在执行的内容
out 用来传送回应的输出
config servlet的架构文件
page JSP网页本身
exception 针对网页错误,未捕捉的例外
四大作用域:pageContext request session application 可以通过jstl从四大作用域中取值
说一下session和cookie的区别?你在项目中都有哪些地方使用?
Session和cookie都是会话跟踪技术,cookie通过在客户端记录信息确定用户身份,
session通过服务器端记录信息确定用户身份,
但是session的实现依赖于cookie,sessionId(session的唯一标识需要存放在客户端)
cookie和session的区别
1、cookie数据存放在客户的浏览器上,session数据存放在服务器上
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑安全用session
3、session会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能,
考虑到减轻服务器性能方面,应当使用cookie
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
5、所以建议:
将登陆信息等重要信息存放为session
其他信息如果需要保留,可以放在cookie中,比如购物车
购物车最好使用cookie,但是cookie是可以在客户端禁用的,这时候我们要使用cookie+数据库的方式实现,
当cookie中不能取出数据时,就从数据库获取
MVC的各个部分都有哪些技术来实现
M(model) javabean(service + dao)
V(view) html jsp freemarker
C(control) servlet action
JSP+servlet +javabean 最经典的MVC模式
使用struts2和springmvc这样的mvc
jsp+核心控制器+action+javabean
servlet和CGI
servlet处于服务器进程中,它通过多线程方式运行其service方法,
一个实例可以服务于多个请求,并且其实例一般不会销毁,
而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
ajax有哪些优点和缺点?
优点
1、最大的一点是页面无刷新,用户的体验好
2、使用异步方式与服务器通信,具有更加迅速的响应能力
3、ajax的原则是"按需求取数据",可以最大程度的减少冗余请求,和响应对服务器造成的负担
4、基于标准化被广泛支持的技术,不需要下载插件
缺点
1、ajax不支持浏览器back按钮
2、安全问题 ajax暴露了与服务器交互的细节
3、对搜索引擎的支持比较弱
4、破坏了程序的异常机制
5、不容易调试
ajax应用和传统web应用有什么不同
在传统的JS编程中,如果想得到服务器端数据或发送客户端信息到服务器,
需要建立一个HTML form然后GET或POST数据到服务器端,
用户需要点击submit按钮来发送或者接受数据信息,然后等待服务器响应请求,页面重新加载
因为传统的web应用有可能很慢,用户交互不友好
使用ajax技术,就可以使JS通过XMLHttpRequest对象直接与服务器进行交互。
通过HTTP Request,一个web页面可以发送一个请求到web服务器并且接受web服务器返回的信息
展示给用户的还是同一个页面,页面刷新也看不到JS后台进行的发送请求和接受响应,体验非常好
ajax的实现流程是怎么样的?
1、创建XMLHttpRequest对象
XMLHttpRequest request = new XMLHttprequest();
2、创建新的Http请求
XMLHttprequest.open(method,url.flag,name,password);
3、设置响应Http请求变化的函数
XMLHttprequest.onreadystatechange=getData;
function getData(){
if(XMLHttpr equest.readyState==4){获取数据}
}
4、发送http请求
XMLHttprequest.send(data);
5、获取异步调用返回的对象
function(data){}
6、使用js、DOM实现局部刷新
myDiv.innerHTML="这是刷新后的数据"
JSP标签的作用?如何定义?
作用:
分离jsp页面的内容和逻辑
业务逻辑开发者可以创建自定义标签
封装业务逻辑
定义
写标签处理器
写tld文件
将标签处理器和tld文件放到同一包里
jsp页面和标签库配置部署在一起