1、jsp的基本构成:
(1)jsp的指令标识
(2)html标记语言
(3)嵌入的java代码片段
(4)jsp表达式
<!--jsp的指令标识-->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"% errorPage="error.jsp">
<!--html标记语言-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--嵌入的java代码-->
<%
String name="xiaokeai";
Integer.parseInt(name);//将字符串转化为int型
%>
<!--jsp表达式-->
今天是:<%=today%>
</body>
</html>
2、jsp指令标识:在客户端不可见,用于配置jsp文件转译相关参数
<%@ 指令名称 属性1=“属性值” 属性2=“属性值” ···%>
①page指令:页面指令,用于定义整个jsp页面范围有效的属性。
<%@ page attribute1="value1" attribute2="value2"%>
示例:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 官方命名为c -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ page contentType="text/html; charset=UTF-8" errorPage="error.jsp" %>
<%
String name="QQ";
Integer.parseInt(name);//将字符串转化为int型
%>
</body>
</html>
error.jsp
<%@page language="java" import="java.util.*,javax.servlet.jsp.JspException" contentType="text/html; charset=UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 官方命名为c -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@page import="java.util.*" pageEncoding="utf-8" isErrorPage="ture" %>>
出现错误如下所示:<%=exception.getMessage()%>>
</body>
</html>
②include指令:用于在jsp页面静态引入,在当前指令位置引入其他文件,如果被包含的文件中有可执行代码,则显示代码执行后的结果。
<%@ include file="文件的绝对路径或相对路径"%>
作用:引用外部文件,减少代码冗余。
特点:会将引入的jsp文件和当前jsp文件转译成一个java文件使用,在网页中显示转译后的效果。
file属性:指定被包含的文件,还属性不支持任何表达式,也不允许通过如下的方式传递参数。
<%@ include file="welcome.jsp?name=xiaokeai"%>
全局代码声明,局部代码调用:
局部代码块:<% java代码 %> 局部变量 书写麻烦,阅读困难
全局代码块:<% 全局代码 %>全局变量转译到对应的servlet
开发时,servlet进行请求逻辑处理,jsp进行页面转现
注意:静态引入jsp文件时不会单独转译成javaservler文件,当前文件和静态引入jsp文件不可使用java文件的同名变量。
③taglib指令:用于在页面中使用基本标识或自定义标识完成特殊功能。
<%@ taglib uri="tagURI" prefix="tagPrefix"%>
3、jsp的脚本标识
包含元素:声明标识、jsp表达式、脚本程序
作用:可用于除jsp要求以外任何位置,帮助快速获取变量和方法的返回值,作为数据响应返回给浏览器。
①jsp表达式(切记:表达式不可使用分号;)
格式:<%=变量或可以返回值的方法或java表达式 %>
注意:%与=之间不可以有空格
作用:jsp表达式在页面被转换时成servlet后,转换为out.print()方法
②声明标识
在jsp页面中可以声明变量和方法。
格式:<%! 声明变量或方法的代码%>
注意:%与!之间不可以有空格
运行代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 官方命名为c -->
<%!
int num=0;
synchronized void add(){
num++;
}
%>
<% add(); %>
<html>
<body>
<center>
你是第<%=num %>位访问者
</center>
</body>
</html>
运行结果:
③脚本程序
脚本程序是在jsp页面中使用<% %>标记的形成一段java代码
注意:当变量所在的页面关闭后辈定义的变量会被销毁。
<% java代码 %>
脚本程序的应用:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 官方命名为c -->
<%!
int num=0;
synchronized void add(){
num++;
}
%>
<% add(); %>
<%int able=1;%>
<html>
<body>
<center>
你是第<%=num %>位访问者
</center>
<table>
<%if(able==1){ %>
<tr><td>欢迎登陆,教师</td></tr>
<%}else if(able==2){%>
<tr><td>欢迎登陆,学生</td></tr>
<%} %>
</table>
</body>
</html>
运行结果:
4、jsp的注释
(1)html注释
格式:<!-- 注释内容 -->
作用:注释内容在浏览器看不到,但是在查看html源代码时可以看到注释内容。
(2)jsp表达式注释
格式:<!-- comment<%=expression %> -->
作用:注释语句在jsp页面进行请求后,服务器能够识别注释中的jsp表达式,从而来执行该表达式,而对注释中的其他内容不做任何操作。当服务器将执行结果返回给客户端,客户端浏览器会识别该注释语句,所以被注释的内容不会显示在浏览器。
(3)隐藏注释
格式:<% -- 注释内容-- %>
作用:使用该方法的注释内容,不仅不会在客户端浏览时看到,而且在客户端html查看源代码也看不到,所以安全性比较高。
(4) 脚本注释
①单行注释:
格式: //注释内容
作用:
②多行注释:
格式: /* 注释内容 */
作用:
③提示文档注释:
格式:/**
*
*/
5、动作标识
动作标识是在请求处理阶段按照在页面中出现的顺序被执行的,只有他们被执行的时候才会去实现自己所具有的的功能。
格式: <动作标识名称 属性1=“值1” 属性2=“值2”>
(1)<jsp:include>动作,动态引入
格式:<jsp:include page="被包含文件的路径" flush="true|false">
作用:用于对应当前页面包含的其他文件,这个文件可以是动态文件也可以是静态文件。
(2)<jsp:forward>
格式:<jsp:forward page="文件路径|表示路径的表达式">
作用:用来将请求转发到另外一个jsp、html或者相关的资源文件。
(3)<jsp:setProperty>
格式:<jsp:setProperty
name="Bean实例名"
{
property="*"|
property="propertyName"
}/>
(4)<jsp:getProperty>
作用:用于从指定的Bean中读取指定的属性值,并输出到页面中。
<jsp:gstProperty name="Bean实例名" property="propertyNae">
示例:
先创建一个book的javaBean文件,所谓的javaBean其实就是一个java的类,只不过是个术语而已。
book.java
/**
*
*/
package com.jc.bean;
/**
* @author JC.Liu
*
* 2019年9月21日-下午4:09:32
*/
public class Book {
private String bookName;
private String author;
private String category;
private double price;
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName=bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 官方命名为c -->
<%!
int num=0;
synchronized void add(){
num++;
}
%>
<% add(); %>
<%int able=1;%>
<html>
<body>
<center>
你是第<%=num %>位访问者
</center>
<table>
<%if(able==1){ %>
<tr><td>欢迎登陆,教师</td></tr>
<%}else if(able==2){%>
<tr><td>欢迎登陆,学生</td></tr>
<%} %>
</table>
<!-- 实例化Book对象 -->
<jsp:useBean id="book" class="com.jc.bean.Book"></jsp:useBean>
<!-- 对book对象赋值 -->
<jsp:setProperty property="bookName" name="book" value="java开发"/>
<jsp:setProperty property="author" name="book" value="刘江川"/>
<jsp:setProperty property="category" name="book" value="java开发图书"/>
<jsp:setProperty property="price" name="book" value="123"/>
<table align="center" border="1" cellpadding="1" width="350" height="100" border="green">
<tr>
<td align="center">图书名称:</td>
<td align="center"><jsp:getProperty property="bookName" name="book"/></td>
</tr>
<tr>
<td align="center">图书作者:</td>
<td align="center"><jsp:getProperty property="author" name="book"/></td>
</tr>
<tr>
<td align="center">图书类别:</td>
<td align="center"><jsp:getProperty property="category" name="book"/></td>
</tr>
<tr>
<td align="center">图书价格:</td>
<td align="center"><jsp:getProperty property="price" name="book"/></td>
</tr>
</table>
</body>
</html>
运行结果:
(5)<jsp:fallback>
<jsp:fallback>是<jsp:plugin>的子标识,当使用<jsp:plugin>标识加载java小应用程序或JavaBean失败时,可通过<jsp:fallback>标识向用户输出提示信息。
(6)<jsp:plugin>
(7)<jsp:param>子标识
本次学习到此结束,欢迎各位关注交流。