jsp语法和基础知识学习
1.jsp的回顾
jsp:java server page//服务器端的页面
1.1.jsp的运行原理
jsp在执行时,会被服务器翻译为servlet编译执行,jsp就是一个Servlet
1.2jsp的脚本元素
<%! %>:jsp的声明翻译成servlet成员部分的内容。声明变量,方法和内部类
<%= %>:jsp的表达式用于将程序数据输出到客户端用于生成html页面的源码
<% %>嵌入java代码翻译成service方法内部的代码块,声明变量和内部类
1.3eclipse修改jsp默认的字符集编码
1.4JSP的注释
写法
java代码的注释格式<%
//单行注释
/多行注释/
%>
JSP的特有的注释的格式<%-- 该部分注释在网页中不会被显示–%>
html的注释不能用来注释java的代码
2.JSP的指令元素
2.1JSP的指令元素的概述
2.2jsp指令元素的作用
用于指示jsp执行的某些步骤
用于指示jsp变现特定的行为
2.3JSP指令元素的语法
语法:`
<%@ 指令名称 属性名称=属性的值 属性名称=属性的值 %>
2.4JSP指令元素的分类
page指令:指示jsp页面设置属性和行为
include指令:指示jsp包含哪些其他的页面
taglib指令:指示jsp页面包含哪些标签库
3.jsp的page指令
3.1
写法:
<%@ page属性名=属性值 %>这些指令可以单独使用也可以多个同时使用
注意在jsp页面中只有import属性可以出现多次,其他的属性都只能出现一次
3.2page指令的相关的属性
language属性:声明使用脚本语言的类型只能是java
extend属性:标明jsp编译成servlet的时候继承的类默认值:httpjspBase
session属性:标明jsp中是否可以直接使用使用session对象默认值是true
buffer属性:标明jsp对客户端缓冲区的大小
autoFlush属性:如缓冲区大小溢出,是否自动刷新默认true
import属性:用于导入java的包或类
contentType属性:标明jsp被浏览器解析和打开后采用的默认的字符集
pageEncoding属性:jsp文件及jsp翻译后的servlet保存的硬盘上采用的字符集
isErrorPage属性:处理jsp页面的异常
errorPage属性:处理jsp页面的异常
isELgnored属性:通知jsp是否忽略EL表达式。
4.include和taglib指令
4.1include指令简介
写法:<%@ include 属性名=属性值%>
作用:在jsp页面中包含哪些页面
语法格式:<%@ include file="引入文件的路径名称(xxx.html或xxx.html)"%>
静态的包含原理:-------
4.2taglib指令简介
写法:
<%@ taglib 属性名=属性值%>
作用:用于在jsp页面中引入标签库
taglib指令的属性
url:引入的标签库的路径
prefix:引入标签库的别名
5.jsp的内置对象
定义:jsp内置对象是指可以直接在jsp页面中直接使用的对象
jsp当中有九大内置对象:
request:从客户端向服务器发送的请求的对象
response:从服务器像客户端做出的响应的对象
session:服务器为客户端创建的会话的对象
application:代表应用。获得的servletcontent对象
out:向输出流写入内容的对象
page:当前的jsp翻译成servlet后的对象的引用
pageContext:本jsp的页面的上下文对象
config:本jsp的servletConfig对象
exception:表示jsp页面运行时产生的异常对象
pagecontent对象的概述
页面的上下文对象
代表页面当前运行的对象代表当前页面的一些属性
从pagecontent获取其他8个隐式对象(采用getxxx()方法)
6.JSP的动作标签
作用:用来在jsp页面中提供业务逻辑功能,避免jsp中直接编写java代码,造成jsp难以维护
格式:jsp:
jsp:forwaed 请求转发
jsp:include包含(动态包含)
<jsp:forward page="/index2.jsp"></jsp:forward>//jsp的请求转发
<jsp:include page="/index2.jsp"></jsp:include>//jsp的动态包含
案例
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2021/1/19
Time: 18:27
To change this template use File | Settings | File Templates.
学习:学习jsp Scriptlets(jsp脚本元素)jsp的声明语句和jsp表达式的基本的使用
JSP的注释的格式同时在jsp中测试前端的编程技术
对jsp进行基本的实验测试
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP学习</title>
</head>
<style type="text/css">
.one{
width: 100px;
height: 100px;
background: blue;
margin-top: 20px;
}
</style>
<body>
<%--jsp的基本技术的应用--%>
<%!
int i=4;
int j=5;
int x=1;
int y=2;
public int add(int i,int j){
return i+j;
}
// 在里面只能定义变量和定义方法,且生成的变量和方法属于类
%>
<%
out.println("类变量i+j的值为;"+(i+j));
out.print("<br>");
int c=add(i,j);
out.print("C的值为a+b="+c);
out.print("<br>");
// 向前台打印9*9乘法表
out.println("向前台打印9*9乘法表");
out.print("<br>");
for (int a=1;a<=9;a++){
for (int b=1;b<=a;b++){
out.println(a+"*"+b+"="+a*b);
}
out.println("<br>");
}
int i=2;
int j=2;
out.print("i+j的值为:"+(i+j));
out.println("<br>");
int a=5;
int b=6;
// 在此jsp的脚本中可以编写java的代码但不能实现定义变量
%>
<%=
"使用jsp脚本中的输出表达式i+j="+(i+j)
%>
<%=
x+y
%>
<%=
a+b
//在jsp脚本中输出表达式一次只能写一个表达式
%>
<%--这种格式是jsp的注释格式--%>
<!--这种注释是html的注释 -->
<div class="one">
</div>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2021/1/20
Time: 19:08
To change this template use File | Settings | File Templates.
学习:学习jsp的指令的使用方法和常用到的知识点
实验:对jsp的指令进行测试page指令和include指令
其中常用到的指令为page指令
--%>
<%--
其中page指令的格式为:
<%@ page 属性名1=“属性值1” 属性名2=“属性值2”....%>
page指令作用在整个jsp的文件与其书写位置无关但默认写在最前面
作用:定义jsp页面的常用的属性值
--%>
<%--
其中page常用到的属性的值为:
language--采用的语言默认为java
import-- 导入指定的包和类
contentType--- 根据该属性判断文档的类型
pageEnCoding--当前页面的指定的编码格式
--%>
<%--
JSP中include指令的使用
include作用包含其他的页面的静态的资源
格式:<%@ inlude file="被包含的文件的地址" %>
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Scanner" %>
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
response.setHeader("Content-Type", "text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
int c=doubleadd();
System.out.println("a+b="+c);
%>
<%!
/*
求任意输入的两个数的值
*/
public int doubleadd(){
System.out.println("请输入a和b的值");
Scanner sc=new Scanner(System.in);
int a=5;
int b=3;
return a+b;
}
%>
<%--
使用jsp的include指令包含两个静态的资源
--%>
<%@include file="demo.html"%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2021/1/20
Time: 22:45
To change this template use File | Settings | File Templates.
JSP隐式对象的学习
隐式对象;jsp默认直接创建的对象
JSP中共有九大隐式对象
out
requset
response
config:服务器配置可以获得初始化参数
session
application:获取用户的共享信息
page
pageContent:jsp页面的容器
exception
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP隐式对象的学习</title>
</head>
<body>
<%--
out对象的使用:使用out时相当于把数据先写入到JspWriter对象的缓冲区里
调用ServletResponse.getWriter()方法才能将缓存区的数据真正写入到servlet引擎中
直到整个jsp页面结束才能将数据写入到jsp的引擎中
response.getWriter()是直接将数据写入到jsp的引擎中
可以通过page属性设置buffer属性来设置缓冲区的大小
--%>
<%@ page buffer="0kb" %>
<%
out.print("first line<br/>");
response.getWriter().println("second line<br/>");
%>
<%--
pageContext对象的练习使用
通过该对象可以获取其他的8个隐式对象
--%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2021/1/21
Time: 10:34
To change this template use File | Settings | File Templates.
实验:通过使用jsp的动作元素来实现控制jsp的行为
<jsp:include>动作元素:把其他页面的输出内容插入到当前jsp页面的输出内容
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP动作元素的使用</title>
</head>
<body>
<%--
使用JSP的动作元素<jsp:include>
基本的格式:<jsp:include page="relativeURL" flush="true|false">
page属性用来引入指定资源的相关的路径
flush属性是否将资源刷新到缓存区默认情况下为false
值为false时将值同时显示出来
值为true时先显示当前jsp页面的值
--%>
123456
<%@ include file="demo.html"%>
<jsp:include page="include.jsp" flush="true"/>
<jsp:forward page="demo3.jsp"/>
<%--
<jsp:forward>动作元素的简单使用和介绍
语法格式
<jsp:forward page="relativeURL">
page属性后加转发的相对的路径类似于请求的zhuafa
--%>
</body>
</html>