概念
Java Server Pages:java服务器端页面
可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码(所以得先学HTML和JAVA)
用于简化书写!!!
原理
JSP本质上就是一个servlet
在浏览器中输入url访问后,服务器首先会将目的jsp进行转化,转化成java代码,然后再编译成class文件,由class字节码文件来提供访问。(所以修改了jsp文件后不需要重启服务器,只需刷新页面就可以实现更新)
JSP脚本
JSP定义Java代码的方式
1 | <%代码%):定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。 |
指令
作用:用于配置]Sp页面,导人资源文件
格式:
1 | <%@指命名称属性名1=属性值1属性名2-属性值2...%) |
分类:
page
page指令用来配置JsP页面
contentType:等同于response.setcontentType()
1)设置响应体的mime类型以及字符集
2)设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
import:用来导包
errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
isErrorPage:标识当前也是是否是错误页面。
true:是,可以使用内置对象exception
false:否。默认值。不可以使用内置对象exception
include
负面包含的。导人页面的资源文件
1 | <%@include file="top.jsp”%> |
taglib
指令用来导人资源(其他标签)
1 | <%taglib prefix="c"uri="http://java.sun.com/jsp/jst1/core“%> |
注释:
html注释:
1 | <!-- -->:只能注释html代码片段 |
jsp注释:推荐使用
1 | <%-- --%>:可以注释所有 |
JSP的内置对象:
在jsp页面中不需要获取和创建,可以直接使用的对象
jsp一共有9个内置对象。
变量名|对应类型|作用范围
-|-|-
pageContext|Pagecontext|当前页面共享数据,还可以获取其他八个内置对象
request|HttpservletRequest|一次请求访问的多个资源(转发)一次会话的多个请求间
session|HttpSession|一次会话的多个请求间
application|servletcontext|所有用户间共享数据
response|HttpservletResponse|响应对象
page|Object|当前页面(servlet)的对象 this
out|JspWriter|输出对象,数据输出到页面上
config|ServletConfig|servlet的配置对象
exception|Throwable|异常对象
最基本三个对象:request,response,out。
out:字符输出流对象。可以捋数据输出到页面上。和response.geturiter()类似
response.geturiter()和out.write()的区别:
在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
response.getwriter()数据输出永远在out.write()之前
MVC模式
EL表达式
概念
Expression Language表达式语言
作用
替换和简化jsp页面中java代码的编写
语法
${表达式}
注意:jsp默认支持e1表达式的。如果要忽略e1表达式
1.设置jsp中page指合中:isELIgnored=”true”忽略当前jsp页面中所有的e1表达式
2.${表达式}:忽略当前这个e1表达式
使用
运算
1)算数运算符:+-*/(div)%(mod)
2)比较运算符:><>=<===!=
3)逻辑运算符:&&(and)ll(or)!(not)
4)空运算符:empty
功能:用于判断字符串、熊合、数组对象是否为nul1并且长度是否为e
${empty list}
获取值
1)el表达式只能从域对象中获取值
2)语法:
1 | ${域名称.键名}:从指定域中获取指定键的值 |
域名称(范围从小到大):
1.pagescope–>pagecontext
2.requestScope–>request
3.sessionscope–>session
4.applicationscope–>application(servletcontext)
获取对象、List集合、Map集合的值
1.对象:${域名称.键名。属性名}
本质上会去调用对象的getter方法(比如getName()属性名就是get后面的Name变小写后的name)
2.List集合:${域名称.键名[索引]}
3.Map集合:
${域名称.键名.key名称}
$[域名称,键名[“key名称”]}
隐式对象
el表达式中有11个隐式对象T
pageContext:获取jsp其他几个内置对象
1 | ${pagecontext.request.contextPath}:动态获取虚拟目录 |