黑马就业班(02.JavaWeb+项目实战\09.JSP EL表达式 JSTL)part1——JSP补充、MVC开发模式、EL表达式、JSTL标签

今日内容

1. JSP:
	1) 指令
	2) 注释
	3) 内置对象

2. MVC开发模式
3. EL表达式
4. JSTL标签
5. 三层架构

1、JSP补充

1、指令
* 作用:用于配置JSP页面,导入资源文件
* 格式:
	<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
* 分类:
	1. page		: 配置JSP页面的
		* contentType:等同于response.setContentType()
			1. 设置响应体的mime类型以及字符集
			2. 设置当前jsp页面的编码(只能是高级的IDE才能生效,高级的IDE会自动读取这个值来设置JSP页面的编码。如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
		* import:导包
		* errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
		* isErrorPage:标识当前也是是否是错误页面。
			* true:是,可以使用内置对象exception
			* false:否。默认值。不可以使用内置对象exception

	2. include	: 页面包含的。导入页面的资源文件
		* <%@include file="top.jsp"%>
	3. taglib	: 导入资源,一般使用taglib来导入标签库,如JSTL等(相当于我们要使用java类需要import导入相应的包一样)
		* <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
			* prefix:前缀,自定义的

  响应的代码如下

//index.jsp
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" buffer="8kb" errorPage="404.jsp" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%--
contentType:text/html设置响应体的MIME类型,charset=UTF-8设置响应体的编码类型(字符集);
pageEncoding:普通的编码工具,需要使用pageEncoding属性设置JSP页面的编码方式(字符集);
import:导包;在JSP页面会写很多java代码,需要导入很多包,通过import导包,每次导入的包都会写成独立的一行;
buffer:缓冲区的大小,默认是8kb。将来JSP页面的数据使用out对象来输出,out相当于一个字符输出流,它有缓冲区,默认8kb;
errorPage:当前页面发生异常后,会自动跳转到指定的错误页面;
isErrorPage:标识当前也是是否是错误页面,是就可以使用内置对象exception。
--%>

<%--
将来如果多个页面的某一部分是相同的,外面可以将这部分封装为一个jsp,然后我们在需要使用到这个部分的jsp文件使用include导入这个相同jsp即可
比如我们设置top.jsp,它包含相同信息,当前页面需要用到这部分的信息,那么导入top.jsp即可
--%>
<%@include file="top.jsp"%>

<%--
演示使用taglib导入标签库JSTL,先导入JSTL需要的jar包(2个),放在WEN_INF的lib下
prefix是标签的前缀,一般使用c。这样引入的标签使用的时候就是: <c:catch></c:catch>的格式
--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
      <%
        List list = new ArrayList();
        //int i = 3/0;//制造异常
          //我们创建一个404.jsp页面,将其设置为isErrorPage="true"。
          //我们启动服务器,访问index.jsp,会报异常,显示异常的页面。这样对用户不友好,我们设置当前页面errorPage="404.jsp"。
          //这样当前的页面发生错误的时候,就会跳转到当前页面指定的错误页面。
      %>
        <%--引入相应的JSTL标签库后,我们就可以使用相应的标签--%>
      <c:catch></c:catch>

  </body>
</html>
//404.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>服务器正忙...</h1>
        <%--我们不将404.jsp标识:isErrorPage="true",其他错误页面也可以跳转到这个页面。但是标识了外面就可以使用JSP的内置对象exception--%>
        <%
            String message = exception.getMessage();
            out.print(message);//将当前页面标识为错误页面,就可以使用exception对象打印错误,将来应该输出到日志文件。
        %>
    </body>
</html>
//top.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<h1>页面logo页面标题</h1>
2、注释
1. html注释:
	<!-- -->:只能注释html代码片段
2. jsp注释:推荐使用
	<%-- --%>:可以注释所有
3、JSP 内置对象
* 在jsp页面中不需要创建,直接使用的对象
* 一共有9个:注意这些JSP的内置对象都对应一个java类
	变量名(JSP)		    真实类型(java) 		作用
	* pageContext			PageContext				当前页面共享数据,还可以获取其他八个内置对象(出了当前页面就不能共享数据)
	* request				HttpServletRequest		一次请求访问的多个资源(请求转发)
	* session				HttpSession				一次会话的多个请求间
	* application			ServletContext			所有用户间共享数据
---前面4个是域对象,可以共享数据,注意它们域的范围
	* response				HttpServletResponse		响应对象
	* page					Object					当前页面(Servlet)的对象  this
	* out					JspWriter				输出对象,数据输出到页面上
	* config				ServletConfig			Servlet的配置对象
	* exception				Throwable				异常对象,页面标注isErrorPage="true"才可以使用exception

  测试:我们在index.jsp里面制造一个错误,并设置:errorPage=“404.jsp”,让这个页面被访问时跳转到404.jsp页面。访问这个页面:http://localhost/day09/index.jsp,然后在:G:\idea_java_project\java-demo1\out\artifacts\day09_war_exploded目录下面,可以找到当前项目的Tomcat项目,里面包含index.jsp、404.jsp,这个位置是Tomcat项目部属的位置。
  但是项目真正运行是在C:\Users\Administrator.IntelliJIdea2017.3\system\tomcat_java-demo1\work\Catalina\localhost\day09\org\apache\jsp 目录(通过控制台Using CATALINA_BASE查找)下,可以找到index.jsp与404.jsp运行后所产生的class与java文件(这些文件只有在index.jsp与404.jsp运行后才会产生),在404.java下的_jspService方法,里面可以找到这9个对象。

2、MVC:开发模式
  jsp演变历史(视频7解析)

1. 早期只有servlet,servlet类只能使用response输出标签数据以及程序获取的动态数据,非常麻烦
2. 后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,又写html表,造成难于维护,难于分工协作
3. 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性
MVC介绍
1. M:Model,模型。JavaBean
	* 完成具体的业务操作,如:查询数据库,封装对象
2. V:View,视图。JSP
	* 展示数据。
3. C:Controller,控制器。Servlet(控制器就是一个中转)
	* 获取用户的输入;
	* 调用模型,使用模型封装的业务进行数据的查询与获取;
	* 将模型查询出来的数据交给视图进行展示。
MVC是开发模式而不是设计模式,设计模式解决的是一些细小的问题,MVC解决的是开发过程中架构的问题。MVC比设计模式的概念要大一些。
以后我们JSP仅仅进行数据的展示,不要在JSP中写业务逻辑的java代码。那么JSP里面不能写java代码,我们怎么展示相应的数据?可以使用EL表达式以及JSTL标签来替换JSP中的java代码。

* 优缺点:
	1. 优点:
		1) 耦合性低,方便维护,可以利于分工协作
		2) 重用性高

	2. 缺点:
		1) 使得项目架构变得复杂,对开发人员要求高

