1. 讲一下http GET 和 POST 请求的区别?
共同点:
GET和POST都是http的请求方式,用户可以通过不同的http请求方式来完成对资源(URL)的不同操作;
GET、POST、PUT、DELETE就对应着这个资源的查、改、增、删4个操作;
具体来讲,GET一般用户获取/查询资源信息;POST一般用于更新资源信息;
不同点:
GET请求提交的数据会在地址栏显示出来,而POST不会再地址栏显示出来;(get提交,请求的数据会附在URL之后,就是把数据放在http协议中,以?分割URL和传输数据,多个参数用&连接;post提交,是把提交的数据放在http包的包体中);
传输数据的大小;(get请求由于浏览器对地址长度的限制而导致传输的数据有限制;而post不会);
安全性,POST的安全性比GET的安全性要高;(get请求,由于数据会在地址栏中显示,可以通过历史记录找到有关密码信息;)
2. 说一下对servlet的理解?什么是servlet?
Server Applet的缩写,全称叫Java Servlet;是Java编写的服务端程序,而这些程序都要实现Servlet这个接口;
主要功能:在于交互式的浏览和修改数据;生成动态web内容;
实际编写过程中:我们继承HttpServlet,重写doGet 和doPost方法,或者重写service方法来完成对get 和 post请求的响应;
3. 简单说明Servlet的生命周期?
Servlet有良好的生存期定义,包括加载和实例化、初始化、处理请求以及服务结束;这个生命周期由:javax.servlet(包名).Servlet接口的init、service、destory方法表达;
servlet容器启动时,开始加载servlet,生命周期开始;
加载完成后,servlet会被服务器实例化,容器运行其init方法初始化;
完成初始化后,当请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX(doGet、doPost)方法;
当服务器决定将其实例销毁的时候(服务器关闭的时候),调用其destory方法;
Summary:
加载servlet的class--->实例化servlet--->调用servlet的init方法,完成初始化--->service方法派遣对应方法,响应请求--->servlet容器关闭时,调用destory方法;
4. Servlet API中 forward() 与 redirect() 的区别?
forward是容器中控制权的转向,在客户端的浏览器的地址不会显示出转向后的地址;
redirect是完全的跳转,浏览器将会得到跳转的地址(新的),并重新发送请求的链接,这样从浏览器的地址就可以看到跳转后的地址;
forward更加高效,在可以满足需求的情况下,尽量选择forward,这样也可以有助于隐藏实际的链接;
但是在有些情况下,需要跳转到一个其他服务器上的资源,则必须使用sendRedirect方法;
5. JSP(Java Server Pages)和Servlet有哪些相同点和不同点?他们之间的联系是什么?
相同点:
JSP是Servlet的扩展,所以的JSP文件都会被翻译为一个继承HttpServlet的类;
也就是说,JSP最终也是一个Servlet,这个Servlet对外提供服务;
不同点:
Servlet的应用逻辑在于Java文件中,并且完全从表现层中的HTML中分离开,Servlet如果要实现html功能,必须使用writer输出对应的html;
而JSP是Java和HTML组合成一个扩展名为.jsp的文件,做界面比较方便而嵌入逻辑比较复杂,JSP侧重于视图,Servlet主要用于控制逻辑;
6. JSP有哪些内置对象?作用是什么?分别有什么方法?
request 用户端请求,此请求会包含来自Get/Post请求的参数;
response 网页传回用户端的响应;
pageContext 网页的属性是在这里管理的;
session 与请求有关的会话期;
application 表示整个应用,servlet正在执行的内容;
out 用来传送回应的输出;
config servlet的架构部件;
page JSP网页本身;
exception 针对网页错误,未捕捉的例外;
四大作用域:pageContext、request、session、application;可以通过JSTL从四大作用域中取值;
JSP传值:可以通过request、session、application、cookie来传;
7. session和cookie是什么?有什么区别?你在什么地方使用到了?
session和cookie都是会话跟踪;
cookie是通过在客户端记录信息,确定用户身份;
session是通过在服务端记录信息确定用户身份,但是session的实现依赖于cookie(有个sessionId是session的唯一标识,需要存放在客户端);
区别:
7.1cookie数据存放在客户的浏览器上,session数据放在服务器上;
7.2cookie不是很安全,别人可以通过分析本地的cookie进行cookie欺骗,考虑到安全应当使用session;
7.3session会在一定时间内保存到服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器的性能方面,应当使用cookie;
7.4单个的cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;
使用场景:
7.5将登陆信息等重要信息存放在session,其他信息如果需要保留,可以放在cookie中(购物车的实现最好使用cookie,但是cookie是可以在客户端禁用的,这时候我们要使用cookie+数据库的方式去实现,当从cookie中不能取出数据时,就从数据库获取;);
8. MVC各部分都有哪些技术来实现?
Model 模型 javabean
View 代码视图 jsp、html、Velocity、freemaker
Controller 控制器 servlet、action
最简单的MVC模式就是:Jsp + Servlet + Javabean;
整个mvc模式实际上就是model2的实现方式,就是把视图和逻辑隔离开来;
Model1:jsp + service + dao;
Model2:jsp + servlet + service + dao;
使用struts2和springMVC这样的框架后,就变成:jsp + coreController + action + javabean;