P2-WEB

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;

  

原文地址:https://www.cnblogs.com/yikuan-919/p/9912501.html