栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2.7 JavaWeb核心之JSP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2.7 JavaWeb核心之JSP

JSP
    • 2.7.1 JSP介绍
    • 2.7.2 JSP快速入门
    • 2.7.3 JSP的执行过程
    • 2.7.4 JSP文件内容介绍
    • 2.7.5 JSP语法
      • 2.7.5.1 JSP注释
      • 2.7.5.2 Java代码块
      • 2.7.5.3 JSP表达式
      • 2.7.5.4 JSP声明
    • 2.7.6 JSP指令
      • 2.7.6.1 page指令
      • 2.7.6.2 include指令
      • 2.7.6.3 taglib指令
    • 2.7.7 JSP使用细节
      • 2.7.7.1 九大隐式对象
      • 2.7.7.2 PageContext对象
      • 2.7.7.3 四大域对象
    • 2.7.8 MVC模型

2.7.1 JSP介绍

JSP,Java Server Pages ,是一种动态网页技术标准。
JSP部署在服务器上,可以处理客户端发送的请求并根据请求内容动态的生成HTML、XML或其他格式文档的Web网页,然后再响应给客户端。
JSP是基于Java语言的,它的本质就是Servlet。也就是说,它既可以显示网页,又可以编写Java代码。
比较以下各文档的区别:

类别使用场景
HTML开发静态资源,无法添加动态资源
CSS美化页面
Javascript给网页添加一些动态效果
Servlet编写Java代码,实现后台功能处理
JSP包含了显示页面技术,也具备Java代码功能

2.7.2 JSP快速入门

步骤:
1.创建一个web项目
2.在web目录下创建一个index.jsp文件
3.在文件中写一句话

在JSP中HTML的写法同样适用。
4.部署并启动项目
5.通过浏览器测试

2.7.3 JSP的执行过程

首先,依旧是由客户端的浏览器向服务器发起请求,服务器接收到请求后会解析请求地址,根据我们所填写的虚拟目录的名称来找到我们具体的应用,也就是找到我们发布的这个项目,从而找到对应的jsp文件,找到这个文件后它并不是将文件直接显示,而是将这个jsp文件翻译成Java文件,翻译成一个java文件后想要运行,就要编译,编译成class文件,最后一步就是响应给客户端了。

2.7.4 JSP文件内容介绍

jsp文件会被翻译成Java文件,而这个Java文件,
我们可以打开tomcat的这个路径
apache-tomcat9.0.29workCatalinalocalhostROOTorgapachejsp

这里有两个文件,我们先打开class文件,我们可以用反编译工具

打开后如下:

我们发现这个类继承自HttpJspbase,那我们就再查看一下HttpJspbase

而这个HttpJspbase是继承自HttpServlet,所以说jsp的本质就是一个Servlet,而看其中的方法,有init,destroy,service。
我们再来打开文件夹中的另一个java文件index.java

这里的文件太长,这里就介绍几个地方,可以自己在本地打开来看看

这里面有jspInit,jspDestroy,jspsevice方法,所以说,jsp的本质就是servlet。
再来看共享数据是怎么实现的:

这里有设置编码等我们很眼熟的方法,还有111行的getOut方法其实就是获取一个响应的输出流对象,在看123行往下,调用的write方法不就是实现html代码的源码吗,还有117行往下的设置共享数据的代码……
所以说,jsp可以实现显示一些页面,并且可以写Java代码。

2.7.5 JSP语法 2.7.5.1 JSP注释

<%-- 这是注释内容 --%>
我们来实践一下
web目录下创建一个jsp文件,

由于博客编写没找到写jsp的代码功能,这里用的是html格式,所以颜色区别不明显
注释的快捷键是ctrl+/

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    jsp


<%--这是一行注释--%>


2.7.5.2 Java代码块

<% 这里是Java代码%>
实例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    jsp


<%--Java代码--%>
<%
    System.out.println("Hello,jsp");
    out.println("Hello,jsp");
%>


