JAVA WEB篇3——JSP

1、JSP是什么

  • JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为 xxx.jsp

  • 与Servlet不同,JSP文件以HTML标记为主,然后内嵌Java代码段,用于处理动态内容

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>Hello Time</title></head><body>现在的时间是:<%= new Date()%></body>
</html>

2、JSP与Servlet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-39HZhKDf-1626687359596)(C:\Users\yoya\AppData\Roaming\Typora\typora-user-images\image-20210719162503916.png)]

3、JSP模块概述

  • 声明区
  • 程序代码区
  • 表达式
  • 注释
  • 指令和动作
  • 内置对象

4、JSP声明区

可以定义全局变量、方法、类

<%!int i;public void setName(){… …}
%>

5、JSP程序代码区

可以定义局部变量以及放入任何的Java程序代码

<%int j;for (int k=0; k<10; k++) {… …}
%>

6、JSP表达式

可以输出一个变量或一个具体内容,但=后面必须是字符串变量或者可以被转换成字符串的表达式

不需要以;结束,只有一行

<%=“hello world”%>
<%=i+1%>

7、JSP注释

格式:
<!--… …--> HTML文件的注释,浏览器可以查看到
<%--… …--%> JSP文件的注释,浏览器看不到
<%//… …%> Java语言中的单行注释,浏览器看不到
<%/*… …*/%> Java语言中的多行注释,浏览器看不到
注释的内容不会被执行

8、JSP指令

指令格式: <%@指令 属性=“属性值” 属性=“属性值” %>

8.1、page指令

page指令用于导包和设置一些页面属性

import 导入相应的包,惟一允许在同一文档中多次出现的属性
contentType 设置Content-Type响应报头,标明即将发送到浏览器的文档类型
pageEncoding 设置页面的编码
language 指定页面使用的语言
session 控制页面是否参与HTTP会话
errorPage 处理当前页面中抛出但未被捕获的任何异常
isErrorPage 当前页是否可以作为其他页面的错误处理页面

8.2、taglib指令

taglib指令用来扩展JSP程序的标签元素,引入其他功能的标签库文件

<!-- prefix属性用于指定库前缀 -->
<!-- uri属性用于指定库的标识 -->
<%@taglib uri=“tagLibary” prefix=“prefix”%>

8.3、include指令

include指令用于引入另一个JSP程序或HTML文件

<%@include file=“被包含的文件地址%>

9、JSP动作

9.1、jsp:include

  • include指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入再编译执行(静态包含)
  • include动作在转换时期是不会被编译的,只有在客户端请求时期被执行到才会被动态的编译载入 (动态包含,推荐)
<jsp:include page=“URLSpec” flush=“true”/><jsp:include page=“URLSpec” flush=“true”>  <jsp:param name=“key” value=“value”/></jsp:include>

9.2、jsp:forward

forward动作用于在JSP中实现转发,将请求转发到另一个指定的JSP程序或者Servlet中处理,转发后可以用request来捕获参数

<jsp:forward page=“urlSpec” flush=“true”/><jsp:forward page=“urlSpec”><!-- 用于指定参数和其对应的值 --><jsp:param name=“key” value=“value”/></jsp:forward>

10、JSP内置对象

  • 在JSP程序中有9个内置对象由容器为用户进行实例化,程序员可以不用定义就直接使用这些变量
  • 在JSP转换成Servlet后,会自动追加这些变量的定义,使用内置对象可以简化JSP的开发
对象变量 对象类型 作用
out JSPWriter 输出流
request HttpServletRequest 请求信息
response HttpServletResponse 响应信息
session HttpSession 会话
application ServletContext 全局的上下文对象
pageContext PageContext JSP页面上下文
page Object JSP页面本身
config ServletConfig Servlet配置对象
exception Throwable 捕获网页异常

10.1、out

out内置对象是一个缓冲的输出流,用来给客户端输出信息

