JSP基础
1 基础内容概况
- JSP页面的三种注释
- JSP的page指令
- jsp的局部代码块
- jsp的全局代码块
- jsp的脚本段语句块
- jsp的静态引入和动态引入
- jsp的转发标签
- jsp的九大内置对象的学习
- 四个作用域对象
- JSP的路径
2 相关代码实现
<%--
Created by IntelliJ IDEA.
User: linyuqi
Date: 2019-07-05
Time: 16:20
To change this template use File | Settings | File Templates.
--%>
<%--
JSP页面的三种注释:
前端语言的注释:转译 不会被浏览器执行
Java语言的注释:转译 不会被servlet执行
jsp的注释:不转译
JSP的page指令的学习:
语法:<%@ page 属性名="属性值"%>
language: 声明jsp要被转译的语言
import: 声明转译的Java文件要导入的包 不同的包以逗号隔开
pageEncoding:设置当前jsp文件的数据编码格式
contentType: 设置jsp响应给浏览器时,浏览器的解析和编码格式
session:设置转译的servlet是否开启session支持,默认开启
errorPage:设置jsp运行错误要跳转的页面
extends:设置jsp转译的Java文件要继承的父类(包名+类名)
作用:
配置jsp文件转译的相关命令
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--设置error页面--%>
<%@ page errorPage="erro.jsp" %>
<%--设置jsp页面路径的"相对绝对"路径访问--%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>JSP的学习</title>
</head>
<body>
<h1>jsp的学习:</h1>
<hr>
<%--
jsp的局部代码块:
使用:<%
System.out.println("AAAA");
%>
特点:声明的Java代码会被原样转到jsp对应的servlet文件的_JspService方法中
代码块中声明的变量都是局部变量
缺点:使用局部代码在jsp中进行逻辑判断,书写麻烦,阅读困难
规则:servlet进行逻辑判断,jsp进行页面展示
jsp的全局代码块:
使用:<%!
public void test(){
System.out.println("全局代码块!");
}
%>
特点:声明的Java代码作为全局代码转译到servlet中
注意:全局代码块声明的变量需要使用局部代码块调用
jsp的脚本段语句块:
特点:帮助我们快速的获取变量或者方法的返回值作为数据响应给浏览器
使用:<%=str%>
注意:不要在变量名或者方法后使用分号
位置:除jsp语法要求以外的任何位置
--%>
<!-- 局部代码块 -->
<%
//该语句发送编译错误 会触发errorPage
//int a = 5/0;
int a = 5;
if (a < 3){
%>
<b>jsp学习很简单!</b>
<%
}else {
%>
<b>jsp学习很难</b>
<%
}
%>
<%
test();
%>
<%
System.out.println("AAAA");
%>
<!-- //这是脚本片段语句 -->
<%=str%>
<!-- 全局代码块 -->
<%!
String str = "Good Day!";
public void test(){
System.out.println("全局代码块!");
}
%>
<%--
jsp的静态引入和动态引入:
静态引入:
使用:<%@ include file="static.jsp"%>
特点:会将引入的jsp文件和当前的jsp文件转译成一个Java(servlet)文件使用
注意:静态引入的jsp文件不会单独转译成一个Java(servlet)文件
当前文件和静态引入的jsp文件中不能使用Java代码块声明同名变量
动态引入:
使用:<jsp:include page="active.jsp"></jsp:include>
特点:会将引入的jsp文件单独转译,在当前文件转译好的Java文件中调用引入的jsp文件的转译文件
注意:动态引入允许文件中声明同名变量
优点:
降低代码的冗余,便于维护升级
--%>
<!--静态引入文件-->
<%@ include file="static.jsp"%>
<!--动态引入文件-->
<jsp:include page="active.jsp"></jsp:include>
<%--
jsp的转发标签:
使用:
<jsp:forward page="forward.jsp">
<jsp:param name="str" value="Linyuqi"/>
</jsp:forward>
特点:一次请求 地址栏信息不变
注意:在转发标签<jsp:forward>中只能写<jsp:param />标签
name和value以键值对方式传输数据
注意:数据会?的形式拼接在转发路径后面
--%>
<!--转发-->
<%--<jsp:forward page="forward.jsp">
<jsp:param name="str" value="Linyuqi"/>
</jsp:forward>--%>
<%--
jsp的九大内置对象的学习:
内置对象:jsp文件在转成servlet文件的时候自动生成并声明的对象,可以在jsp中直接使用
注意:内置对象在jsp页面使用,使用局部代码块或脚本段语句来使用
不能在全局代码块中使用
九大对象:
pageCOntext:页面上下问对象,封存了其他八个内置对象,封存了当前jsp的运行信息。
注意:每个jsp页面单独拥有一个pageContext对象
request:封存当前请求数据的对象,有服务器创建 一次请求
session:用来存储用户不同请求的数据共享问题 一次会话
application:也就是servletcontext对象,一个项目只有一个,存储用户共享数据,以及完成其他操作
response:响应对象,用来响应请求处理结果给浏览器的对象,设置响应头,重定向
out:响应对象,jsp内部使用,带有缓冲区的响应对象,效率高于response
page:代表当前jsp对象,相当于Java中的this
exception:异常对象,存储了当前运行的异常信息
注意:使用此对象需要在page指定使用属性 isErrorPage=""开启
config:也就是servletconfig对象,主要用来获取web.xml的配置数据,完成一些初始化数据的读取
四个作用域对象:
pagecontext:当前页面,解决了当前页面数据共享问题
request:一次请求,一次请求的servlet的数据共享,通过请求转发,将数据流转给下一个servlet
session:一次会话,一个用户的不同请求的数据共享,将数据从一次请求流转给其他对象
application:项目内,不同用户的数据共享问题,将数据从一个用户流转个另一个用户
作用:
数据流转
--%>
<!--jsp的九大内置对象的学习-->
<%
response.getWriter().write("九大内置对象!!!");
%>
<%--
JSP的路径:
相对路径:/项目名/。。。。
jsp全局路径声明方式:
使用:顶部:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head>
<base href="<%=basePath%>">
<title>JSP的学习</title>
</head>
作用:
实现相对路径的绝对使用
--%>
<!--路径跳转-->
<a href="loginpractice.jsp">注册用户</a>
<div>
<%
response.getWriter().write(basePath);
%>
</div>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: linyuqi
Date: 2019-07-05
Time: 18:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>发生错误</title>
</head>
<body>
<b>该页面发生错误。 。 。</b>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: linyuqi
Date: 2019-07-05
Time: 18:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>静态引入</title>
</head>
<body>
<div>
<b>静态引入文件</b>
</div>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: linyuqi
Date: 2019-07-05
Time: 18:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>动态引入</title>
</head>
<body>
<div>
<b>动态引入文件</b>
</div>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: linyuqi
Date: 2019-07-05
Time: 18:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>转发页面</title>
</head>
<body>
<b>转发页面</b>
</body>
</html>
3 学习总结
jsp页面就如java类一样,让数据传输更加的方便。