本文最后更新于:December 3, 2021 pm
                
              
            
            
              JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
目录 1.脚本 用来在JSP中编写java语句、声明变量、方法或者表达式。
1.1 普通脚本(代码脚本) 
<% java代码 %>
 
普通脚本可以使用所有java语法,但除了定义函数。而且脚本与脚本之间不能嵌套、脚本与HTML标签不能嵌套。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <%--2021 /8 /23 10 :55 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>new  java.util.Date() %>      <br>int  a=713 ;"abcd" );"abc" );
通过查看生成后的java文件,可以发现 普通脚本的代码在编译后的java文件中的位置是处于service方法中,所以定义的变量是局部变量。
1.2 声明脚本 
<%! 定义变量、函数 %>
 
声明脚本声明的变量是全局变量,因为在java文件中,它的位置是在service方法外面,在类的里面。并且声明脚本的内容必须在普通脚本中调用。如果声明脚本中的函数具有返回值,则使用输出脚本调用。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 <%--2021 /8 /23 10 :55 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>new  java.util.Date() %>      <br>int  b = 77777777 ;public  void  show () "show77777777" );public  int  age () return  777 ;
注意:out.println();不能在声明脚本中使用!!! 
1.3 输出脚本 
<%= java表达式 %>
 
不能调用无返回值的函数。不能加分号。
如:<%=age()%>其形式等价于:(这是在java文件中的实现方式)
所以,这就是为什么在输出脚本中,不能加分号的原因。因为加了分号之后就变成了这样:
这样就肯定会报错。
示例:
<body>new  java.util.Date() %>      <br>int  a=777 ;public  int  age () return  a;"今天星期一" %><br><!--输出字符串-->7777777 %><br><!--输出数-->
2.注释 有两种方式,一种是JSP注释形式、一种是HTML注释形式。
JSP注释,注释的内容不会被发送至浏览器、甚至不会被编译。在网页中查看源码是看不见的,甚至在java文件中也没有。 
 
 
HTML注释,通过浏览器查看网页源码是可以看见的。在java文件中也是有的。 
 
 
3.JSP指令 用来设置与整个JSP网页相关的属性。有三种指令。
指令 
描述 
 
 
<%@ page …%> 
定义页面的依赖属性,如脚本语言、error页面、缓存需求等 
 
<%@ include …%> 
包含其他文件 
 
<%@ taglib …%> 
引入标签库的定义,可以是自定义标签 
 
3.1 Page指令 
<%@ page attribute1 = “value1” attribute2 = “value2” %>
 
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个Page指令。
属性 
描述 
 
 
contentType 
指定当前JSP页面的MIME类型和字符编码格式 
 
errorPage 
指定当JSP页面发生错误异常时需要跳转向的错误处理页面 
 
isErrorPage 
指定当前页面是否可以作为另外一个JSP页面的错误处理页面 
 
import 
导入要使用的java类 
 
language 
定义JSP页面所用的脚本语言,默认为java 
 
session 
指定JSP页面是否使用session。默认为true(立即创建),false(使用时创建) 
 
pageEncoding 
指定JSP页面的解码格式 
 
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <!-- contentType、language -->"text/html;charset=UTF-8"  language="java"  %>"text/html;charset=UTF-8"  language="java"  errorPage="url"  %> <!--url是错误页面的路径,如error.jsp-->"text/html;charset=UTF-8"  language="java"  isErrorPage="true"  %> import  -->import ="java.util.Date"  %>"false"  %>"UTF-8"  %> <!-- 设置JSP页面的格式为UTF-8 ,类似与HTML中的 <meta charset="UTF-8" >用来设置HTML的格式 -->
3.2 include指令 
<%@ include file=”被包含的JSP路径” %>
 
用来包含其他文件。可以是:JSP文件、HTML文件或文本文件。被包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。可能存在重名的冲突问题,不建议使用。
示例:
A.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <%--2021 /8 /23 16 :14 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>"B.jsp" %>"C.jsp" %>
B.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <%--2021 /8 /23 16 :15 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>
C.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <%--2021 /8 /23 16 :15 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>
然后再访问A.jsp进行查看效果。为什么说是静态包含的,是因为A.jsp生成的java文件中把B.jsp和C.jsp
重名冲突问题示例:
A.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <%--2021 /8 /23 16 :14 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>"B.jsp" %>"loong" ; "C.jsp" %>
B.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <%--2021 /8 /23 16 :15 this  template use File | Settings | File Templates."text/html;charset=UTF-8"  language="java"  %>"Lee" ;
当在两个包含的文件中,都写过同一个变量名称时,就会出现重命名错误。
至于为什么,是因为A.jsp和B.jsp的内容都写在了同一个java类中,而且更重要的是,普通脚本声明的变量都是局部变量(都是在service方法中),所以,当两个JSP文件中出现相同名称时,在生成的Java类的service方法中就会重复定义两次相同名称的变量,所以就会出现错误。可自行查看A.java文件。
3.3 taglib指令 引入JSP的标准标签库。这个指令在后面的EL、JSTL会用到,这里只是简单介绍一下。
<%@ taglib uri=”外部标签库路径” prefix=”前缀” %>
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %>