JSP基础
JSP基础
什么是JSP
- JavaServerPage
- Java服务页
- 本质上JSP是一个Servlet,但在使用中,更像是HTML
- 作用:
- 可以在页面中添加Java代码
- 所以,JSP更适合编写服务器端运行的界面
JSP基础
- 在JSP页中,可以有两种方式对代码的注释
- html注释
- 通过浏览器查看源码可以看到
- JSP注释
- <%%>
- 通过源码不可看到
- JSP操作方式
- 在HTML中插入Java代码(脚本元素)
- 有三种方式操作JSP脚本
- 声明
<%@ page import="static java.lang.System.out" %><%----%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>这是第一个JSP界面</h1>
<%!
Integer i = 9;
public Integer testJsp(){
Integer a = 3;
return a+i;
}
public void see(){
out.println(testJsp());
}
%>
- 表达式
<%@ page import="static java.lang.System.out" %><%----%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>这是第一个JSP界面</h1>
<%!
Integer i = 9;
public Integer testJsp(){
Integer a = 3;
return a+i;
}
%>
<form>
<input type="text" name="注意下面" value="注意下面">
<input type="text" value="<%=i%>"><br>
<input type="text" value="<%=testJsp()%>"><br>
</form>>
</body>
</html>
- 代码段
<%
for (int i = 0;i<100;i++){
out.print("<button>按钮</button>");
}
%>
Properties操作
- 在Java语言中提供了一个访问资源文件的工具类
- 称为Properties,该类可以实现程序运行时刻加载外部文件数据的功能
- 如果是在Web资源中加载properties文件,不能使用load(new FileInputStream("文件")),因为这种方式从Java项目目录下找properties文件
- 应该使用下面的方式
- 类实例:getClassLoad().getResourceAsStream("web资源下的properties文件")
- 这种方式是在Web资源中加载properties文件而不是从Java目录下加载
JSP指令
- 配制指令
- 通过page指令,来设置JSP页面的属性
- page指令格式
- <%@ 属性名称-=属性值%>
- page指令共有十一个属性
- info -- 当前页面的描述
- language -- 当前页面使用语言
- ContextType = "text/html;charset=UTF-8" -- 可以设置当前页面的类型与所使用的字符集
- extends -- 父类
- import -- 导入工具包
- session--指定当前页面是否支持session对象
- buffer -- 设置页面缓冲区大小,默认是8KB
- autoFlush -- 设置页面缓冲区是否自动刷新,默认是true
- isThreadSafe -- 是否是线程安全的,默认是线程不安全的
- isErrorPage -- 设置当前页面是否为错误页,默认是true
- isELIgnored -- 当前页面是否支持ELI表达式,默认true
- errorPage -- 指定错误页
- include指令
- 此指令是用来包含其他页面的
- taglib指令
- 此指令是用来包含(导入)标签指令库
JSP内置对象
- 内置对象也被称为隐藏对象
- 内置对象就是不用定义,可以直接使用的对象
- 内置对象
- out
- request
- response
- session
- application
- page
- pageContext -- 页面上下文对象,生命周期是一个页面,主要是用来获取内置对象
- exeception
- config
JSP的作用域对象
- 什么是作用域
- JSP对象可以活动的区域,称为"作用域"
- JSP的作用域对象
- page -- 当前页
- request -- 当前次的请求
- getParameter()和set/getAttribute()区别
- getParameter -- 如果数据来源于请求体
- set/getAttribute -- 如果数据来源与非标单或请求体
- session -- 当前次会话
- application -- 当前应用
- 需要注意的是,在使用有作用域对象存储数据时,一定要确定数据的有效范围,来决定使用哪一个作用域对象进行操作
EL表达式
- 什么是EL表达式
- EL:expression language
- 作用:在JSP中通过一个简单的表达式来操作各个作用域对象的数据
- EL表达式的格式
- $(表达式)
- 语义
- 从当前page作用域开始查询对象,如果没有找到数据,再依次到request、session、application作用域中进行查找,如果都找不到,返回NULL
- 在使用EL表达式时的两种方式
- ${访问的的属性名称}
- 需要逐级查找。从各个作用域中进行查找指定属性,如果没找到,返回NULL
- 如果同一属性出现在不同作用域,那么,取最小作用域中的属性
- ${作用域对象.属性名称}
- 不需要逐级查找,直接定位到指定的作用域对象中查找,如果没找到,则返回NULL
- 访问属性成员操作符
- .
- 对象.属性
- []
- 对象[属性]
- 如果属性名称含有特殊符号,可以使用[]进行访问
- 集合/数组
- [对象.get(索引)]
- [对象[索引]]
- 在使用.操作符时,有时候无法正常识别属性名称,需要改用[属性名称]进行调用。在使用EL操作复杂数据结构时,可以尝试Java的方式进行调用
- EL表达式语法
- 算数运算符
- 逻辑运算符
- 条件运算符
- 其他运算符
- 三目运算符
- empty
- ...等
- EL表达式中的对象
- pageContext
- pageScope
- requestScope
- sessionScope
- applicationScope
- param
- paramValues
- header
- headerValues
- cookie
- initparam
JSTL
- 什么是JSTL(我喜欢叫他。。。。就是偷懒【手动滑稽】)
- JSTL是标准的标记库
- Java server page standard tag library
- 简单来说:就是在JSP页面提供一个类似于HTML的标签,但是功能更强大,Tomcat处理标签时,可以转换为Java代码,这样在JSP页面可以不需要写Java代码
- JSTL标记库的结构
- 核心标签库
- C(http://java.sun.com/jsp/jstl/core)库
- 格式化标签库
- fmt库
- sql标签库
- sql库
- 操作SQL
- XML标签库
- xml库
- 操作xml
- 函数标签库
- fn库
- 提供了一些功能函数,直接调用即可
- 如何使用JSTL
- 在JS中使用JSTL库是需要<%@taglib%>导入的
- 两个必须操作的属性
- prefix
- 当前库的前缀
- 访问库标签时,需要使用前缀调用
- url
- 库地址
- 根据地质找到库,然后可以使用这个库中的标签
- <%@taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" %>
- JSTL常用的标记
- 核心标签库
- <'c:out'>
- 此标签是用于输出,向页面输出数据
- 格式:<'c:out value="" default=""escapeXml=""'>
- value:向页面输出数据
- default:如果value属性中没有数据,name默认输出此属性中的数据
- escapeXml:是某解析显示数据中的标签,默认是false
- <'c:set'>
- 此标签主要是用来定义变量和对象
- 类似使用<%定义变量和对象%>
- 格式:<'c:set var=""scopr=""target=""property=""'>
- var:变量名称或者对象的名称
- value:变量值
- scope:变量或对象的作用域
- target:目标对象
- property:目标对象下的属性
- c:if
- 称为单分支
- 类似于Java中的if语句
- 格式:<'c:if test=""var=""scope=""'>
- test:判断表法师,最终属性要一个boolean值
- var:为test最终的结果定义一个变量
- scope:将var变量存放到哪个作用域下
- 这里没写完
- <'c:choose'>
- 称为多分支
- 结合<'c:when'>,<'c:otherwise'>使用
- 格式<'c:choose'><'c:when test="<'boolean'>"'><'/c:choose'>
- 这里也没写完
- c:coreach
- 循环本身
- 类似于Java中的for循环
- 迭代集合
- 格式化标签库
- 对各种数据进行格式化
- fmt -- 格式化时间
- 函数标签库
- 与Java中的String类提供的方法类似
- 在JSTL标签库中,只有函数标签库不能单独使用,必须在EL表达式中使用
Servlet与JSP通讯
- Servlet作用
- Servlet称为"控制器"
- 主要作用是用来处理用户的请求与响应
- JSP作用
- JSP称为"视图"
- 主要的作用是将后端处理的数据显示到页面中
如有问题,请发送邮件至buxiaqingcheng@163.com或者buxiaqingcheng@dingtalk.com
浙公网安备 33010602011771号