一、简介

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>

jsp(简介、脚本和注释、运行原理)

 

 在嵌入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>

在页面输出:

jsp(简介、脚本和注释、运行原理)

<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>

jsp(简介、脚本和注释、运行原理) 

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

jsp(简介、脚本和注释、运行原理)

 会被翻译到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>

jsp(简介、脚本和注释、运行原理)

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

 

 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>

jsp(简介、脚本和注释、运行原理)

 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的运行流程

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擅长于逻辑控制。

 

相关文章: