zoukankan      html  css  js  c++  java
  • jsp和servlet的区别和联系

    jsp和servlet的区别和联系

      jsp和servlet都属于j2ee13规范,servlet是运行在服务端的Java程序,动态生成web内容,但是如果仅仅使用servlet来输出html则是一句一句地输出,为开发和维护带来了极大的不便。而jsp可以这么理解,可以在html中添加Java代码,所以页面渲染结果可以直接使用Dreamweaver等编辑器直接更改,更简单快捷,而不用维护Java类中的代码。实现了解耦合。

           而jsp的本质还是servlet,它只不过是利用了另外一套规则写的servlet,它运行也是需要先编译成Java代码,然后进行输出的,这些操作都是jsp容器完成的,比如一个jsp在tomcat中被编译,则会生成相应的Java类。

    JSP也是servlet,只不过在jsp中是批量渲染代码

           首先看看jsp是如何调用的:

            在tomcat的web.xml配置中:

    [html] view plain copy
     
    1. <servlet>  
    2.         <servlet-name>jsp</servlet-name>  
    3.         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
    4.         <init-param>  
    5.             <param-name>fork</param-name>  
    6.             <param-value>false</param-value>  
    7.         </init-param>  
    8.         <init-param>  
    9.             <param-name>xpoweredBy</param-name>  
    10.             <param-value>false</param-value>  
    11.         </init-param>  
    12.         <load-on-startup>3</load-on-startup>  
    13.     </servlet>  
    [html] view plain copy
     
    1. <servlet-mapping>  
    2.        <servlet-name>jsp</servlet-name>  
    3.        <url-pattern>*.jsp</url-pattern>  
    4.    </servlet-mapping>  

     这里规定了servlet-name是jsp,根据这个规范,也可以认为jsp实际上就是特殊的servlet
    tomcat启动会在work目录下编译jsp,然后生成相应的Java类:

    而编辑这个类:

    可以看出jsp继承了HttpJspBase类,而这个类又继承了HttpServlet类,并且覆盖了service()方法。在HttpServletRequest和HttpServletResponse两个很重要的类创建之后,不再调用原来的service()方法,进行doGet()或者doPost()分发,因为_jspService()对其进行了覆盖,所以直接在_jspService()方法中生成页面渲染的代码

    这和原来直接在servlet中写html代码的本质是一样的,返回到客户端浏览器进行页面渲染,所以jsp本质就是servlet,只是表现形式不同。

    参考:

    jsp和servlet的区别和联系 - CSDN博客
    http://blog.csdn.net/u011458469/article/details/49469427

  • 相关阅读:
    【整理学习Hadoop】Hadoop学习基础之一:服务器集群技术
    淘宝开源平台(taobao-code)使用
    【转载】Java定时器的学习
    DHTMLTree、Dtree和Ztree的学习使用
    iBatis 简单介绍及基础入门
    【转载】Spring介绍之二
    透明度标签、html透明度
    下拉列表禁止修改
    list删除、集合遍历删除
    表格样式、表格css、
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7863108.html
Copyright © 2011-2022 走看看