JSP(Java Server Pages)页面是指扩展名为.jsp的文件,在一个JSP中可以包含指令标识,HTML代码,
JavaScript代码,嵌入的Java代码,注释和JSP动作标识等内容。
1.指令标识
    指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释执行,不会产生任何内
容输出到网页中,也就是说指令标识对客户端浏览器不可见。
    语法格式:<%@ 指令名:page/include/taglib 属性:"属性值"%>
    page指令:用于设置页码相关属性
        1.langua属性用于设置JSP所用的语言
     <%@ page language="java"%>
        2.extends属性用于JSP继承的Java类,不常用,可能影响服务器性能优化
        3.import属性用于导入Java包
          <%@ page import="java.util.*"%>
        4.pageEncoding属性用于定义页面的编码格式
          <%@ page pageEncoding="GBK/UTF-8/IOS-8859-1(不支持中文)/GB18030"%>
        5.contentType属性用于设置MIME类型和字符编码,浏览器会根据此显示网页内容
          <%@ page contentType="text/html;charset=UTF-8"%>
        6.session属性指定是否使用HTTP的session会话对象,默认值为true
          <%@ page session="true/false"%>
        7.buffer属性用于设置JSP的out输出对象使用的缓冲区大小,默认8KB,建议8的倍数
          <%@ page buffer="128KB"%>
        8.autoFlush属性用于设置页码缓存满时,是否自动刷新缓存,默认是true
          <%@ page autoFlush="false/true"%>
        9.isErrorPage属性可以将当前页面设置成错误处理页面
          <%@ page isErrorPage="true"%>
        10.errorPage属性指定若当前页面出现错误的实际响应页面是什么
          <%@ page errorPage="url"%>
    include指令:文件包含指令
        静态包含,被包含的文件所有内容被原样包含到该JSP页面中
          <%@ inlcude file="path"%>
    taglib指令:声明所使用的标签库,并指定标签的前缀
          <%@ taglib prefix="tagPrefix" uri="tagURL"%>
        prefix用于指定标签的前缀   uri用于指定标签库文件的位置
2.脚本标识
    1.Jsp表达式:用于向页面输出信息
    <%= 表达式%>         “<%” 和 “=” 之间不能有空格                   %>
          <% String url="2348.jpg";%>
          <img src="data:images/<%=url%>>">
    2.声明标识:用于定义全局变量或方法
      <%! 声明变量或方法%>
      <%! int number=0;
          int count(){
              number++;
              return number;
          }
      %>
      <%= count() %>
    每次刷新页面都会输出前一次值+1
    3.代码片段
      <% java或脚本代码 %>
          <%
              String str="";
              for(int i = 1; i <= 9; i++){
                  for(int j = 1; j <= i; j++){
                      str += j + "*" + i + "=" + i*j;
                      str += "&nbsp;";
                  }
                  str += "<br>";
              }
          %>
         <%=str %>
    注意:通过声明标识创建的变量和方法在当前JSP页面有效,它的生命周期是从创建开始到服务器关闭结束;
    代码片段创建的变量和方法,也是在当前页面中有效,但它的生命周期是页面关闭后就会被销毁。
4.JSP注释
    1.HTML注释  //注释文本
    2.带有JSP表达式的注释    
      <% 
          //单行注释内容
          /*多行注释*/ 
      %>
    3.提示文档注释(被Javadoc文档工具生成文档时读取,文档是对代码结果和功能的描述)
      <%
          /** 内容 */
      %>
    4.隐藏注释(查看HTML源代码看不见)
        <%-- 注释内容 --%>
