Java Web(八)JSP

举报
浅辄 发表于 2022/11/20 14:25:38 2022/11/20
【摘要】 JSP一.入门1.概念Java Server Pages,Java服务端页面一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容JSP = HTML+Java2.快速入门导入JSP坐标 <dependency> <groupld>javax.servlet.jsp</groupld> <artifactld>jsp-api...

JSP

一.入门

1.概念

  • Java Server Pages,Java服务端页面

  • 一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容

  • JSP = HTML+Java


2.快速入门

  • 导入JSP坐标


  <dependency>
      <groupld>javax.servlet.jsp</groupld>
      <artifactld>jsp-api</artifactld>
      <version>2.2</version>
      <scope>provided</scope>
  </dependency>


  • 创建JSP文件

  • 编写HTML标签和Java代码


  <body>
    <h1>hello jsp~<h1>
    <%System.out.printf("jsp,hello~");%>
  <body>

3.原理

  • 概念:Java Server Pages,Java服务端页面

  • JSP=HTML+Java,用于简化开发的

  • JSP本质上就是一个Servlet


二.脚本

1.JSP脚本

  • JSP脚本用于在JSP页面内定义Java代码

  • JSP脚本分类:

  • <%..%>:内容会直接放到」jspService()方法之中

  • <%=...%>:内容会放到out.print()中,作为out.print()的参数

  • <%!...%>:内容会放到jspService()方法之外,被类直接包含成员位置

2.JSP缺点

  • 由于JSP页面内,既可以定义HTML标签,又可以定义Java代码,造成了以下问题

  • 书写麻烦:特别是复杂的页面

  • 阅读麻烦

  • 复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE.

  • 占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存

  • 调试困难:出错后,需要找到自动生成的java文件进行调试

  • 不利于团队协作:前端人员不会Java,后端人员不精HTML

  • ...




3.EL表达式

  • Expression Language表达式语言,用于简化JSP页面内的Java代码

  • 主要功能:获取数据

  • 语法:${expression}


  ${brands}    :获取域中存储的key为brands的数据


  • JavaWeb中的四大域对象

  • page:当前页面有效

  • request:当前请求有效

  • session:当前会话有效

  • application:当前应用有效

  • 表达式获取数据,会依次从这4个域中寻找,直到找到为止


4.JSTL标签

  • JSP标准标签库(Jsp Standarded Tag Library),使用标签取代JSP页面上的Java代码


  <c:if test="$(flag==1}">
    男
  </c:if>
  <c:if test="$(flag==2)">
    女
  </c:if>
4.1快速入门
  • 导入坐标


  <dependency>
      <groupld>jstl</groupld>
      <artifactld>jstl</artifactld>
      <version>1.2</version>
  </dependency>
  <dependency>
      <groupld>taglibs</groupld>
      <artifactld>standard</artifactld>
      <version>1.1.2</version>
  </dependency>


  • 在JSP页面上引入JSTL标签库


  <%@taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%>
4.2 c:if
<c:if>:相当于if判断


<c:if>
    
    <c:if test="true">
        <h1>true</h1>
    </c:if>
    <c:if test="false">
        <h1>false</h1>
    </c:if>
4.3 c:foreach
<c:foreach>:相当于for循环


  • items:被遍历的容器

  • var:遍历产生的临时变量

  • varStatus:遍历状态对象


<c:forEach items="${brands}"var="brand">
    <tr align="center">
        <td>${brand.id}</td>
        <td>${brand.brandName}</td>
        <td>${brand.companyName}</td>
        <td>${brand.description}</td>
    </tr>
</c:forEach>


for (Brandbrand:brands){
    Integer id = brand.getld();
    String imgUrl = brand.getlmgUrl();
    String brandName = brand.getBrandName();
    String companyName = brand.getCompanyName();
}


  • begin:开始数

  • end:结束数

  • step:步长


<c:forEach begin="O"end="10"step="1"var="i">
  ${i}
</c:forEach>


for (int i=0;i<=10;i++){
  System.out.println(i)
} 

三.MVC模式及三层架构

1.MVC模式

  • MVC是一种分层开发的模式,其中:

  • M:Model,业务模型,处理业务

  • V:View,视图,界面展示

  • C:Controller,控制器,处理请求,调用模型和视图



  • MVC好处

  • 职责单一,互不影响

  • 有利于分工协作

  • 有利于组件重用

2.三层架构


  • 数据访问层:对数据库的CRUD基本操作

  • 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能

  • 表现层:接收请求,封装数据,调用业务逻辑层,响应数据

3.MVC模式和三层架构


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。