方法声明 功能介绍
void println(String x) 向客户端输出各种类型数据
void newLine() 输出一个换行符
void close() 关闭输出流
int getBufferSize() 返回缓冲区的大小
int getRemaining() 返回缓冲区中未使用的字节数
void flush() 输出缓冲区里的数据
void clearBuffer() 清除缓冲区里的数据,同时把数据输出到客户端
void clear() 清除缓冲区里的数据,但不把数据输出到客户端

10.2、request

request对象封装的是调用JSP页面的请求信息,它是HttpServletRequest接口的一个实例,该对象的属性值只在一个请求中保存。

方法声明 功能介绍
String getMethod() 返回客户端向服务器端传送数据的方式
String getParameter(String name) 返回客户端向服务器端传送的参数值
String[] getParameterValues( String name) 获得指定参数的所有值
String getRequestURI() 获得请求地址
String getRemoteAddr() 返回发送请求的客户端或最后一个代理的IP地址
int getRemotePort() 返回发送请求的客户端或最后一个代理的端口号
String getServerName() 获取服务器的名字
int getServerPort() 获取服务器端的端口
void setAttribute(String name,Object o) 在此请求中存储属性。属性在请求之间重置
Object getAttribute(String name) 将指定属性的值作为对象返回,若不存在则返回空值

10.3、 response

response对象用于给客户端相应输出处理结果,它是HttpServletResponse接口的一个实例,经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码 URL

方法声明 功能介绍
void addCookie(Cookie cookie) 添加一个Cookie对象,用于在客户端保存特定的信息
void addHeader(String name, String value) 添加HTTP头信息,该Header信息将发送到客户端
boolean containsHeader(String name) 判断指定名字的HTTP文件头是否存在
void sendRedirect(String location) 重定向JSP文件
void setContentType(String type) 设置类型与编码方式

10.4、session

  • session对象表示浏览器和服务器之间的一次会话,一次会话可以包含多次请求,在多次请求之间 可以借助session对象存储信息,它是HttpSession类型的一个实例
  • 该对象的属性值在一次会话范围中保存,保存在服务器端,只要不关闭浏览器,默认半个小时内都 可以访问
方法声明 功能介绍
void setAttribute(String name, Object value) 使用指定的名称将对象绑定到此会话
Object getAttribute(String name) 返回在此会话中用指定名称绑定的对象,如果没有对象在该 名称下绑定则返回空值

10.5、 application

application对象是一个web程序的全局变量,它是ServletContext类型的一个实例,在整个服务器上保存数据,所有用户共享

方法声明 功能介绍
void setAttribute(String name, Object object) 将对象绑定到此servlet上下文中的给定属性名
Object getAttribute(String name) 返回给定名称的

10.6、pageContext

pageContext对象是PageContext类型的对象,可以使用这个对象来管理其他的隐含对象。 只在一个页面中保存数据。

方法声明 功能介绍
void setAttribute(String name, Object value, int scope) 使用适当的作用域设置指定的名称和值
Object getAttribute(String name, int scope) 返回指定作用域中名称关联的对象,若找不到 则返回null
ServletRequest getRequest() 获取请求对象
ServletResponse getResponse() 获取响应对象
HttpSession getSession() 获取会话对象
ServletConfig getServletConfig() 获取配置对象
JspWriter getOut() 获取输出对象
Object getPage() 获取页面对象
Exception getException() 获取异常对象

10.7、exception

exception 对象是Throwable的实例,表示的是JSP的异常信息,如果要使用它,必须将对应页面page指令的isErrorPage属性设置成true。

单页处理

<%@page errorPage="error.jsp" %>

统一处理

<error-page><exception-type>java.lang.Throwable</exception-type><location>/error.jsp</location>
</error-page>

11、EL表达式

EL(Expression Language)表达式提供了在JSP中简化表达式的方法,可以方便地访问各种数据 并输出

11.1、访问内置对象的数据

<%=request.getAttribute(“ varName”)%>
用EL实现: ${ varName }

11.2、访问请求参数的数据

request.getParameter(name);
request.getParameterValues(name);
<!-- 获取指定参数的数值 -->
${param.name}
<!-- 获取指定参数中指定下标的数值 -->
${paramValues.hobby[0]}

