JAVA WEB篇3——JSP
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相关推荐
- JAVA WEB篇4——Filter、Listener
JAVA WEB篇4--Filter.Listener 1.Filter Filter本意为"过滤"的含义,是JavaWeb的三大组件之一,三大组件为:Servlet.Filter ...
- JAVA WEB篇2——Servlet
JAVA WEB篇2--Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写 的服务器端程序,换句话说,Serv ...
- JAVA WEB篇1——初识JAVAWEB
JAVA WEB篇1--初识JAVAWEB JavaWeb主要指使用Java语言进行动态Web资源开发技术的统称,是解决相关Web互联网领域的技术总和 1.Http协议 HTTP协议(HyperTex ...
- java web学习笔记-jsp篇
转载自:http://www.cnblogs.com/happyfans/archive/2015/03/17/4343571.html 1.java web简介 1.1静态页面与动态页面 表现形 ...
- Java Web入门之JSP的基本语法解析及实战(超详细 附源码)
创作不易觉得有帮助请点赞关注收藏~~~ JSP页面是指扩展名为.JSP的文件 在一个JSP页面中 可以包括指令标识 HTML代码 JavaScript代码 嵌入的JAVA代码 注释和JSP动作标识等 ...
- Java Web中的jsp技术
在动态网页开发中,经常需要动态生成html内容,如果使用servlet来实现html页面数据的改变会导致程序十分臃肿.为了克服这些缺点,Oracle(Sun)公司推出了jsp技术. JSP全名是Jav ...
- Java web后端5 JSP技术
JSP概述 HTML代码与Java代码共同存在 浏览器中显示 启动Tomcat 浏览器访问:http://localhost:8083/JSPWeb_war_exploded/hello.jsp &l ...
- Java web速成之jsp
一.JSP简介 1.1 jsp运行和环境搭建 1.知识目标 (1)能够叙述Java web的发展历程: (2)能够描述JSP引擎在JSP中的作用: (3)能够描述Web服务目录的作用: (4)能够描述 ...
- 在java web工程中jsp页面中使用kindeditor
在这之前我们用Notepad++写过kindeditor 在Java web工程里也差不多 首先我们复制之前的thml代码粘贴到工程里 然后把样式也复制进去 然后就可以运行了 转载于:https:// ...
最新文章
- linux top cpu核数查看,Linux怎么查看CPU核数?
- shell中常用系统变量和条件判断
- eeglab教程系列(9)-选择数据的epochs并进行比较
- 导出txt文件宏_XLM宏反混淆工具:提取和反混淆XLM宏
- java runnable wait_面试官:都说阻塞 I/O 模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?...
- [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
- anaconda中的python如何进行关联分析_Anaconda、Miniconda、Conda、pip的相互关系
- mate7安装android o,华为Mate7升级安卓6.0详细教程
- php实现笔记共享,[转载]利用memcached在多台服务器之间共享PHP的session数据
- 文件下的所有文本内容转为一个csv文件代码
- UIImageView 与 UIImage 区别
- 语音识别系统报告_2018-2024年中国语音识别系统行业市场发展格局及投资价值评估研究报告_中国产业信息网...
- python list列表的乘除法
- 【知乎问答】有哪些特殊的搜索引擎?
- 超燃动态可视化条形图源码及效果图_HTML5大数据可视化效果(一)彩虹爆炸图...
- 医学影像开源数据集汇总
- marlin固件烧录教程_i3型3D打印机制作详解――Marlin固件介绍
- 流媒体技术笔记(视频编码相关)
- android queries属性
- 传记-《杰克·韦尔奇自传》书中的精髓:杰克·韦尔奇如何利用自己的智慧,推动通用电气从优秀走向卓越的?
热门文章
- java的equals方法_Java Date equals()方法与示例
- java timezone_Java TimeZone setID()方法与示例
- Java DataInputStream readUnsignedByte()方法(带示例)
- php脚本开头注释_PHP文件注释标记及规范小结
- python运维开发培训_运维架构师-Python 自动化运维开发-014
- 华为鸿蒙系统正式登场,华为自研鸿蒙系统将于8月9日正式登场,还有全新的鸿鹄芯片...
- 华为linux版笔记本安装win7,华为MateBook X Pro笔记本怎样安装win7系统
- linux文件什么权限比较安全,linux文件安全与权限
- nextboolean()_Java Random nextBoolean()方法与示例
- Java FilterInputStream skip()方法与示例