浅谈JSP的那些事

1.概述
在 Servlet中书写后台逻辑代码和前台页面代码,十分复杂,如果页面构成繁琐,
则servlet编写有很大难度。于是sun公司提供一种可以在页面中书写HTML和Java代
码的技术。这门技术简化了前台和后台代码的切换操作,提升了开发的便利性。
这门技术就是JSP。JSP是Sun公司提供的一门动态资源开发技术。

2.原理
a.jsp页面在第一次被访问的时候,会被jsp翻译引擎翻译为一个Servlet文件。其中页
面的HTML和Java代码全部包含在文件内。访问jsp页面,就是访问这个Servlet文
件,会使其中的Service()方法执行。
b. index_jsp.java文件内的类继承了HttpJspBase.HttpJspBase是一个Servlet,所以当前类
也是一个Servlet

JSP语法
1.模板元素
语法:
页面中的html元素在被访问时,会被jsp翻译引擎翻译为模板元素。
在这里插入图片描述
页面中的模板元素,在翻译为servlet文件后,会以out.write()的方式输出到浏览器
中。

2.JSP脚本表达式
语法:<%=JSP脚本表达式%> 直接量或具有返回值的表达式request.getContextPath()
脚本表达式会被jsp翻译引擎翻译为表达式的结果值。
在这里插入图片描述

3.JSP脚本片段
语法:<%JSP脚本片段%>
脚本片段会被jsp翻译引擎翻译为java代码。
在这里插入图片描述
页面中的JSP脚本片段,在被翻译为servlet文件时,会被原封不动的翻译成java语
句,出现在servlet文件的对应位置。并且脚本片段可以书写成多个部分。每一个部
分都可以不完整。但是需要保证这些不完整的部分在翻译为servlet文件后,可以组
成完整的java代码,即可编写。

4.JSP声明
语法:<%!jsp声明%>
页面中的jsp声明,在被jsp翻译引擎翻译为servlet文件时,会变成成员变量或方法
在这里插入图片描述
jsp声明可以看做是整个类的变量和方法,如果需要调用,则可以在页面中的任意
位置调用。

5.JSP注释
语法:<%-- JSP注释 --%>
在这里插入图片描述

6.JSP指令
语法:<%@ 指令名称 属性名=“属性值”%>
<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
jsp指令本身不产生任何的输出,只是用来规定jsp翻译引擎如何翻译当前页面的。
注意:jsp指令可以出现在页面中的任意一行。
jsp指令可以在页面中多次出现。

a.jsp指令形式:
在这里插入图片描述
1)page指令:
声明当前jsp页面的基本属性。控制jsp翻译引擎如何翻译jsp到servlet。
在这里插入图片描述
2)include指令
<%@include file=“url”%>
引入其他页面

<body>
 <%@include file="/head.jsp" %>
 this is index
 <%@include file="/foot.jsp" %>
 </body>

3).taglib指令
<%@taglib uri="" prefix=""%>
引入外部的标签库

7.九大隐式对象
在jsp页面被翻译为servlet文件之后,有九个对象可以直接使用,又没有显式的定
义,所以这九个对象就称之为九大隐式对象
在这里插入图片描述
8.pageContext详解
pageContext代表的是当前jsp页面上下文的隐式对象。可以在jsp页面内直接调用。

a.pageContext功能一 作为其他八大隐式对象的入口
pageContext.getPage();—获取page隐式对象
pageContext.getRequest();—获取request隐式对象
pageContext.getResponse();—获取response隐式对象
pageContext.getSession();—获取session隐式对象
pageContext.getServletConfig();—获取config隐式对象
pageContext.getServletContext();—获取application隐式对象
pageContext.getException();—获取exception隐式对象
pageContext.getOut();—获取out隐式对象

b.pageContext功能二–作为域对象使用
域对象:如果一个对象身上有一个可以被看见的范围,在这个范围内利用对象
身上的map实现数据的共享,这个对象就可以称之为域对象。

操作api:
setAttribute(String name,Object obj);
getAttribute(String name);
removeAttribute(String name)
getAtrributeNames();

生命周期:
在访问jsp页面时,产生pageContext对象,生命周期开始。
在结束访问jsp页面是,pageContext对象销毁,生命周期结束。

作用范围:
整个jsp页面。

主要功能:
在整个jsp页面内共享数据。

例:案例操作pageContext域中属性

<h3>功能二--pageContext作为域对象使用</h3>
 <%
pageContext.setAttribute("name", "丽丽");
 %>
 <%=pageContext.getAttribute("name") %>

c.功能三–操作其他域中属性
setAttribute(String name Object obj,int scope);//scope
getAttribute(String name,int scope);
removeAttribute(String name scope);
getAttributeNamesInScope(int scope);

<h3>功能三--获取设置其他域中的值</h3>
 <%
 pageContext.setAttribute("country", "China", PageContext.APPLICATION_SCOPE);
 pageContext.setAttribute("country", "US", PageContext.SESSION_SCOPE);
 pageContext.setAttribute("country", "UK", PageContext.REQUEST_SCOPE);
 pageContext.setAttribute("country", "Canada", PageContext.PAGE_SCOPE);
 %>
 <%=pageContext.getAttribute("country", PageContext.APPLICATION_SCOPE) %>
 <%=pageContext.getAttribute("country", PageContext.SESSION_SCOPE) %>
 <%=pageContext.getAttribute("country", PageContext.REQUEST_SCOPE) %>
 <%=pageContext.getAttribute("country", PageContext.PAGE_SCOPE) %>

在这里插入图片描述
d.功能四—自动搜寻域
使用自动搜寻域,会由小到大的搜索四个域中指定名称的域属性。一旦在较小
范围内搜索到结果,则不会再向更大范围的域进行搜索。

<h3>自动搜寻域</h3>
 <%=pageContext.findAttribute("country") %>

e.功能五—便捷的请求转发
pageContext.forward(url);

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 2
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

Ajaxtxdy

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值