11.3、访问Bean对象的属性

<%
request.setAttribute(“prop”,“age”);
%>
<!-- 相当于表达式中写一个变量 -->
${ user[prop] }

11.4、访问集合的属性

<!-- student为ArrayList类型的对象 -->
${student[0].name}

11.5、内置对象

类别 标识符 描述
JSP pageContext PageContext处理当前页面
作用域 pageScope 同页面作用域属性名称和值有关的Map类
requestScope 同请求作用域属性的名称和值有关的Map类
sessionScope 同会话作用域属性的名称和值有关的Map类
applicationScope 同应用程序作用域属性的名称和值有关的Map类
请求参数 param 根据名称存储请求参数的值的Map类
paramValue 把请求参数的所有值作为一个String数组来存储的Map类
请求头 header 根据名称存储请求头主要值的Map类
headerValues 把请求头的所有值作为一个String数组来存储的Map类
Cookie cookie 根据名称存储请求附带的cookie的Map类
初始化参数 initParam 根据名称存储Web应用程序上下文初始化参数的Map类

11.6、运算符

算术运算符 说明 范例 运算结果
+ ${1+2} 3
- ${2-1} 1
* ${2*3} 6
/或div $ {16/5}或${16div5} 3.2
%或mod 取余 $ {16%5}或${16mod5} 1

11.7、关系运算符

算术运算符 说明 范例 运算结果
==或eq 等于 1==2或{1==2}或1==2或{1 eq 2} false
!= 或ne 不等于 2!=1或{2!=1}或2!=1或{1 ne 2} true
< 或lt 小于 2<3或{2<3}或2<3或{2 lt 3 } true
>或 gt 大于 16>5或{16>5}或16>5或{16 gt 5} true
<=或le 小于等于 16<=5或{16<=5}或16<=5或{16 le 5} false
>=或ge 大于等于 16>=5或{16>=5}或16>=5或{16 ge 5} true

11.8、逻辑运算符

算术运算符 说明 范例 运算结果
&& 或 and 与运算 KaTeX parse error: Expected '}', got '&' at position 6: {true&̲&true}或{true and true} true
||或or 或运算 true∥∥false或{true\|\|false}或true∥∥false或{true or false} true
! 或not 非运算 !true或{!true}或!true或{not true } false

11.9、条件运算符

${条件表达式? 语句1 : 语句2}

11.10、验证运算符

${empty 表达式}
返回布尔值判断表达式是否为"空"值,null值、无元素的集合或数组、长度为零的String被认为是空值

12、JSTL

JSTL( JSP Standard Tag Library ) 被称为JSP标准标签库,开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度

jstl 官网:https://tomcat.apache.org/download-taglibs.cgi

12.1、输出标签

<c:out></c:out> 用来将指定内容输出的标签

12.2、设置标签

<c:set></c:set> 用来设置属性范围值的标签

12.3、删除标签

<c:remove></c:remove> 用来删除指定数据的标签

12.4、单条件判断标签

<c:if test =“EL条件表达式”>
满足条件执行
</c:if >

12.5、多条件判断标签

<c:choose ><c:when test =“EL表达式”>满足条件执行</c:when>…<c:otherwise>不满足上述when条件时执行</c:otherwise>
</c:choose >

12.6、循环标签

<c:forEach var=“循环变量” items=“集合”>
…
</c:forEach>

12.7、自定义标签

待补

