《JavaEE》第五周day4学习笔记-JSP

一、JSP
(一)JSP指令
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
用于配置JSP,导入资源文件。
1.page,配置JSP页面
例:<%@ page import=“java.util.ArrayList” %>

  • contentType:等同于response.setContentType()
  • import:导包
  • errorPage:页面异常后跳转至错误页面
  • isErrorPage:标识当前页面是否错误页面(true,可以使用内置对象exception)

2.include,导入页面的资源文件
例:<%@include file=“top.jsp”%>

3.taglib,导入资源库
例:<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

(二)JSP注释
html注释:<!-- -->,仅适用于html代码段
jsp注释:<%-- --%>,推荐使用,适用于所有代码段

(三)JSP内置对象,重要!

变量名真实类型描述
pageContextPageContext当前页面共享数据,还可以获取其他八个内置对象
requestHttpServletRequest一次请求访问的多个资源(转发)
sessionHttpSession一次会话的多个请求间
applicationServletContext所有用户间共享数据
responseHttpServletResponse响应对象
pageObject当前页面(Servlet)的对象 this
outJspWriter输出对象,数据输出到页面上
configServletConfigServlet的配置对象
exceptionThrowable异常对象

二、MVC开发模式
(一)JSP演变历史

  • 早期,仅有servlet,只能使用response输出标签数据,比较麻烦
  • 后来,出现JSP,简化了servlet开发,但过度使用jsp会造成java+html的混乱,难以维护和协作
  • 现在,使用java的web开发,借鉴MVC开发模式,比较合理

(二)MVC

  • M:Model,模型,通常指代JavaBean
  • V:View,视图,通常指代jsp,用来展示数据
  • C:Controller,控制器,用来获取用户的输入,调用模型,并将数据传递至视图进行展示

(三)优缺点

  • 优点:程序耦合性低,方便维护,有利于分工协作,代码/模块重用性高
  • 缺点:使项目架构变的复杂,对开发人员要求更高

三、EL表达式
(一)概念
Expression Language,表达式语言,替换和简化JSP中java代码的编写。
(二)语法及注意项
语法:${表达式}
注意项:JSP默认支持EL表达式,如果要忽略EL表达式,需设置page指令isELIgnored=“true”,忽略所有EL表达式。
(三)使用方式
1.运算
(1)算术运算符:+ - * / %
(2)比较运算符:> < >= <= == !=
(3)逻辑运算符:&& || !
(4)空运算符:empty

  • ${empty list},判断字符串、集合、数组对象是否为null或者长度为0
  • ${not empty str},表示判断字符串、集合、数组对象是否不为null 并且 长度>0

2.获取值
EL表达式只能从域对象中获取值;
语法:${域名称.键名}

  1. pageScope --> pageContext
  2. requestScope --> request
  3. sessionScope --> session
  4. applicationScope --> application(ServletContext)

注意,${键名称}表示依次从最小到最大的域对象中查找是否有对应的值,直到找到为止,如果不存在则返回null。

3.获取对象、List、Map的值
对象:${域名称.键名.属性名},本质会调用对象的getter()方法。
List:${域名称.键名[索引]}
Map:${域名称.键名.key名称}/${域名称.键名["key名称"]}

四、JSTL
(一)概念
Java Server Pages Standarded Tag Library,JSP标准标签库,是由Apache组织提供的开源JSP标签,用于简化和替换JSP页面上的java代码。
使用步骤:

  • 导入JSTL相关的jar包
  • 引入标签库:<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
  • 使用标签

(二)JSTL标签
1.if
语法:<c:if test="[布尔表达式]">内容</c:if>
test属性接受true/false,一般情况下会结合EL表达式使用,注意,if标签没有else,如果需要else需额外定义一个if标签。

    <c:if test="${not empty list}">
        list集合非空!
    </c:if>

2.choose
相当于java代码的switch语句。

  • choose标签等价于switch
  • when标签等价于case
  • otherwise标签等价于default
<%
    request.setAttribute("number",7);
%>
    <c:choose>
        <c:when test="${number==1}">星期一</c:when>
        <c:when test="${number==2}">星期二</c:when>
        <c:when test="${number==3}">星期三</c:when>
        <c:when test="${number==4}">星期四</c:when>
        <c:when test="${number==5}">星期五</c:when>
        <c:when test="${number==6}">星期六</c:when>
        <c:when test="${number==7}">星期日</c:when>
        <c:otherwise>number有误</c:otherwise>
    </c:choose>

3.foreach
相当于java代码的foreach语句。
循环代码:

   <%--
   begin:开始值
   end:结束值
   var:临时变量
   step:步长
   varStatus:循环状态对象
   		index:容器中元素的索引,从0开始
   		count:循环次数,从1开始
   --%>
<c:forEach begin="1" end="10" var="i" step="1" varStatus="s">
    ${i}==>${s.index}===>${s.count}<br/>
</c:forEach>

遍历代码:

   <%--
   items:容器对象
   var:容器中元素的临时变量
   varStatus:循环状态对象
   		index:容器中元素的索引,从0开始
   		count:循环次数,从1开始--%>
<c:forEach items="${list}" var="str" varStatus="s">
    ${s.index}==>${s.count}==>${str}<br/>
</c:forEach>

五、三层架构

  • 界面表示层:用户看的界面。用户可以通过界面上的组件和服务器进行交互
  • 业务逻辑层:处理业务逻辑
  • 数据访问层:操作数据存储文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值