JSP快速学习


前言

JSP是什么

JSP: Java Server Pages Java服务器端页面。
JSP就是HTML+Java代码+JSP自身东西。

JSP在执行时,会被服务器翻译为servlet编译执行,JSP就是一个 Servlet。

脚本元素:

<%! %> : JSP声明翻译成 Servlet成员部分的内容。声明变量,方法,内部类。
<%= %> : 翻译out.print(),在service方法内部。用于生成HTML页面源码。
<% %> : 嵌入Java代码,翻译成service方法内部的代码块。声明变量,内部类。

JSP注释

JSP支持3种注释

HTML的注释: <!-- -->
存在时机:
存在JSP的源码中,翻译成Servlet后这个注释也存在,在生成HTML响应到页面的时候这个注释也会存在。


JAVA的注释:
<% 	//单行注释
	/*多行注释*/
	/**文档注释*/
%>
存在时机:
存在JSP的源码中,翻译成servlet后Java 代码的注释也会存在,但是生成HTML响应到页面后,这种注释就消失了。




JSP自身注释:<%--JSP的注释--%>
存在时机:
存在JSP的源码中,翻译Servlet 后注释就没有了。




注意:注意 :Java代码注释的话不要使用HTIML的注释!!!

一、JSP指令元素

指令元素概述

用于指示JSP执行的某些步骤
用于指示JSP变现特定行为

语法: <%@ 指令名称 属性名称=属性的值 属性名称=属性的值 %>

分类:
page指令 : 指示JSP的页面设置属性和行为
include指令 : 指示JSP包含哪些其他页面
taglib指令 : 指示JSP页面包含哪些标签库

page指令

语法: <%@ page 属性名=属性值 %>

Page指令用来定义JSP文件的全局属性。
这些属性可以单独使用,也可以几个或多个同时使用。
在JSP页面中,只有import 属性可以出现多次,其他属性都只能出现一次。

属性:

language属性:	 	声明使用脚本的语言。只能是java。
extends属性 : 		标明JSP编译成servlet 的时候继承的类。默认值:HttplspBase。
session属性: 		标明JSP中是否可以直接使用session对象。默认值是true。
buffer属性:   		标明JSP对客户端输出缓冲区大小。默认值8kb。
autoFlush属性:		如果缓冲区大小溢出,是否自动刷出。默认 trueimport属性:			用于导入Java包或类。
contentType属性:	标明JSP被浏览器解析和打开的时候采用的黑认的字符集。
pageEncoding属性:	JSP文件及JSP翻译后的Servlet保存到硬盘上采用字符集。
isErrorPage属性:	处理JSP页面异常。
errorPage属性:		处理JSP页面异常。
isELIgnored属性:	通知JSP是否忽略EL表达式。

include指令

语法: <%@ include 属性名=属性值 %>

在JSP页面中静态包含一个文件,同时由该JSP解析包含的文件内容。

属性:

file属性: 指示JSP页面包含页面路径。

应该将被包含的页面的结构去掉。
在被包含的页面中定义变量,在包含的页面中还可以使用。

举个例子:
demo1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h1>上面定义变量</h1>
<% 
	int i = 3;
%>

demo2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file="demo1.jsp" %>
<%= i %>
<%@ include file="demo3.jsp" %>
</body>
</html>

demo3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h1>下面的copy</h1>

运行后,如下图:
在这里插入图片描述

原理:
在这里插入图片描述

taglib指令

用于在JSP页面中引入标签库。

语法: <%@ include 属性名=属性值 %>

属性:

uri属性 : 引入的标签库的路径
prefix属性 : 引入标签库的别名

二、内置对象

JSP的内置对象:指的是可以直接在JSP页面中使用的对象。

九大内置对象:
request : 从客户端向服务器发送的请求对象 HttpServletRequest
response : 从服务器端向客户端作出响应对象 HttpServletResponse
session : 服务器为客户端创建会话对象 HttpSession
application : 代表应用。获得的servletContext对象。 ServletContext
out : 向输出流写入内容的对象。 servletConfig
page : 当前的JSP翻译成 Servlet后的对象的引用。 Objecte
pageContext : 本JSP的页面的上下文对象。 PageContext
config : 本JSP的Servletconfig对象。 JspWriter
exception : 表示JSP页面运行时产生的异常对象。 Throwable

pageContext

pageContext 对象直接翻译为“页面上下文”对象,代表的是当前页面运行的一些属性。它是javax.servlet.jsp.pageContext类的实例对象。

提供了page范围的数据存取的方法:
向page范围中存入数据 :
pageContext.getAttribute(arg0)
pageContext.setAttribute(name, value)
pageContext.removeAttribute(name)

通过这个对象获得其他的8个内置对象: getXxx 方法。

JSP四个作用范围

PageScope : 页面范围。
页面范围指的是在当前的页面内有效,出了这个页面,用pageContext保存的数据就无效了。

RequestScope : 请求范围。
从客户端向服务器发送一次请求,服务器对这次请求作出了响应之后,用request保存的数据就无效了。

SessionScope : 会话范围。
每个浏览器向服务器发送请求(多次请求)。将该会话结束。

ApplicationScope :应用范围。
在整个应用中任意的地方都可以获取。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSP的四个作用范围</h1>
<h3>page范围(pageContext)</h3>
<%
	pageContext.setAttribute("name", "张三");
	//可以使用pageContext去存数据
	pageContext.setAttribute("name", "李四", pageContext.REQUEST_SCOPE);
	//request.setAttribute("name", "李四");
	pageContext.setAttribute("name", "王五", pageContext.SESSION_SCOPE);
	//session.setAttribute("name", "王五");
	pageContext.setAttribute("name", "赵六", pageContext.APPLICATION_SCOPE);
	//application.setAttribute("name", "赵六");
%>
<h1>当前页面获取值</h1>
<%= pageContext.getAttribute("name") %>
<%= request.getAttribute("name") %>-<%= pageContext.getAttribute("name", pageContext.REQUEST_SCOPE) %>
<%= session.getAttribute("name") %> <%--方法同上,修改scope即可--%>
<%= application.getAttribute("name") %>

<h1>findAttribute方法</h1>
<%= pageContext.findAttribute("name") %><br/>
</body>
</html>

findAttribute方法

查找属性方法:先根据小范围的名称进行查找,如果找到了就返回,如果没有找到就会去比其大一个域的范围进行查找。

三、JSP的动作标签

JSP的动作标签用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接编写Java代码,造成JSP页面难以维护。

<jsp:forward/> :请求转发。
例子:demo1中有 :<jsp:forward page="web_test/demo2.jsp"></jsp:forward>
效果 : 地址栏是demo1内容是demo2

<isp:include/>:包含(动态包含)。
例子:demo1中有 : <jsp:include page=" /web_test/demo2.jsp"></jsp:include>
效果 : demo1中引用了demo2的内容

<isp:param/>:传递参数。存值取值一般被request.getAttribute("name")取代

动态包含原理:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值