黑马程序员技术交流社区

标题: [石家庄校区]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