在这里插入图片描述

3、EL表达式
  我们不要在JSP中写java代码,但是有的时候需要写少量的java代码,可以使用EL表达式以及以及JSTL标签替换这些代码。
  概念:Expression Language 表达式语言。EL表达式用于替换和简化jsp页面中java代码的编写。

语法:${
   表达式}

注意:jsp默认支持el表达式的。如果要忽略EL表达式
	1. 设置jsp中page指令中:isELIgnored="true" 忽略当前jsp页面中所有的el表达式
	2. \${
   表达式} :忽略当前这个el表达式(\相当于转义字符)

  EL表达式主要有 运算和获取值 2个功能。

1、运算

1. 运算:
	* 运算符:
		1. 算数运算符: + - * /(div) %(mod)
		2. 比较运算符: > < >= <= == !=
		3. 逻辑运算符: &&(and) ||(or) !(not)
		4. 空运算符: empty
			* 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
			* ${
   empty list}:判断字符串、集合、数组对象是否为null或者长度为0
			* ${
   not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0

  相应的代码如下:

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%--
        下面是EL表达式的演示
        我们在web目录下创建一个el目录,下面放EL表达式的演示,那么应该使用:http://localhost/day09/el/elTest1.jsp 来访问(加上el这一层文件夹)
        --%>
        ${3 > 4}    <%--展示一个boolea类型的数据false--%>

        \${3 < 4}   <%--使用反斜杠\忽略EL表达式,或者使用page指令设置isELIgnored="true"忽略当前页面所有的EL表达式--%>
        <hr>

        <h3>算数运算符</h3<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值