Java Web之JSP与Servlet的区别

      Servlet程序的运行原理如下图所示,当客户端提交请求时,Web服务器接收到这个请求,就将该请求交给Servlet引擎来处理。当Servlet引擎找到该请求指定的Servlet时,就会调用Servlet类中的service方法,并将请求信息和响应信息传入service方法(返回相应的客户端代码,如HTML、JavaScript等)。

      Servlet虽然可以实现全部动态Web应用程序的功能,但是用Servlet显示用户接口时,必须将客户端代码使用HttpServletResponse对象发送到客户端,当客户端页面十分复杂时,会导致工作量相当大且不易维护。于是出现了JSP,JSP和ASP非常相似,它们都是在同一个页面中混合了客户端代码和服务端代码。如下图所示,第一次访问JSP页面时,JSP页面会被JSP引擎翻译成Servlet,然后交由Servlet引擎来运行,如果该页面不是第一次访问,则Web服务器会直接将请求交由Servlet引擎来运行已由JSP生成的Servlet程序。


总结来说:

①JSP页面本质上属于Servlet。

JSP工作原理: JSP页面在执行的时候会被服务器端的JSP引擎转换为Servelet(.java),然后又由JSP引擎调用Java编译器,将Servelet(.java)编译为Class文件(.class),并由Java虚拟机(JVM)解释执行。如有一个JSP页面My.jsp,当通过浏览器访问http://localhost:8080/My.jsp,将会出现执行结果。同时在%CATALINA_HOME%/work/Catalina/localhost下多出两个文件:_My_jsp.java和_My_jsp.class,它们分别就是前面说的Servelet和Class文件。因此,JVM只能识别java的类,不能识别JSP的代码,Web容器最终会将JSP的代码编译成JVM能够识别的java类。

②Servlet的应用逻辑是在Java文件中,从Java代码中动态输出HTML,并且完全从表示层中的HTML里分离开来。而JSP则是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

猜你喜欢

转载自blog.csdn.net/jisuanjiguoba/article/details/80114253