这里要知道的是, System.out.println(“Hello,jsp”)是在控制台输出,而我们想在浏览器输出,就要用out,这个out是一个JspWriter对象,调用print方法。启动tomcat,打开浏览器查看一下

如果要是换行,println是没效果的,需要加html换行的代码,像这样

 out.println("Hello,jsp 
");
2.7.5.3 JSP表达式

<%= 表达式%>
先看例子

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    jsp


<%--表达式--%>
<%= "你好"%>


启动服务器,打开浏览器,会发现浏览显示 你好
这说明,<%= “你好”%>的效果跟<% out.println(“Hello,jsp”);%>的效果是一样的,就是简化写法了。

2.7.5.4 JSP声明

<%!声明变量或方法%>
这个是用来声明变量和方法的,静态、普通方法都可以。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    jsp


<%--声明--%>
<%! String s = "abc"; %>
<%= s%>


刷新我们的浏览器依旧有效。
但是貌似上面的直接声明也能用呀,他们有什么区别呢?
如果加! 代表声明的是成员变量
如果不加 代表声明的是局部变量

2.7.6 JSP指令 2.7.6.1 page指令

<%@ page 属性名=属性值 属性名=属性值……%>

这里的属性建议都试试,这里的导包可以提一下,我们使用的Java类库中的代码,需要导包的,而这个导包就需要这个对应的格式,如果你用的是idea,那么你就不用考虑导包的问题了直接修复即可。
另外,这里并不需要把全部的属性都加入,因为它们是有默认值的。

2.7.6.2 include指令

include指令可以包含其他页面
<%@ include-file=包含的页面 %>

示例:
我们新建一个include.jsp文件,并定义一个变量s

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    被包含的页面


<% String s = "Hello"; %>


我们期望在另一个jsp文件中使用到include.jsp中定义的变量,这时我们就需要在这里加上include指令。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="include.jsp"%>


    jsp


<%=s%>


要注意的是 内容是jsp文件的路径。

2.7.6.3 taglib指令

taglib指令可以引入外部标签库
<%@ taglib uri=标签库的地址 prefix=前缀名称 %>

2.7.7 JSP使用细节 2.7.7.1 九大隐式对象

隐式对象就是借助这些隐式对象名称,我们可将它当作实际的对象直接使用。

第一个request,request代表的就是隐式对象的名称,它就是一个对象名,实际代表的就是HttpServletRequest,也就是请求对象;response代表的就是响应对象;session代表HttpSession的对象;application代表的就是ServletContext对象,即应用域对象;page代表的是Object对象,在JSP中代表的是本类对象,即this;config代表配置,也就是ServletConfig对象;exception代表的就是异常对象,也就是Throwable;out就是输出到页面的对象,代表的是JspWriter对象;pageContext代表的是页面域对象。

2.7.7.2 PageContext对象

PageContext对象是JSP独有的,Servlet中没有。它是四大域对象之一的页面域对象,还可以操作其他三个域对象中的属性,同时它还可以获取其他八个隐式对象,使用get方法就可获取到。
PageContext对象的生命周期是随着JSP的创建而存在,随着JSP的结束而消失。每个JSP页面都有一个PageContext对象。

这个是PageContext的父类JspContext的常用方法

2.7.7.3 四大域对象

2.7.8 MVC模型

M(Model):模型。 用于封装数据,封装的是数据模型。
V(View):视图。 用于显示数据,动态资源用JSP页面,静态资源用HTML页面。
C (Controller):控制器。用于处理请求和响应,例如Servlet。

MVC分层思想:
首先,由客户端浏览器发起请求到控制器,也就是我们的Servlet;第二步就是进行一些相关逻辑的处理,处理完成后就会产生一些数据;所以第三步就是将这些数据处理,到我们的数据库中进行一些增删改查的操作,执行完成后,在数据库层面可能还会产生一些新的数据;所以第四步就是将这些数据返回到模型中;第五步将这些数据封装;第六步由控制器将封装好的数据模型选择视图进行展示,如果是一个动态资源就用JSP,如果是一个静态资源就用HTML,最后响应给我们的客户端。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号