5.动作标识
    1.<jsp:include> 包含文件标识
        a.用于向当前页面中包含其他的文件。
        b.语法格式:
            1.  <jsp:include page="url" flush="false/true" />
            2.  <jsp:include page="url" flush="false/true">
                    <jsp:param/>
                </jsp:include>
                page:指定被包含文件的位置
                flush(可选):如果设置为true,在当前页面输出使用了缓冲区的情况下,先刷新缓冲区,再
            执行包含工作
        
        c.说明:<jsp:include>标识对包含的动态文件和静态文件的处理方式是不同的。如果被包含的是静态文件,
        则在页面执行后,在使用了该标识的位置会输出这个文件的内容。如果包含的是动态文件,那么JSP编译器
        将编译并执行这个文件。<jsp:include>标识会识别出文件的类型,而不是通过文件的名称来判断该文件是
        静态还是动态的。
        d.技巧:
            在包含文件时,为保证整个页面的层次结构不发生冲突,建议在被包含文件中删去<html>,<body>等
        标记。
            如果要在JSP页面显示大量的纯文本,可以将这些文本文字写入静态文件(如记事本)中,然后通过
            include指令或动作标记包含到该JSP页面,可使页面更整洁。
        e.include指令与<jsp:include>动作标识的区别:
            1.include指令通过file属性指定被包含文件,并且file属性不支持任何表达式;而<jsp:include>
        通过page属性指定,并且支持JSP表达式。
            2.使用include指令时,被包含文件内容会被原封不动地插入到包含页中,然后JSP编译器再将合成后
        的文件最终编译成一个Java文件;使用<jsp:include>动作标识时,当该标识被执行时,程序会将请求转发
        (注意是转发,而不是请求重定向)到被包含的文件,并将执行结果输出到浏览器中,然后返回包含页,继
        续执行后面的代码。因为服务器执行的是多个文件,所有JSP编译器会分别对这些文件进行编译。
            3.在应用inlcude指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含的文件、包
        含文件中不能有重名的变量和方法;而应用<jsp:include>动作标识包含文件时,由于每个文件是单独编译
        的,所以在被包含的文件、包含文件中重名的变量和方法不冲突。
    2.<jsp:forward> 请求转发标识
        通过<jsp:forward>动作标识可以将请求转发到其他Web资源(JSP、HTML、Servlet等)。执行请求后,当
    前页面不再被执行,转去执行该标识指定页面。
        语法格式:
        1.<jsp:forward page="url" />
        2.<jsp:forward page="url">
            <jsp:param>
          </jsp:forward>
        page:请求被转向的目标文件必须是内部资源,即当前应用中的资源。
    3.<jsp:param> 传递参数标识
        可以作为其他标识的子标识,用于为其他标识传递参数。
        语法格式:<jsp:param name="参数名" value="参数值" />
        说明:
            通过<jsp:param>指定的参数,将以“参数名=值”的形式加入请求中,功能与直接在文件名后面加
        “?参数名=值”是相同的。
 

3.JSP的更多相关文章

  1. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)

    1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...

  2. jsp前端实现分页代码

    前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...

  3. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  4. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

  5. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  6. 浅谈JSP注释

    HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...

  7. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  8. Nginx服务器之Nginx与tomcat结合访问jsp

    本文使用linux centos系统 本文概述: JSP是一种动态网页技术标准.使用的方式是在HTML文件中插入程序段和JSP标记,而形成JSP文件.使用JSP开发WEB应用可以跨平台开发.但jsp需 ...

  9. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

  10. JSP页面跳转的几种实现方法

    使用href超链接标记      客户端跳转 使用JavaScript               客户端跳转 提交表单                        客户端跳转 使用response ...

随机推荐

  1. Struts 2访问Servlet API

    在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢? 解析:将用户名放入session 两种方案 1. 与Servlet API解耦的访问方 ...

  2. 【转】.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    作者:Zhang_Xiang 原文地址:.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发 ...

  3. HDU3336 Count the string(kmp

    It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...

  4. MySQL主从延时这么长,要怎么优化?

    MySQL主从复制,读写分离是互联网常见的数据库架构,该架构最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重. 为什么主从延时这么大? 答:MySQL使用单线程重放RelayL ...

  5. 转载:Linux目录文件的权限查看与修改

    ########################################                                                             ...

  6. mongodb的简单操作记录

    由于项目上需要对mongodb进行监控,所以需要先熟悉下什么是mongobd以及mongodb的简单操作 mongodb的安装: curl -O https://fastdl.mongodb.org/ ...

  7. 为什么angular library的build不能将assets静态资源打包进去(转)

    Versions Angular CLI: 6.0.7 Node: 9.3.0 OS: darwin x64 Angular: 6.0.3 ... animations, common, compil ...

  8. css3中单位rem与.less结合布局

    rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注.这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素. ...

  9. python、第一篇:初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  10. 如何避免学习linux必然会遇到的几个问题

    相信在看这篇文章的都是对linux系统所迷的志同道合的人,不管你是刚开始学,还是已经接触过一些linux的知识,下面的问题是你在学习linux所必须遇到的,若是没有的话那我只能说大神我服你了.下面我就 ...