zoukankan      html  css  js  c++  java
  • Jsp介绍(1)

    JSP(Java Server Pages)
    是运行在服务端的语言
    是一种动态网页开发技术
    它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
    是一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的Web网页的技术标准。
    JSP文件后缀名为(*.jsp)。
    JSP开发的WEB应用可以跨平台使用,既可以运行在Linux上也能运行在Window上。
    JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
    JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
    JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
    JSP基于Java Servlets API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。

    优势:
    与ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。
    与纯 Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
    与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
    与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
    与静态HTML相比:静态HTML不包含动态信息。

    JSP 结构

    网络服务器需要一个JSP引擎,也就是一个容器来处理JSP页面。容器负责截获对JSP页面的请求。

    JSP处理

    以下步骤表明了Web服务器是如何使用JSP来创建网页的:

    • 就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。
    • Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
    • JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
    • JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
    • Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
    • Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
    • 最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。
    • 以上提及到的步骤可以用下图来表示:

      一般情况下,JSP引擎会检查JSP文件对应的servlet是否已经存在,并且检查JSP文件的修改日期是否早于servlet。如果JSP文件的修改日期早于对应的servlet,那么容器就可以确定JSP文件没有被修改过并且servlet有效。这使得整个流程与其他脚本语言(比如PHP)相比要高效快捷一些。

    • JSP 生命周期

      JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。

      以下是JSP生命周期中所走过的几个阶段:

      • 编译阶段:

        servlet容器编译servlet源文件,生成servlet类

      • 初始化阶段:

        加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法

      • 执行阶段:

        调用与JSP对应的servlet实例的服务方法

      • 销毁阶段:

        调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

      • 很明显,JSP生命周期的四个主要阶段和servlet生命周期非常相似,下面给出图示:


        JSP编译

        当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。

        编译的过程包括三个步骤:

        • 解析JSP文件。
        • 将JSP文件转为servlet。
        • 编译servlet。

        JSP初始化

        容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了,就像下面这样:

        public void jspInit(){
          // 初始化代码
        }

        一般来讲程序只初始化一次,servlet也是如此。通常情况下您可以在jspInit()方法中初始化数据库连接、打开文件和创建查询表。


        JSP执行

        这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。

        当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。

        _jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数,就像下面这样:

        void _jspService(HttpServletRequest request,
                         HttpServletResponse response)
        {
           // 服务端处理代码
        }

        _jspService()方法在每个request中被调用一次并且负责产生与之相对应的response,并且它还负责产生所有7个HTTP方法的回应,比如GET、POST、DELETE等等。


        JSP清理

        JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。

        jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。

        jspDestroy()方法的格式如下:

        public void jspDestroy()
        {
           // 清理代码
        }

    JSP生命周期代码实例如下所示:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'MyJsp.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
       <%!
       private int initVar=0;
       private int serviceVar=0;
       private int destroyVar=0;
        %>
        <%!
        public void jspInit(){
        initVar++;
        System.out.println("jspInit():JSP被初始化了"+initVar+"次");
        }
         public void jspDestroy(){
        destroyVar++;
        System.out.println("jspDestroy():JSP被销毁了"+destroyVar+"次");
        }
         %>
         <%
         serviceVar++;
         System.out.println("jspService():JSP共响应了"+serviceVar+"次请求");
         String content1="初始化次数"+initVar;
         String content2="响应客户请求次数"+serviceVar;
         String content3="销毁次数"+destroyVar;
          %>
          <h2>test jsp</h2>
          <P><%=content1 %></P>
          <P><%=content2 %></P>
          <P><%=content3 %></P>
      </body>
    </html>
    

      JSP语法:

    JSP声明

    一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。

    JSP声明的语法格式:

    <%! declaration; [ declaration; ]+ ... %>


    JSP表达式

    一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。

    由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。

    表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

    JSP表达式的语法格式:

    <%= 表达式 %>

    JSP指令

    
    
    
  • 相关阅读:
    mysql官网下载链接——绿色版&安装版
    eclipse中去掉警告提示
    java用servlet、cookie实现一个阅读记录
    eclipse中的错误解决——Servlet cannot be resolved to a type
    eclipse——jsp字体设置
    eclipse——添加Tomcat7.0服务器
    eclipse中的错误解决——The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    eclipse——JavaEE插件
    OpenMP用法大全
    __new__ __init__区别
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6536973.html
Copyright © 2011-2022 走看看