十八、JSP、MVC开发模式、EL表达式、JSTL标签、三层架构

JSP、MVC开发模式、EL表达式、JSTL标签、三层架构

JSP

指令

  • 作用:用于配置JSP页面,导入资源文件

  • 格式:

    • <%@ 指令名称 属性名1=属性值1 属性名2=属性值2……%>

  • 分类:

    • page:配置JSP页面的

      • contentType:等同于response.setContentType()

        • 设置响应体的mime类型以及字符集

        • 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)

      • import:导包

      • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面

      • isErrorPage:标识当前是否是错误页面

        • true:是,可以使用内置对象exception

        • false:否。默认值,不可以使用内置对象exception

    • include:页面包含的。导入页面的资源文件

      • <%@include file="top.jsp"%>

    • taglib:导入资源

      • prefix:前缀,自定义的

注释

  • html注释:

    • <!-- -->:只能注释html代码片段

  • jsp注释:推荐使用

    • <%-- --%>:可以注释所有

内置对象

  • 在jsp页面中不需要创建,直接使用的对象

    • 一共有9个

      • 变量名 真实类型 作用

      • 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,在jsp中写大量的java代码,有些html表,造成难于维护,难于分工协作

    • 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理性

  • MVC:

    • M:Model,模型。JavaBean

      • 完成具体的业务操作,如:查询数据库,封装对象

    • V:View,视图。Jsp

      • 展示数据

    • C:Controller,控制器。Servlet

      • 获取用户的输入

      • 调用模型

      • 将数据交给视图进行展示

    • 优缺点:

      • 优点:

        • 耦合性低,方便维护,可以利于分工协作

        • 重用性高

      • 缺点:

        • 使得项目架构变得复杂,对开发人员要求高

EL表达式

  • 概念:Expression Language 表达式语言

  • 作用:替换和简化jsp页面中java代码的编写

  • 语法:${表达式}

  • 注意:

    • jsp默认支持el表达式的。如果要忽略el表达式

      • 设置jsp中page指令中:isElIgnored="true"忽略当前jsp页面中所有的el表达式

      • ${表达式}:忽略当前这个el表达式

  • 使用:

    • 运算:

      • 运算符:

        • 算术运算符:+ - * /(div) %(mod)

        • 比较运算符:> >= < <= == !=

        • 逻辑运算符:&&(and) ||(or) !(not)

        • 空运算符:empty

          • 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0

          • ${empty list}:判断字符串、集合、数组对象是否为null或者长度是否为0

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

    • 获取值:

      • el表达式只能从域对象中获取值

      • 语法:

        • ${域名称.键名}:从指定域中获取指定键的值

          • pageScope ----->pageContext

          • requestScope ----->request

          • sessionScope ------>session

          • applicationScope ------>application(ServletContext)

        • 举例:在request域中存储了name=张三

        • 获取:${requestScope.name}

      • ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止

      • 获取对象、List集合、Map集合的值

        • 对象:${域名称.键名.属性名}

          • 本质上会去调用对象的getter方法

        • List集合:${域名称.键名[索引]}

        • Map集合:

          • ${域名称.键名.key名称}

          • ${域名称.键名["key名称"]}

    • 隐式对象:

      • el表达式中有11个隐式对象

      • pageContext:

        • 获取jsp其他八个内置对象

          • ${pageContext.request.contextPath}:动态获取虚拟目录

JSTL标签

  • 概念:JavaServer Pages Tag Library JSP标准标签库

    • 是由Apache组织提供的开源的免费的jsp标签 <标签>

  • 作用:用于简化和替换jsp页面上的java代码

  • 使用步骤:

    • 导入jstl相关jar包

    • 引入标签库:taglib指令:<%@ taglib %>

    • 使用标签

  • 常用的JSTL标签:

    • if:相当于java代码的if语句

      • 属性:

        • test:必须属性,接受boolean表达式

          • 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容

          • 一般情况下,test属性值会结合el表达式一起使用

        • 注意:

          • c:if标签没有else情况,想要else情况,则可以定义一个c:if标签

    • choose:相当于java代码的switch语句

      • 使用choose标签声明 相当于switch声明

      • 使用when标签做判断 相当于case

      • 使用otherwise标签做其他情况的声明 相当于default

    • foreach :相当于java代码的for语句

三层架构

  • 界面层(表示层):用户看到的界面。用户可以通过界面上的组件和服务器进行交互

  • 业务逻辑层(service层):处理业务逻辑的

  • 数据访问层(dao层):操作数据储存文件

  •  

 

posted @   遨游JAVA的大叔  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示