重识JSP

JSP:Java Servlet Pages,在html页面中添加Java代码,在服务端运行。

       在自己之前的概念中JSP和是html也相似专门用来做页面显示的,通过进一步的学习了解到jsp其实就是servlet,它不仅仅可以用来显示还可以写入java的代码,当对它做出修改并保存了之后就会在部署的tomcat服务器中编译成为java类。(以下简称为jsp类)。

       我们知道servlet类会继承HttpServlet并且重写其中的doget、dopost方法,tomcat在实例化了servlet类之后是通过调用其中的service方法来决定调用servlet类中的dopost还是doget方法的。Jsp的实质也是这样的,只是要稍微复杂一些,先来看看jsp类和HttpServlet类有什么样的关系。

       如上图中在HttpServlet和jsp类之间是通过HttpJspBase关联起来的,HttpJspBase继承了HttpServlet类,同时重写了service方法,在HttpJspBase的service方法中调用的是自己类中_jspService这个虚方法,jsp类继承HttpJspBase并且重写_jspService方法。可以在tomcat服务器的lib文件夹定位相应的jar包,然后找到对应的class,通过反编译工具看一下其中的代码。


我们看一下HttpJspBase和jsp类中的代码。

//HttpJspBase中的关键代码:
public abstractclass HttpJspBase extends HttpServlet
  implements HttpJspPage
{
         public final voidservice(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
  {
    _jspService(request, response);
  }
         public abstract void_jspService(HttpServletRequest paramHttpServletRequest, HttpServletResponseparamHttpServletResponse)
    throws ServletException, IOException;
}


在编译好的jsp类中      

publicfinal class user_005fmaint_jsp extends org.apache.jasper.runtime.HttpJspBase
implementsorg.apache.jasper.runtime.JspSourceDependent {
         public void _jspService(finaljavax.servlet.http.HttpServletRequest request, finaljavax.servlet.http.HttpServletResponse response)
        throws java.io.IOException,javax.servlet.ServletException {
         //这其中的我们在jsp中写的java代码和页面显示的代码
}


最后通过时序图看一下整体的流程:

小结

         通过对jsp的进一步学习感觉它和当时在学习asp.net的aspx很像,即可以有后天的代码处理也可以有前台的显示,这样做在一定的范围内是比较方便的可以提高开发的效率,但是系统变大了他们的耦合性带来的问题就出来了,所以一般就是用jsp做显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值