美文网首页
前端部分

前端部分

作者: wuhuaguo丶 | 来源:发表于2019-01-23 00:04 被阅读0次

JSP与Servlet的区别与本质?

Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支撑,向浏览器提供显示内容。是Java提供的用于开发Web服务器应用程序的一个组件,
JSP的本质就是Servlet的一种简易形式,JSP其实是从Servlet继承而来,只不过又添加/修改了一些方法,作了新的封装。JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。
JSP与Servlet的主要的不同点在于:Servlet的应用逻辑是在Java中,并且完全从表示层中的HTML分离开来。而JSP的情况是JAVA与HTML组合为一个名为jsp的文件。
JSP偏向于视图,Servlet更偏向与逻辑,在MVC架构中, JSP适合充当VIEW Servlet适合充当Controller。

转发(forward)和重定向( redirect)到区别

转发是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的相应内容读取过来,然后再把这些内容发送给浏览器,浏览器根本不知道服务器发送的内容是从哪里来的,所以地址栏的地址不会变。转发必须是在同一台服务器下完成。
重定向是服务器端根据逻辑,发送一个状态码,告诉浏览器去访问哪个地址,因此从浏览器的地址栏中可以看到重定向之后的地址。
转发更加高效,在都满足的条件下尽量使用转发。(通过RequestDispatcher对象的forward方法,RequestDispatcher对象可以通过ServletRequest对象的getRequestDispatcher方法获得)。而且这样可以隐藏真实连接,但在需要跳转其他服务器的时候 ,就必须使用重定向。(通过HttpServletResponse对象调用其sendRedirect方法)。
转发是服务器行为,重定向是客户端行为

转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部的一个方法在容器内部完成请求处理和转发动作——》将目标
资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。
在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求——》web服务器接受后发送302状态码响应及对应新的location给客户浏览器——》客户浏览器发现是302响应,
则自动再发送一个新的http请求,请求url是新的location地址——》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,
既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。
重定向行为是浏览器做了至少两次的访问请求的。

Servlet生命周期

  1. 容器启动后,会对web.xml进行解析,主要验证映射配置的正确与否,如果出现任何异常,服务器会抛异常。
  2. web.xml被成功加载之后,当客户端首次对指定的Servlet发起访问时,容器会自动执行Servlet的init方法(只会在第一次访问时执行)
  3. 容器会执行service()方法,再根据客户端发起的post请求或者get请求决定调用dopost或者doget完成相应的操作。
  4. 当容器停止服务时,Servlet会执行destroy方法销毁

相关文章

网友评论

      本文标题:前端部分

      本文链接:https://www.haomeiwen.com/subject/soedjqtx.html