`
sibyl_pisces
  • 浏览: 141022 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

JSP和Servlet的关系浅谈

    博客分类:
  • Java
 
阅读更多

JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术。Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTML页面中出现的内容。

由于包括大量的HTML标签、大量的静态文本及格式等,导致Servlet的开发效率极为低下。所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中,这的确让人不胜其烦。JSP的出现弥补了这种不足,JSP通过在标准的HTML页面中插入Java代码,其静态的部分无须Java程序控制,只有那些需要从数据库读取并根据程序动态生成信息时,才使用Java脚本控制。
从表面上看,JSP页面已经不再需要Java类,似乎完全脱离了Java面向对象的特征。事实上,JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。
看下面一个简单的JSP页面:
<!--  表明此为一个JSP页面 -->
    <%@ page contentType="text/html; charset=gb2312" language="java" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE>第一个JSP页面</TITLE>
    </HEAD>
    <BODY>
    <!--  下面是Java脚本-->
    <%for(int i = 0 ; i < 10; i++)
    {
    out.println(i);
    %>
    <br>
    <%}%>
    </BODY>
    </HTML>
当启动Tomcat之后,可以在Tomcat的Catalina\localhost\jsptest\org\apache\jsp目录下找到如下文件(假如Web应用名为jsptest,上面JSP页的名为test1.jsp):test1_jsp.java和test1_jsp.class。这两个文件都是Tomcat生成的,Tomcat根据JSP页面生成对应Servlet的Java文件及class文件。
下面是test1_jsp.java文件的源代码,这是一个特殊的Java类,是一个Servlet类:
//JSP页面经过Tomcat编译后默认的包
    package org.apache.jsp;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    //继承HttpJspBase类,该类其实是个Servlet的子类
    public final class test1_jsp extends org.apache.jasper.runtime.HttpJspBase
         implements org.apache.jasper.runtime.JspSourceDependent
    {
         private static java.util.Vector _jspx_dependants;
         public java.util.List getDependants() {
             return _jspx_dependants;
         }
         //用于响应用户的方法
         public void _jspService(HttpServletRequest request,
            HttpServletResponse response)
            throws java.io.IOException, ServletException
         {
             //获得页面输出流
             JspFactory _jspxFactory = null;
             PageContext pageContext = null;
             HttpSession session = null;
             ServletContext application = null;
             ServletConfig config = null;
             //获得页面输出流
             JspWriter out = null;
             Object page = this;
             JspWriter _jspx_out = null;
             PageContext _jspx_page_context = null;
             //开始生成响应
             try
             {
                 _jspxFactory = JspFactory.getDefaultFactory();
                //设置输出的页面格式
            response.setContentType("text/html; charset=gb2312");
            pageContext = _jspxFactory.getPageContext(this, request,
            response, null, true, 8192, true);
            _jspx_page_context = pageContext;
            application = pageContext.getServletContext();
            config = pageContext.getServletConfig();
            session = pageContext.getSession();
            //页面输出流
 


分享到:
评论

相关推荐

    浅谈Servlet转发到JSP页面的路径问题(必看)

    在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。 2. 绝对路径概念 相对于...

    浅谈servlet与jsp的关系

    本文主要介绍了servlet与jsp的相关知识,并总结出servlet与jsp之间的关系,具有很好的参考价值,下面跟着小编一起来看下吧

    浅谈JSP与Servlet传值及对比(总结)

    下面小编就为大家带来一篇浅谈JSP与Servlet传值及对比(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    浅谈基于Struts和Hibernate的J2EE应用

    EJB组件实现) “View” 是应用的表示层(由JSP页面产生) “Controller” 是提供应用的处理过程控制(一般是一个Servlet) 通过这种设计模型把应用逻辑,处理过程和显示 逻辑分成不同的组件实现,以...

    浅谈Web网站架构演变过程

    此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据...

    浅谈ajax在jquery中的请求和servlet中的响应

    在jsp中,首先,你需要导入jquery的架包: 获取可返回站点的根路径: &lt;&#37; String path = request.getContextPath(); %&gt; 在jquery中写ajax请求: [removed] $(function(){ $(.B).click(function(){ $....

    浅谈jsp九大内置对象及四个作用域

    request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request ...pageContext 页面上下文对象 类型 javax.servlet.jsp.PageContext 作用域 Page session 会话对象 类型 javax.serv

    客运站 订票系统 论文

    JSP+Servlet+SQL2000开发的客运站订票系统的论文。

    浅谈MVC设计模式(示例)

    典型的MVC就是javabean(M)+JSP(V) + servlet(C )的模式,是对DAO模式的进一步解耦合,姑且可以简单认为就是在DAO基础上多了一个servlet(充当控制器),其目的就是为了实现M和V的分离,便于前后并行开发。 MVC模式组成...

    JAVA自学之路

    Servlet JSP,服务器端必需。 XML AJAX,新的流行趋势不能不了解。 作一些小项目吧。比如BBS、留言系统、学籍管理、商城等等,随便着一些业务逻辑比较简单的来做一做。 Struts,MVC的典型应用 Hibernate,OR ...

Global site tag (gtag.js) - Google Analytics