JSP学习笔记

概念

Java Server Pages:java服务器端页面
可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码(所以得先学HTML和JAVA)
用于简化书写!!!

原理

JSP本质上就是一个servlet
在浏览器中输入url访问后,服务器首先会将目的jsp进行转化,转化成java代码,然后再编译成class文件,由class字节码文件来提供访问。(所以修改了jsp文件后不需要重启服务器,只需刷新页面就可以实现更新)

JSP脚本

JSP定义Java代码的方式

1
2
3
<%代码%):定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
<%!代码%>:定义的java代码,在jsp转换后的java类的成员位置。
<%=代码%>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

指令

作用:用于配置]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
2
3
4
${域名称.键名}:从指定域中获取指定键的值

举例:在request域中存储了name=张三获取:${requestscope.name}
${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
域名称(范围从小到大):

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}:动态获取虚拟目录

安利教学视频

bilibili真的只是个学习的地方