一、jsp基础部分
1、介绍
概念
JSP(Java Server Page),java服务器端页面,可以定义html标签,又可以定义java代码。
原理
JSP本质上就是一个Servlet
2、JSP定义Java代码的方式
:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
:定义的java代码,在jsp转换后的java类的成员位置。
:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
3、注释
html注释:
只能注释html代码片段
jsp注释:推荐使用
可以注释所有
4、指令
作用
用于配置JSP页面,导入资源文件
格式
分类
1、page:用来配置JSP页面的
1、contentType:等同于response.setContentType()
高级的IDE才能生效,设置响应体的mime类型以及字符集
低级工具,需要设置pageEncoding属性设置当前页面的字符集
2、import:导包
3、errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
4、isErrorPage:标识当前也是是否是错误页面,默认为false,表示不可以使用内置对象exception
Title服务器正忙...
String message = exception.getMessage();
out.print(message);
%>
2、include:页面包含的。导入页面的资源文件
3、taglib:引入标签库的定义,如jstl
5、JSP的内置对象(9个)
jsp页面中不需要获取和创建,可以直接使用的对象,他们分别是:
变量名
真实类型
作用
request
HttpServletRequest
一次请求访问的多个资源(转发)
response
HttpServletResponse
响应对象
response
JspWriter
输出对象,数据输出到页面上。和response.getWriter()类似,区别是response.getWriter()数据输出永远在out.write()之前
pageContext
PageContext
当前页面共享数据,还可以获取其他八个内置对象
session
HttpSession
一次会话的多个请求间
application
ServletContext
所有用户间共享数据
page
Object
当前页面(Servlet)的对象 this
config
ServletConfig
Servlet的配置对象
exception
Throwable
异常对象,需要使用page指令的isErrorPage属性为true
jsp文件中获取application context: ${pageContext.request.contextPath}
二、jsp高级部分
1、EL表达式
介绍
Expression Language 表达式语言,用于替换和简化jsp页面中java代码的编写
语法及注意事项
${表达式}
注意:jsp默认支持el表达式,如果要忽略el表达式:
1、设置jsp中page指令中:isELIgnored="true" 忽略当前jsp页面中所有的el表达式。
2、${表达式} :忽略当前这个el表达式。
使用
运算符类型
运算符
功能
算数运算符
+ - * /(div) %(mod)
比较运算符
> < >= <= == !=
逻辑运算符
&&(and) ||(or) !(not)
空运算符
empty、not empty
empty用于判断字符串、集合、数组对象是否为null或者长度是否为0,not empty则相反
获取值,el表达式只能从域中获取值
域名称
描述
pageScope
page作用域
requestScope
request作用域
sessionScope
session作用域
applicationScope
application作用域
语法:
1、${域名称.键名}:从指定域中获取指定键的值
2、${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止
request.setAttribute("name","张三");
%>
3、获取对象
${域名称.键名.属性名}:本质上会去调用对象的getter方法
4、获取List集合
${域名称.键名[索引]}
5、获取Map集合
${域名称.键名.key名称}或者${域名称.键名["key名称"]}
2、JSTL
介绍
JavaServer Pages Tag Library JSP标准标签库,是由Apache组织提供的开源的免费的jsp标签,主要用于简化和替换jsp页面上的java代码。
使用步骤
1、导入jstl相关jar包(两个)
javax.servlet.jsp.jstl.jar、jstl-impl.jar
2、引入标签库
3、使用标签
常用的JSTL标签
1、if:相当于java代码的if语句
//判断request域中的一个number为奇数还是偶数
request.setAttribute("number",4);
%>
${number}为奇数
${number}为偶数
2、choose:相当于java代码的switch语句
//数字编号对应星期几
request.setAttribute("number",4);
%>
星期一
星期二
星期三
星期四
星期五
星期六
星期天
数字输入有误
3、foreach:相当于java代码的for语句
值:${item}---索引:${s.index}----循环次数(从1开始):${s.count}
或者
值:${item}---索引:${s.index}