一、JSP(Java Server Pages)Java服务器页面

 

1. 概念:一个简化的Servlet设计,在HTML中插入Java代码,用以高效开发Web应用的动态网页。

2. 作用:替换显示部分的Servlet。

 

二、JSP实现原理

 

编译器将每个项目里.jsp页面都转成.java文件再编译成.class文件存放在 //tomcat/work/...的目录里

 JSP笔记

 

三、HTML与Java集成

 

1. 脚本:

I. 输出脚本:

1). 作用:将Java表达式的结果输出到页面中(out.print())。

2). 语法:<%= Java表达式 %>

3). 注意:表达式不能加";"。

 

II. 声明脚本【没用】:

1). 作用:定义变量或者函数。

2). 语法:<%! 变量、函数 %>

3). 注意:声明脚本中的变量或函数,必须由输出脚本或者普通脚本使用。

 

III. 普通脚本:

1). 作用:可使用所有Java语法(除了定义函数)。

2). 语法:<% anything %>

3). 注意:脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套。(缺点:太麻烦,可读性太差,未来最好不用脚本)

 

2. 指令:

I.page:

1).语法:<%@page attribute1=value1  attribute2=value2  attributeN=valueN %>

2). 属性:

a.集成语言:language="java"

b.显示编码:pageEncoding="UTF-8"  //JSP页面的解码格式

c.响应编码:contentType="UTF-8"  //服务器给客户端传输本文的编码格式

d.内部导包:import="java.util.* , java.sql.*"  //也可通过多个<%@page import="" %>分别导包

e.创建会话:session="true|false"  //默认true 饿汉式,立即创建Session;false 懒汉式,使用时创建Session。

f. 错误页面:isErrorPage="true|false"  //指定当前jsp为错误页面

g. 错误跳转:errorPage=" xxx.jsp "  //如果有异常,跳转至错误页面

 

II. include:静态包含

1). 语法:<%@include file="被包含的jsp路径" %>

2). 作用:会将外部文件的源代码包含在jsp中。

3). 注意:可能会有重名的冲突问题,不建议使用。

 

III.taglib:

1).语法:<%@taglib uri="外部标签库路径" prefix="前缀" %>

2).作用:引入JSP的标准标签库。

 

 

3. 动作:

I. include:动态包含

1). 语法:<jsp:include page="被包含的jsp路径" />

2). 作用:会将外部文件输出结果包含在jsp中。

3). 注意:可更好的包含外部文件,对代码没有侵入性,建议使用。

 

4. 内置对象:由JSP自动创建的对象,可以直接使用。

I.request:HttpServletRequest

(动态获取web应用的名称:request.getContextPath();)

 

II.response:HttpServletResponse

 

III.session:HttpSession

 

IV.application:ServletContext

 

V. out:Writer的子类,与PrintWriter功能完全一致,可输出标签或Java代码。

 

VI. page:Object类型,代表JSP本身,类似于Java中的this。

 

VII. config:ServletConfig可取得服务器的配置信息。

 

VIII.exception:Exception,当<%page isErrorPage="true" %>时,才可以使用。

 

IX.pageContext:当前页面的作用域对象,一旦跳转则失效。主要用来通过它获取其他8个内置对象、或者操作其他对象的作用域。

1). 获得其他内置对象:

pageContext.getRequest();

pageContext.getSession();

pageContext.getServletContext();

pageContext.getOut();

...

 

2). 操作其他内置对象的作用域:

pageContext.setAttribute("key" , value); //当前页面有效

pageContext.setAttribute("key" , value , PageContext.PAGE_SCOPE); //当前页面有效

pageContext.setAttribute("key" , value , PageContext.REQUEST_SCOPE);

pageContext.setAttribute("key" , value , PageContext.SESSION_SCOPE);

pageContext.setAttribute("key" , value , PageContext.APPLICATION_SCOPE);

 

四、EL(Expression Language)表达式语言

 

1. 概念:从作用域获取数据。

2. 使用:

I. 语法:

${ scope.key } //获取具体某个作用域中数据  

  // ${requestScope.persons}

${ key } //根据作用域的范围,自小到大的逐级查找

(pageScope、requestScope、sessionScope、applicationScope)

 

II. 获取基本数据类型、字符串:

JSP笔记

 

III. EL和JSP脚本的区别:

JSP笔记

 

IV. 获取对象类型:

JSP笔记

 

V. 数组、集合(List、Map):

JSP笔记

 

VI. 运算:

1). 算数运算符:+ - * / %(mod)

JSP笔记

 

2). 关系运算符:(> gt)(< lt)(>= ge)(<= le)(== eq)(!= ne)

 JSP笔记

3). 逻辑运算符:(&& and)(|| or)(! not)

JSP笔记

 

4). 非空运算符:empty (可对命名属性进行非空判断)

JSP笔记

 

VII. 获得特殊对象:

1). pageContext:可获取其他作用域的核心对象。

 

2). 通过pageContext获得动态应用名称:

 JSP笔记

3). param:

 JSP笔记

4). Cookie:

JSP笔记

 

五、JSTL(JSP Standard Tag Library):JSP标准标签库

1. 概念:可对EL表达式获取到的数据进行逻辑操作。

2. 作用:与EL合作完成数据的展示。

3. 应用:

I. 引入标签库:

JSP笔记

II. 通过前缀使用:

 JSP笔记

III. 标签:

a. 判断:

JSP笔记

 

b. 多条件判断:

JSP笔记

 

c. 遍历:

遍历str

JSP笔记

 遍历user对象的username属性

JSP笔记

遍历 可以选择起始和跳跃的步数。(step=2  start=0 遍历集合中下标对应0 2 4 6...的对象)

JSP笔记

遍历状态

JSP笔记


d. URL重写:JSP页面重写URL

//response.encodeRedirectUrl();后端servlet重写URL

JSP笔记

 

e. 日期格式化:

导入taglib->设置pattern(日期格式)

JSP笔记

JSP笔记

 

h. 移除:在某个作用域中移除命名属性

    应用场景:例如登陆填写的验证码,登陆成功就该从Session中移除,不应该让它占据内存资源。

JSP笔记

JSP笔记

 


相关文章: