zoukankan      html  css  js  c++  java
  • jsp(简介、脚本和注释、运行原理)

    一、简介

    JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计。是在静态网页html中嵌入java代码段形成的文件,JSP是一种运行在服务器端的脚本语言,是一种动态网页技术(网页中的数据可以修改)。

    它是在传统的HTML文件中加入Java程序和JSP标记后构成的,具有JAVA和Web的双重特性。

    1、在没有学习JSP技术之前,要想实现动态网页,只能用Servlet,将一句一句的HTML语句嵌入到Servlet中,工作量比较大:

     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            login log= (login) request.getSession().getAttribute("login");
            int num=(int)this.getServletContext().getAttribute("contextNum");
            //System.out.println("main:"+num);
            response.setContentType("text/html;charset=utf-8");//设置浏览器编码格式
            response.getWriter().write("<html>");
            response.getWriter().write("<head>");
            response.getWriter().write("<title>");
            response.getWriter().write("Login");
            response.getWriter().write("</title>");
            response.getWriter().write("</head>");
            response.getWriter().write("<body bgcolor="aqua">");
            response.getWriter().write("<center>");
            response.getWriter().write("<h3>");
            response.getWriter().write("欢迎你"+log.getAccount());
            response.getWriter().write("<br>");
            response.getWriter().write("浏览量:"+num);
            response.getWriter().write("</h3>");
            response.getWriter().write("<form action='show' method='get'>");
            response.getWriter().write("<input type='submit' value='查看个人信息'>");
            response.getWriter().write("</form>");
            response.getWriter().write("</center>");
            response.getWriter().write("</body>");
            response.getWriter().write("</html>");
        }

    2、我的第一个JSP程序:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>jsp</title>
      </head>
      <body  bgcolor="aqua">
    <h3>
      <%
    
        out.println("Today is the Seventieth Anniversary of the founding of the People's Republic of China.");
    
      %>
    </h3>
      </body>
    </html>

     在嵌入JAVA代码的时候只需添加<%     %>即可。

     3、servlet更适合逻辑处理,jsp更适合响应结果

    一般情况下,servlet从数据库获得的数据会以请求转发的形式传递到jsp页面(页面有显示的功能),最终以一定的形式呈现给用户。当然在不传递数据的时候,servlet也可以重定向到一个jsp页面。

    二、脚本和注释

    1、jsp脚本

    (1)<% java代码 %>

    <h3>
      <%
        out.println("Today is the Seventieth Anniversary of the founding of the People's Republic of China.");
      %>
    </h3>

    在页面输出:

    <h3>
      <%
        int a=9,b=9;
        System.out.println(a*b);
      %>
    </h3>

    在控制台输出运算结果。

     会被翻译到service方法内部。

    翻译后为:

     int a=9,b=9;
        System.out.println(a*b);

    (2)<%=java变量或表达式>

    表达式必须是合法的java表达式并且要有返回值

    <h3>
      <%=123%>
    </h3>

     

    <h3>
      <%int a=9;%>
      <%=(a*a)%>
    </h3>

     会被翻译到service方法内部的out.println();

    即:输出到页面。

    (3)<%!  java代码  %>

    <h3>
      <%! String string="Today is the Seventieth Anniversary of the founding of the People's Republic of China.";%>
      <%=string%>
    </h3>

     加! 号后会被翻译到成员的位置。

     2、注释:

    (1)隐藏注释:<%--   --%>

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>myjsp</title>
    </head>
    <body>
    <h3>
        This my Jsp.
    </h3>
    <%
        int i=12;
        //这是一个单行注释
        
        
        /*
    这是一个多行注释
         */
    %>
    
    <%--
      这是一个JSP注释
    --%>
    <%=i%>
    </body>
    </html>

     其中<%--     --%>被称为隐藏注释,在方便才重新设计人员阅读程序的同时,又保证了程序的安全性,因为在客户端是看不到注释内容的。

    (2)HTML注释<!--         -->:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>myjsp</title>
    </head>
    <body>
    <!-- HTML注释-->
    <h3>
        This my Jsp.
    </h3>
    <%
        int i=12;
        //这是一个单行注释
    
    
        /*
    这是一个多行注释
         */
    %>
    
    <%--
      这是一个JSP注释
    --%>
    <%=i%>
    </body>
    </html>

     HTML注释可以在浏览器查看

    (3)JAVA注释://和/*      */写在<%    %>内部:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>myjsp</title>
    </head>
    <body>
    <h3>
        This my Jsp.
    </h3>
    <%
        int i=12;
        //这是一个单行注释
    
    
        /*
    这是一个多行注释
         */
    %>
    <%=i%>
    </body>
    </html>

    用户看不到注释的内容

    三、运行原理

    1、JSP的运行流程

     (1)第一次请求一个JSP页面时,需要将JSP文件转换为JAVA的Servlet文件并编译为class文件,在以后的请求中如果页面没有经过任何改动,那么可以直接调用class文件,这就是第一次请求JSP页面会有延迟的原因。

    (2)JSP页面是运行在客户端还是服务器

    JSP是一种运行在服务器的脚本语言(servlet也是),不要以为在访问jsp页面的时候要输入jsp页面的名字就以为它是运行在客户端。在客户端发出请求后jsp页面会在服务器内被转化为java代码,并编译为class文件,最终返回html文件给客户端,浏览器解析后呈现给用户。

    2、JSP与Servlet:

    JSP本质上是实现了javax.servlet.jsp.HttpjspPage接口,或者javax.servlet.jsp.JspPage的JAVA类。间接实现了Servlet接口。因此,JSP的本质就是Servlet。

    3、JSP与Servlet的异同点:

    (1)相同点:

    JSP本质上是Servlet(JSP不能被虚拟机执行,Servlet可以),JSP是在Servlet基础上发展起来的。

    (2)不同点:

    JSP擅长页面显示,Servlet擅长于逻辑控制。

  • 相关阅读:
    02 _ 该如何选择消息队列
    封装、抽象、继承、多态分别可以解决哪些编程问题?
    04 _ 理论一:当谈论面向对象的时候,我们到底在谈论什么?
    03 _ 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?
    接口使用
    结构体和方法
    通道的高级玩法
    通道的基本操作
    极客时间 mp3提取
    iOS多线程中的单例
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11267819.html
Copyright © 2011-2022 走看看