JSP
什么是JSP?
Java Server pages:java服务器端页面,和Servlet一样,用于动态web技术
最大的特点:
- 写jsp就像在写HTML
- 区别:
- HTML只能提供静态数据,
- JSP页面可以嵌入java代码,为用户提供动态数据
JSP原理
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问servlet
项目中jsp文件在本机下载tomcat目录(或idea的tomcat目录中) work目录下文件中的jsp文件
-
JSP最终会被转为java类
-
JSP本质就是一个servlet
-
例如一个jsp文件中的“”一行在最终转换的java文件可能被转换为“out.write(“n”)”,当然这只是该java文件中的一小部分。但是至少反映了jsp的作用:减少程序员的代码量,减少繁琐的过程
-
servlet(jsp转换的java文件)中关于jsp的方法:!
-
jsp最终转换的java文件中的步骤:
-
判断请求
-
内置对象
-
- 输出页面前相关设置
以上对象我们可以在写jsp时直接用
- 输出我们写的页面
原理图:
在jsp中:只要是java代码就会原封不动,html格式out.write(html代码)进行转换
JSP基础语法和指令
JSP基础语法
学习前我们需要在pom.xml中导入四个依赖:
javax.servlet
javax.servlet-api
4.0.1
provided
javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
provided
javax.servlet.jsp.jstl
jstl-api
1.2
taglibs
standard
1.1.2
- JSP表达式:
--%>
- JSP脚本片段:
sum="+sum+"");
%>
sum="+sum+"");
%>
- 脚本片段的再实现:
Hello World
html和jsp脚本片段可以来回嵌套
- JSP声明
JSP声明会被编译到jsp生成的java类中!而其他的会被生成到一个其中_jspService方法中
所以,jsp的层级会相比其他高一些
JSP指令
-
三种指令标签:
- :定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
- :包含其他文件
- :引入标签库的定义
-
page:相关属性
例如:
Title
另外还有可以再web.xml中定制错误页面:
发生404错误时
404
/error.jsp
发生500错误时
500
/error2.jsp
-
include:通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
Include指令的语法格式如下:
例子:
会将几个页面合二为一
Hello World
jsp标签:
拼接页面,本质还是三个
Hello World
还有其他jsp标签:例如 -
taglib:Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。语法:
九大内置对象
-
request
-
response
-
pageContext
-
page
-
session
-
application [servletContext]
-
out
-
exception
-
config [servletConfig]
request:客户端向服务器发生请求,存储用户看完了就没用的,比如新闻
session:客户端向服务器发生请求,用户看完一会还有用,如购物车
application::客户端向服务器发生请求,产生的数据一个用户用完了,其他用户还需要用的,比如:聊天数据
EL表达式
四大作用:
- 获取数据
- 执行运算
- 获取web开发常用对象
- 调用java方法
${a}
JSP标签
在error.jsp中得到传递的参数
名字:
年龄:
这只是一个例子:jsp还有很多,可以自行查阅
JSTL表达式
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。定义了许多标签弥补一定html标签的不足。
引用核心标签库的语法如下:
核心标签有:
还有sql标签,xml标签等
可以参考JSP 标准标签库(JSTL) | 菜鸟教程 (runoob.com)
使用JSTL标签步骤:
- 引入对应taglib
- 使用其中的方法
在导入jstl核心标签库发现出错,最终手动将D:Mavenapache-maven-3.6.3-binapache-maven-3.6.3maven-repojavaxservletjstl1.2中的jstl-1.2.jar包复制粘贴到tomcat中D:tomcatapache-tomcat-9.0.75-windows-x64apache-tomcat-9.0.75lib解决,可能是因为tomcat和maven的版本冲突
c:if例子:
Title
结果:
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com