深入理解JavaWeb(三)——JSP

深入理解JavaWeb(三)——JSP

摘要:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
实际上,JSP已经不适合主流的开发模式,但我们仍有必要去学习它;在本文中,我们对JSP进行了简单的阐述,而非深入地理解。以最低的成本快速上手JSP。
作者:来自ArimaMisaki创作

5 JSP

5.1 JSP概述

说明:JSP是Java Server Pages(Java服务端页面),它是一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容;简单理解Jsp=html+Java

让我们思考一下如果想要在Servlet中实现动态的页面,如从登录界面登录后,在首页中显示你的用户名,这种情况下,我们可以采用Writer.write()来简单地输出;但是如果是输出一个完整的HTML页面,那么使用该方法就比较傻眼了。

image-20221004133456233

为此,使用Jsp能够使得HTML书写变得简化,Jsp中允许程序员在html的基础上书写Java代码,这样使得书写变得轻松起来。

image-20221004134734830


5.2 快速入门

步骤演示

  1. 导入jsp坐标,且记得将scope设为provided,因为tomcat中自带一个jsp。

        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.2.1-b03</version>
          <scope>provided</scope>
        </dependency>
    
  2. 像我们平时写html一样新建一个jsp文件,然后写上html代码,如果想要在jsp文件中写java代码,需要使用<%%>括起。

    <%--
      Created by IntelliJ IDEA.
      User: ArimaMisaki
      Date: 2022/10/4
      Time: 14:03
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>hello jsp</h1>
    
        <%
            System.out.println("hello jsp~");
        %>
    </body>
    </html>
    
  3. 启动服务器,并访问对应路径

    image-20221004141012841

    image-20221004141022433


5.3 JSP原理

说明:JSP本质上是一个Servlet;当启动tomcat之后,jsp文件会被转换为一个servlet类。

image-20221004141433443

缺点:由于JSP页面内,即可以定义HTML标签又可以定义Java代码,故缺点也十分明显:

  • 书写麻烦,特别是复杂的页面
  • 阅读麻烦
  • 复杂度高;运行需要依赖于各种环境,JRE,JSP容器,JavaEE…
  • 占内存和磁盘;JSP会自动生成Java和.class文件占磁盘,运行的是.class文件占内存
  • 调试困难;出错后,需要找到生成的.java文件进行调试
  • 不利于团队写作;前端人员不会Java,后端人员不精HTML

由于如上的原因,JSP已逐渐退出历史舞台。Jsp时代的结束,导致了HTML+AJAX的前后端分离时代的开启


5.4 JSP脚本

说明:JSP脚本用于在JSP页面内定义Java代码。

分类

  • <%…%>:内容会直接放到_jspService()方法中;我们可以理解为<%…%>可以容纳一切的java代码。
  • <%=…%>:内容会放到out.print()中,作为out.print()的参数;out.print()方法我们可以认为是将数据输出到页面中而非控制台上。
  • <%!..%>:内容会放到_jspService()方法之外,被类直接包含;我们可以理解为写在<%!..%>的代码以后都会成为成员变量或成员方法。

5.5 EL表达式

说明:(ExpressionLanguage,EL)表达式语言可以用于简化表达式的代码。其主要功能是获取数据。在Servlet存储数据时,我们是通过setAttribute方法来存储到request对象中,而通过getAttribute通过键来获取数据对应的值。但使用EL表达式,我们可以简化取值的过程,只需$(对应的键),即可取出需要的数据。

语法:${expression}

域对象:除了我们在Servlet学习到的request域对象,还有另外三个,当el表达式获取数据时,会依次从以下四个域中寻找,直至找到为止。

  1. page:当前页面有效
  2. request:当前请求有效
  3. session:当前会话有效
  4. application:当前应用有效

5.6 JSTL标签

说明:jsp标准标签库(jsp Standarder Tag Library)主要使用标签取代JSP页面上的Java代码,如<c:if test=“${flag == 1}”>男</c:if>可用于取代以下代码:

if(flag == 1){
	test = 男;
}

我们就不在这里多花时间学习了。


5.7 MVC模式和三层架构

MVC:MVC是一种分层开发模式,其中M代表model,主要处理业务;V代表view,主要用于界面展示;C代表controller,主要用于处理请求,调用模型和视图。当浏览器发起请求时,则向控制器发起请求,控制器会从模型中调用业务,并通过视图返回给浏览器。

image-20221004145218881

MVC的好处

  • 职责单一,互不影响
  • 有利于分工协作
  • 有利于组件重用

三层架构:三层架构是对web应用开发提出的一种架构方式,主要分为表现层业务逻辑层数据访问层

  • 数据访问层:对数据库的CRUD基本操作
  • 业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能
  • 表现层:接收请求,封装数据,调用业务逻辑层,响应数据

在Java建包时,表现层一般所在包名为web,业务逻辑层一般为service,数据访问层一般为dao

image-20221004145828801

SSM框架:表现层一般采用SpringMVC,业务逻辑层一般采用Spring,数据访问层一般采用MyBatis、Hibername

MVC和三层架构的关系

image-20221004150119901


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArimaMisaki

如果知识有用请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值