• 1.1(学习笔记)JSP(Java Server Pages)基础(脚本元素、指令元素)


    一、JSP简介

      JSP全称为Java Server Pages,是一种动态网页开发技术,可以在HTML界面中嵌入java代码,

      实现动态的提供数据。访问JSP时服务器会将JSP翻译成Servlet,访问JSP实际上就是访问Servlet。

    二、JSP与Servlet

      我们先来看一个小实例,看下JSP与Servle之间的联系。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="GBK">
    <title>Insert title here</title>
    <%! 
        String name = "hcf";
        String sex = "man";
        String isAdult = null;
        int age = 20;
    %>
    </head>
    <body>
        <% 
            if(age >= 18)
                isAdult = "yes";
            else
                isAdult = "no";
        %>
        <h3><%= name %></h3>
        <h3><%= sex %></h3>
        <h3><%= age %></h3>
        <h3>isAdult:<%= isAdult %></h3>
    </body>
    </html>

    界面写完后,我们将这个jsp所属的项目部署到Tomcat上,直接访问这个界面

    我们发现界面上显示的内容,就是按照我们代码的内容和逻辑来显示的。

    之前说jsp最终会被服务器翻译成Servle,访问JSP实际就是访问Servlet。

    我们来看下这个JSP生成的Servlet。

    一般在apache-tomcat-7.0.53workCatalinalocalhost est01orgapachejsp目录下。

    如果找不到可以采用Everything全局搜索"jsp.java".

    这就是First.jsp生成的.java和.class文件。

    我们打开.java文件会发现代码很多,我们主要看几个地方

    我们可以发现这里的声明对应jsp中的声明部分,它是写在类中所有方法之外的,可看作是此类中所有方法的全局变量。

    我们再来看该类中的一个方法:

      

    可以看到最终显示的界面就是通过write、print这些语句打印出HTML界面,

    jsp的判断部分(% %)和输出部分(%= %)在此方法中都能找到对应的代码。

    看到这里就知道了,JSP中的HTML界面和java代码会转换成Servlet进行控制和输出。

    三、脚本元素

      我们看之前的jsp文件中黄色高亮的部分的含义。

       <%! %>:声明,声明位置为jsp生成的Servlet类中所有方法之外,可看作全局变量。(只能写声明)

       <% %>  代码块,代码块所在的位置为_jspService()方法中,这部分内容可以写声明也可以写控制,但始终在_jspService()方法中。

       <%= %> :输出,相当于Servlet中的out.print(),生成位置在_jspService()方法中。

      <% %> <%=%>永远都是在_jspService()中生成,在Servle中的生成顺序按照jsp中位置的先后次序来。

      而<%!%>生成的位置是在这个类中,所有方法之外。

      

     

    四、指令元素

      JSP指令主要用于设置页面相关属性和功能,如编码方式、数据类型等。

      4.1 page指令

      page指令顾名思义就是控制页面的指令。

      格式 :<%@ page  attribute="value"%>

      attribute:

        language:指定当前语言,一般是java。

        Encoding:指定当前界面编码方式。

        import:导入类,导入多个类时可用‘,’隔开。

        errorPage:发生错误时跳转的界面。(errorPage = "error.jsp");

        isErrorPage:指定当前页是否为错误处理界面。为true则代表为错误处理界面,可以使用exception对象。

        contentType:设置当前内容的类型。

    PageAttribute.jsp

    <!--     当前语音为java     内容类型为text/html    编码方式为 utf  (charset,Encoding这两种编码设置效果一样,选择一个就可以了)-->
    <!-- charset和Encoding属性效果是一样的,任选一个就可以了 --> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <!-- 导入java.util包下和java.lang包下所有类 --> <%@ page import = "java.util.*,java.lang.*" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% List<String> list = new LinkedList<>(); list.add(0, ""); list.add(1, ""); for(String temp:list){ out.println(temp + "<br>"); } %> </body> </html>

    接下来我们来看下errorPage,isErrorPage属性。 

    PageAttribute.jsp 

    <!--     当前语音为java     内容类型为text/html    编码方式为 utf  (charset,Encoding这两种编码设置效果一样,选择一个就可以了)-->
    <%@ page language="java" contentType="text/html; charset=UTF-8" %>
    <!--      导入java.util包下和java.lang包下所有类 -->
    <%@ page import = "java.util.*,java.lang.*" %>
    <!-- 发生错误则跳转到error.jsp界面 -->
    <%@ page errorPage = "error.jsp" %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <%
            List<String> list = new LinkedList<>();
            list.add(0, "");
            list.add(1, "");
            for(String temp:list){
                out.println(temp + "<br>");
            }
            String com = null;
            com.equals("");//此处有空指针异常。
        %>
    </body>
    </html>

    error.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!-- 设置当前页面为错误处理界面,可以使用exception -->    
    <%@ page isErrorPage = "true" %>
    <%! String str = null;%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h2>this is error.jsp</h2><br>
    <!-- 如果isErrorPage为false,则此处不能使用exception-->
       <!-- 此处的errorInfo是定义在_jspService()方法中的变量,不是全局变量--> <% String errorInfo = exception.toString(); %> <%= errorInfo %> </body> </html>

    errorPage可以设置发生错误时的跳转页面,isErrorPage设置当前页面是否为错误处理界面。

      4.2 taglib指令

      taglib是导入标签库的指令。

      格式:<%taglib uri = "标签库地址" prefix = “”%>

      

      4.3include指令

      JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。

      包含的文件就好像是该JSP文件的一部分,会被同时编译执行。对于某些需要被多次重用文件可以采用

      incdlue指令,提高文件利用率。

      我们来看一个使用包含指令的小例子:

      menu.jsp 

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <a href = "">随笔  </a>
        <a href = "">文章  </a>
        <a href = "">日记  </a>
        <a href = "">评论  </a>
        <a href = "">...</a>
    </body>
    </html>

    include.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
      <!-- 使当前界面包含menu.jsp --> <%@ include file = "menu.jsp"%><br> this is my index </body> </html>

     当前首页采用包含指令后,将指定的文件包含进了当前页面。

      

  • 相关阅读:
    route命令基本使用
    Linux提权(capabilities)
    shell编程(case)
    VMware镜像迁移至zstack
    VMware安装zstack踩坑日记
    wordpress添加https
    python下载油管视频
    pandas多班级合并提取教师个人课表,多表同位置填充数据
    博客园美化备份
    Linux 运行Python文件/命令/程序,不因终端关闭而终止运行
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/10329723.html
Copyright © 2020-2023  润新知