JAVA WEB篇3——JSP相关推荐

  1. JAVA WEB篇4——Filter、Listener

    JAVA WEB篇4--Filter.Listener 1.Filter Filter本意为"过滤"的含义,是JavaWeb的三大组件之一,三大组件为:Servlet.Filter ...

  2. JAVA WEB篇2——Servlet

    JAVA WEB篇2--Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写 的服务器端程序,换句话说,Serv ...

  3. JAVA WEB篇1——初识JAVAWEB

    JAVA WEB篇1--初识JAVAWEB JavaWeb主要指使用Java语言进行动态Web资源开发技术的统称,是解决相关Web互联网领域的技术总和 1.Http协议 HTTP协议(HyperTex ...

  4. java web学习笔记-jsp篇

    转载自:http://www.cnblogs.com/happyfans/archive/2015/03/17/4343571.html 1.java web简介 1.1静态页面与动态页面   表现形 ...

  5. Java Web入门之JSP的基本语法解析及实战(超详细 附源码)

    创作不易觉得有帮助请点赞关注收藏~~~ JSP页面是指扩展名为.JSP的文件  在一个JSP页面中 可以包括指令标识 HTML代码 JavaScript代码 嵌入的JAVA代码 注释和JSP动作标识等 ...

  6. Java Web中的jsp技术

    在动态网页开发中,经常需要动态生成html内容,如果使用servlet来实现html页面数据的改变会导致程序十分臃肿.为了克服这些缺点,Oracle(Sun)公司推出了jsp技术. JSP全名是Jav ...

  7. Java web后端5 JSP技术

    JSP概述 HTML代码与Java代码共同存在 浏览器中显示 启动Tomcat 浏览器访问:http://localhost:8083/JSPWeb_war_exploded/hello.jsp &l ...

  8. Java web速成之jsp

    一.JSP简介 1.1 jsp运行和环境搭建 1.知识目标 (1)能够叙述Java web的发展历程: (2)能够描述JSP引擎在JSP中的作用: (3)能够描述Web服务目录的作用: (4)能够描述 ...

  9. 在java web工程中jsp页面中使用kindeditor

    在这之前我们用Notepad++写过kindeditor 在Java web工程里也差不多 首先我们复制之前的thml代码粘贴到工程里 然后把样式也复制进去 然后就可以运行了 转载于:https:// ...

最新文章

  1. linux top cpu核数查看,Linux怎么查看CPU核数?
  2. shell中常用系统变量和条件判断
  3. eeglab教程系列(9)-选择数据的epochs并进行比较
  4. 导出txt文件宏_XLM宏反混淆工具:提取和反混淆XLM宏
  5. java runnable wait_面试官:都说阻塞 I/O 模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?...
  6. [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
  7. anaconda中的python如何进行关联分析_Anaconda、Miniconda、Conda、pip的相互关系
  8. mate7安装android o,华为Mate7升级安卓6.0详细教程
  9. php实现笔记共享,[转载]利用memcached在多台服务器之间共享PHP的session数据
  10. 文件下的所有文本内容转为一个csv文件代码
  11. UIImageView 与 UIImage 区别
  12. 语音识别系统报告_2018-2024年中国语音识别系统行业市场发展格局及投资价值评估研究报告_中国产业信息网...
  13. python list列表的乘除法
  14. 【知乎问答】有哪些特殊的搜索引擎?
  15. 超燃动态可视化条形图源码及效果图_HTML5大数据可视化效果(一)彩虹爆炸图...
  16. 医学影像开源数据集汇总
  17. marlin固件烧录教程_i3型3D打印机制作详解――Marlin固件介绍
  18. 流媒体技术笔记(视频编码相关)
  19. android queries属性
  20. 传记-《杰克·韦尔奇自传》书中的精髓:杰克·韦尔奇如何利用自己的智慧,推动通用电气从优秀走向卓越的?

热门文章

  1. java的equals方法_Java Date equals()方法与示例
  2. java timezone_Java TimeZone setID()方法与示例
  3. Java DataInputStream readUnsignedByte()方法(带示例)
  4. php脚本开头注释_PHP文件注释标记及规范小结
  5. python运维开发培训_运维架构师-Python 自动化运维开发-014
  6. 华为鸿蒙系统正式登场,华为自研鸿蒙系统将于8月9日正式登场,还有全新的鸿鹄芯片...
  7. 华为linux版笔记本安装win7,华为MateBook X Pro笔记本怎样安装win7系统
  8. linux文件什么权限比较安全,linux文件安全与权限
  9. nextboolean()_Java Random nextBoolean()方法与示例
  10. Java FilterInputStream skip()方法与示例