《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内置对象,重要!

变量名 真实类型 描述
pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
request HttpServletRequest 一次请求访问的多个资源(转发)
session HttpSession 一次会话的多个请求间
application ServletContext 所有用户间共享数据
response HttpServletResponse 响应对象
page Object 当前页面(Servlet)的对象 this
out JspWriter 输出对象,数据输出到页面上
config ServletConfig Servlet的配置对象
exception Throwable 异常对象

二、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>

五、三层架构

  • 界面表示层:用户看的界面。用户可以通过界面上的组件和服务器进行交互
  • 业务逻辑层:处理业务逻辑
  • 数据访问层:操作数据存储文件
发布了31 篇原创文章 · 获赞 0 · 访问量 806

猜你喜欢

转载自blog.csdn.net/u010761121/article/details/103760648
今日推荐