网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > J2EE > Servlet/Jsp > JSP和Servlet的关系浅谈  

JSP和Servlet的关系浅谈

2008-06-15  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

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

网管联盟bitsCN@com

    由于包括大量的HTML标签、大量的静态文本及格式等,导致Servlet的开发效率极为低下。所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中,这的确让人不胜其烦。JSP的出现弥补了这种不足,JSP通过在标准的HTML页面中插入Java代码,其静态的部分无须Java程序控制,只有那些需要从数据库读取并根据程序动态生成信息时,才使用Java脚本控制。 网管下载dl.bitscn.com

    从表面上看,JSP页面已经不再需要Java类,似乎完全脱离了Java面向对象的特征。事实上,JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。 网管下载dl.bitscn.com

    看下面一个简单的JSP页面: 网管联盟bitsCN_com

    <!--  表明此为一个JSP页面 --> 网管论坛bbs_bitsCN_com

    <%@ page contentType="text/html; charset=gb2312" language="java" %>

网管网www_bitscn_com

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 网管u家u.bitscn@com

    <HTML> 网管bitscn_com

    <HEAD>

网管联盟bitsCN@com

    <TITLE>第一个JSP页面</TITLE> 网管u家u.bitsCN.com

    </HEAD> 网管论坛bbs_bitsCN_com

    <BODY> 网管u家u.bitscn@com

    <!--  下面是Java脚本-->

网管下载dl.bitscn.com

    <%for(int i = 0 ; i < 10; i++) 网管u家u.bitsCN.com

    {

网管u家u.bitsCN.com

    out.println(i); 中国网管论坛bbs.bitsCN.com

    %>

网管网www.bitscn.com

    <br> 网管网www.bitscn.com

    <%}%>

网管下载dl.bitscn.com

    </BODY>

中国网管论坛bbs.bitsCN.com

    </HTML> 网管u家u.bitscn@com

 

网管u家u.bitscn@com

    当启动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文件。 中国网管联盟bitsCN.com

    下面是test1_jsp.java文件的源代码,这是一个特殊的Java类,是一个Servlet类: 网管下载dl.bitscn.com

    //JSP页面经过Tomcat编译后默认的包

网管论坛bbs_bitsCN_com

    package org.apache.jsp;

网管bitscn_com

    import javax.servlet.*;

网管网www_bitscn_com

    import javax.servlet.http.*;

中国网管联盟bitsCN.com

    import javax.servlet.jsp.*; 网管u家u.bitscn@com

    //继承HttpJspBase类,该类其实是个Servlet的子类

中国网管论坛bbs.bitsCN.com

    public final class test1_jsp extends org.apache.jasper.runtime.HttpJspBase 网管网www.bitscn.com

         implements org.apache.jasper.runtime.JspSourceDependent

网管u家u.bitsCN.com

    {

网管联盟bitsCN_com

         private static java.util.Vector _jspx_dependants; 网管联盟bitsCN_com

         public java.util.List getDependants() { 网管u家u.bitsCN.com

             return _jspx_dependants; 网管网www.bitscn.com

         }

网管u家u.bitsCN.com

         //用于响应用户的方法 网管网www_bitscn_com

         public void _jspService(HttpServletRequest request,

网管联盟bitsCN_com

            HttpServletResponse response)

网管u家u.bitsCN.com

            throws java.io.IOException, ServletException 网管网www.bitscn.com

         {

网管u家u.bitscn@com

             //获得页面输出流

网管联盟bitsCN@com

             JspFactory _jspxFactory = null;

中国网管联盟bitsCN.com

             PageContext pageContext = null; 网管下载dl.bitscn.com

             HttpSession session = null; 中国网管论坛bbs.bitsCN.com

             ServletContext application = null;

网管bitscn_com

             ServletConfig config = null;

网管u家u.bitscn@com

             //获得页面输出流

网管网www.bitscn.com

             JspWriter out = null;

网管联盟bitsCN_com

             Object page = this;

网管联盟bitsCN@com

             JspWriter _jspx_out = null;

中国网管论坛bbs.bitsCN.com

             PageContext _jspx_page_context = null;

网管论坛bbs_bitsCN_com

             //开始生成响应

网管下载dl.bitscn.com

             try 中国网管论坛bbs.bitsCN.com

             {

网管u家u.bitscn@com

                 _jspxFactory = JspFactory.getDefaultFactory();

中国网管联盟bitsCN.com

                //设置输出的页面格式

网管联盟bitsCN@com

            response.setContentType("text/html; charset=gb2312");

网管下载dl.bitscn.com

            pageContext = _jspxFactory.getPageContext(this, request,

网管论坛bbs_bitsCN_com

            response, null, true, 8192, true);

网管bitscn_com

            _jspx_page_context = pageContext;

网管u家u.bitscn@com

            application = pageContext.getServletContext();

网管论坛bbs_bitsCN_com

            config = pageContext.getServletConfig(); 网管联盟bitsCN@com

            session = pageContext.getSession();

网管网www_bitscn_com

            //页面输出流

中国网管联盟bitsCN.com

  

中国网管联盟bitsCN.com

中国网管论坛bbs.bitsCN.com


TAGs
 上一篇:妙用异步Servlet扩展AJAX应用程序   下一篇:没有了
JSP和Servlet的关系浅谈 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: