JSP页面中可以包含指令,Java语句、变量、方法或表达式、静态内容(html、css、javascript)
脚本元素(Scripting Elements):声明、脚本段、表达式。
注释指令(Comment Elements):HTML注释、Java注释、JSP隐式注释。
指令元素(Directive Elements):page、include、taglib 等
动作元素(Action Elements):jsp:include、jsp:forward、jsp:useBean等。
1.0 JSP指令
语法格式:
告诉JSP引擎如何解析jsp文件中的内容
语法: <%@ 指令名称 属性名称1=“属性值1” 属性名称2=“属性值2” 。。。。。%>
语言="java" 文本类型 = "text/html ; 字符集=utf-8" 页面编码="utf-8"
示例:<%@ page language=*"java"* contentType="text/html; charset=UTF-8" pageEncoding=*"UTF-8"%>
2.0 page指令
作用:用于定义JSP页面的各种属性。
import和java代码的含义一样
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
session:会自动创建session对象,默认值为true;
buffer:JSP中有javax.servlet.jsp.JspWriter输出字符流。设置输出数据的缓存大小。默认8kb.
errorPage:如果页面中有错误,跳转到指定的资源 errorPage="/uri" 如果写“/”则代表当前应用的目录 下,绝对路径。 如果不写“/”则代表相对路径
isErrorPage:是否创建throwable对象。默认是false
contentType:等同于response.setContentType(“text/html”;charset=utf-8);服务器发送客户端的内容编码
pageEncoding: Jsp文件本身的编码
isELIgnored: 是否支持EL表达式。 默认是false,支持表达式;是true表示不支持表达式,${1+1};false输出结果2 true按照原样输出
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
<%@ page import="java.util.List" %> <%-- 导入和java一样 --%>
<%@ page session="true"%> <%-- session自动是为true --%>
<%@ page pageEncoding="UTF-8" %> <%-- JSP本身的编码 --%>
<%@ page errorPage="错误跳转页面.jsp" %> <%-- 如果页面有错误 则跳转到指定页面 --%>
<%@ page buffer="8kb" %> <%--JSP中有javax.servlet.jsp.JspWriter输出字符流。设置输出数据的缓存大小。默认8kb.--%>
<%@ page isErrorpage
<%@ page isELIgnored="false" %> <%--isELIgnored: 是否支持EL表达式。 默认是false,支持表达式;是true表示不支持表达式--%>
jsp的实现本质上还是java文件,
查看路径
![java](https://img-blog.csdnimg.cn/20201210105721136.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzcyNjY1,size_16,color_FFFFFF,t_70#pic_center
3.include包含
<%-- 两者的区别:翻译的时间段不同(可在tomcat工作目录下查看)
静态包含:在翻译时就把两个文件进行合并,运行时效率高。
动态包含:不会合并文件,当代码执行到include时,才包含另一个文件的内容。--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"%>
<html>
<head>![include包含](https://img-blog.csdnimg.cn/20201210165239330.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzcyNjY1,size_16,color_FFFFFF,t_70#pic_center)
<title>include静态和动态引入</title>
</head>
<body>
<%--静态包含--%>
<%@ include file="错误跳转页面.jsp"%>
<p style="color: red;font-size: 18px">这是我本身的文字上面是静态引用:运行时会给文件进行合并运行效率高 下面是静态引用不会合并文件当代码运行到时才包含文件内容</p>
<%--动态包含--%>
<jsp:include page="page指令.jsp"></jsp:include>
</body>
</html>
2.0动作标签
2.1include动态包含
<body>
<%--jsp:include 动态包含--%>
<jsp:include page="include静态和动态引入.jsp"></jsp:include>
</body>
2.2forward请求转发
<%--jsp:forward 请求转发 请求转发不会清除参数--%>
<%--传递参数--%>
<jsp:forward page="错误跳转页面.jsp">
<jsp:param name="user" value="jxc"/>
<jsp:param name="password" value="123456"/>
</jsp:forward>
2.3 bean指令
jsp:useBean 创建一个对象 id class
jsp:setProperty给指定的对象属性赋值 name property value
jsp:getProperty取出指定的对象属值 name property
<body>
<%--
jsp:useBean 创建一个对象 id class
jsp:setProperty给指定的对象属性赋值 name property value
jsp:getProperty取出指定的对象属值 name property
--%>
<%
//正常创建对象
TBuser tuser = new TBuser();
tuser.setUser("jxc");
tuser.setPassword("123456");
String user = tuser.getUser();
String password = tuser.getPassword();
%>
<%--一般创建对象--%>
一般创建获取到的用户名:<%=user%><br>
一般创建获取到的密码:<%=password%>
<%--id 名称 class 对象--%>
<jsp:useBean id="users" class="com.Star.user.TBuser"></jsp:useBean>
<%--1.声明引用 2.查询有没有重复的 3.创建新对象 4.存到作用域 5.赋值--%>
<%--property属性 name: useBean创建的id名--%>
<jsp:setProperty name="users" property="user" value="张三"></jsp:setProperty>
<br>
<jsp:setProperty name="users" property="password" value="zhangsan"></jsp:setProperty>
<br>
<%--输出对象--%>
Bean创建对象获取到用户名:<jsp:getProperty name="users" property="user"/>
<br>
Bean创建对象获取到密码:<jsp:getProperty name="users" property="password"/>
</body>