黑马程序员技术交流社区
标题:
[石家庄校区]JSP&EL&JSTL篇
[打印本页]
作者:
Black_Y
时间:
2018-5-21 15:49
标题:
[石家庄校区]JSP&EL&JSTL篇
本帖最后由 小石姐姐 于 2018-5-23 14:47 编辑
JSP&EL&JSTL篇
##【JSP的概述】
什么是JSP:
Java Server Pages(Java服务器端的页面)
为什么要学习JSP:
SUN公司推出的Servlet自身有缺陷,没有办法与ASP,PHP进行竞争.推出了动态网页开发技术JSP.
使用JSP:
JSP = HTML + Java代码 + JSP自身的东西.
执行JSP的过程:
JSP翻译成Servlet,编译这个Servlet的类,生成class文件.得到执行.
##【JSP的脚本】
<%! %> :翻译成Servlet中的成员内容. 定义变量,方法,类. -- 不建议.
<% %> :翻译成Servlet中service方法内部的内容. 定义类,变量
<%= %> :翻译成Servlet中service方法中out.print();
##【JSP的注释】-了解
HTML的注释 :<!-- 注释 -->
Java代码的注释 :// 单行注释 /*多行注释*/ /** 文档注释 */
JSP的注释 :<%-- JSP的注释 --%>
##【JSP的指令】
```
指令的语法:
<%@ 指令名称 属性名称=”属性值” 属性名称=”属性值” ...%>
```
##JSP中有三个指令:page指令, include指令, taglib指令.
###JSP中page指令:<%@ page %> -- 设置JSP的.
language :JSP脚本中使用的语言.现在只能写java.
contentType :设置浏览器打开这个JSP的时候采用的默认的字符集的编码.
pageEncoding :设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码.
import :在JSP中引入类对象.但是import可以出现多次.
```
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
```
extends :设置JSP翻译成Servlet后继承的类,默认值:org.apache.jasper.runtime.HttpJspBase,这个值要想修改,这个类必须是HttpServlet的子类
autoFlush :设置JSP的缓存自动刷出.true:自动刷出.
buffer :设置JSP的缓冲区的大小,默认8kb.
session :设置在JSP中是否可以直接使用session对象.默认值是true.
isELIgnored :设置在JSP中是否忽略EL表达式.默认值是false不忽略.
errorPage :设置错误友好页面的提示.
isErrorPage :通过这个设置显示JSP的错误信息.
##设置全局的错误友好页面:(点)
```
在web.xml中设置:
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
```
###JSP中的include指令:指示JSP包含其他的页面.
```
<%@ include file="logo.jsp" %>
<%@ include file="menu.jsp" %>
<h1>BODY部分</h1>
<%@ include file="footer.jsp" %>
```
###JSP中的taglib指令:指示JSP引入标签库.
<%@ taglib uri="标签的URI的路径" prefix="标签的别名" %>
##【JSP的内置对象(*****)】
###JSP的内置对象:在JSP中可以直接使用的对象.
###JSP中有9大内置对象:
```
1.request(HttpServletRequest)
2.response(HttpServletResponse)
3.session(HttpSession)
4.application(ServletContext)
5.page(Object)
6.pageContext(PageContext)
7.config(ServletConfig)
8.out(JspWriter) -- write(),print();
9.exception(Throwable) getMessage(),getCause(); 设置isErrorPage=”true”
```
```
page内置对象 :真实对象是Object,就是JSP翻译成Servlet后的类的引用.
out内置对象 :out和response.getWriter是不是同一个对象?区别是什么?不是out真实对象JspWriter ,response获得Writer是PrintWriter.
```
##pageContext内置对象 (点) :
```
获得其他的8个内置对象 :编写通用性代码或者框架的时候.
向JSP的四个域中存取数据 :
JSP的四个域范围:
PageScope :当前页面中有效. pageContext PageContext
RequestScope :一次请求 request HttpServletRequest
SessionScope :一次会话 session HttpSession
ApplicationScope :应用范围 application ServletContext
```
```
<jsp:forward /> :用于页面的转发.
<jsp:forward page="/demo1-jsp/demo3-object/demo3.jsp"></jsp:forward>
<jsp:include /> :用于页面的包含.(动态包含)
```
###静态包含和动态包含的区别?(<%@ include%>和<jsp:include>)(重点)
```
<jsp:param /> :用于带有路径的标签下,传递参数.
<jsp:useBean /> :用于在JSP中使用JavaBean.
<jsp:setProperty /> :用于在JSP中向JavaBean设置属性的.
<jsp:getProperty /> :用于在JSP中获得JavaBean的属性.
```
##EL篇
####EL可以简化JSP中的代码,减少标签的使用率
####EL的表达式
```
${EL表达式}
```
####EL的四大功能
#####一.获取数据(四个域对象)
#####二.执行运算
#####三.操作web开发的常用的对象
#####四.调用java中的方法
###获取数据功能
```
jsp获取数据时,如果没有找到返回null,而el获取数据时,则会返回一个""---可以利用这个点
${aaa.name}获取其中的属性值用 .XXX(延伸到下方的遍历)
.和[]的区别
[]用于有下标的数据(数组和list集合).用于有属性的数据(map,对象)
如果属性名中包含有特殊的字符.必须使用[]来获取而不能用 .XXX而要用[XXX]
例.
user[user_name]---(true)
user.user_name---(false)
```
###执行运算功能
```
算术运算/逻辑运算/关系运算/三元运算/empty运算(判断是否为空)
```
###操作web开发常用的对象功能
```
就是获取请求的参数,获取全局参数,获取cookie的值等等
```
##JSTL篇
####使用(JSTL只能运行在JSP1.2和Servlet2.3规范的容器上,导包)
```
引入jar包
在页面中引入标签库<%@ taglib uri="" prefix""%>
被称为c标签
```
####JSTL结合EL替换页面中<%%>标签
####版本:
1.0版本不支持EL表达式
1.1版本开始支持EL表达式
###JSTL的标签库包含了五类标签
```
core(核心标签)------掌握(if判断,forEach遍历)
fmt(国际化标签)
xml(XML标签)
sql(SQL标签)
fn(JSTL提供EL函数库)-----掌握
```
```
实例演示:
<h1>JSTL提供的EL的函数库</h1>
${ fn:contains("Hello World","Hello") }
${ fn:length("HelloWorld") }
${ fn:toLowerCase("ABCDE") }
<c:forEach var="i" items='${ fn:split("a-b-c-d","-") }'>
${ i }
</c:forEach>
```
MVC模式
##业务逻辑
```
发出请求---->Servle(接受参数,封装数据)---->调用业务层Service---->Dao(CRUD,将数据存到域对象,跳转或重定向)---->JSP(获取数据,遍历...)呈现
```
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2