jsp和servlet的区别和联系

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

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

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

        在tomcat的web.xml配置中:

<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
 <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>
 这里规定了servlet-name是jsp,根据这个规范,也可以认为jsp实际上就是特殊的servlet。
tomcat启动会在work目录下编译jsp,然后生成相应的Java类:

而编辑这个类:

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


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


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值