一文搞定JSP

本文详细介绍了JSP的使用原因、组成部分,包括HTML标签、脚本片段、表达式和声明,以及JSP的工作原理。进一步探讨了JSP的四大域对象——pageContext、request、session和application的特性与应用场景,并通过实验总结了它们的范围差异。此外,还讲解了JSP指令和动作标签的用法,帮助读者全面掌握JSP动态网页开发。
摘要由CSDN通过智能技术生成

一、为什么使用JSP

HTML和JSP的区别,就好像我有一块巨大的墙,然后在上面用传统的方式粘贴广告布,今天是张三出1万块钱展示他的成人用品广告,明天是李四花2万块钱展示他的治肾亏广告。。。我每天都得去换广告布???

No,使用电子屏幕就搞定了!

  • HTML不能动态展示内容
  • HTML不能设置变量
  • HTML也不能进行业务逻辑判断
  • 不能进行数据循环

可以通过response对象响应浏览器数据的方式,在servlet中通过Java代码控制响应的数据,达到动态展示的效果,但是需要以一个完整页面的方式展示,但是代码量大

JSP(Java server pages),运行在服务器中的动态页面,通过Java代码展示数据

二、jsp的组成部分

1、HTML标签和文本

**解析方式:**通过out.write()响应

2、jsp脚本片段:

格式:<% Java代码 %>

​ **作用:**执行一段Java代码

解析方式:_直接在jsp所翻译成的servlet的_jspService()执行

3、jsp表达式:

格式:<%=数据%>

​ **作用:**将数据输出到页面

​ **解析方式:**通过out.print()响应到浏览器中

4、jsp声明

格式:<%! 格式; %>

​ **作用:**在jsp所翻译成的servlet中声明一个成员变量

​ **解析方式:**在jsp所翻译成的servlet中声明一个成员变量

三、jsp原理

jsp本质就是一个servlet

jsp就藏在tomcat的work目录中,jsp文件所翻译成的Java类和生成的class,是一个servlet的远房表亲,继承了HttpJspBase,而HttpJspBase继承了HttpServlet

jsp所翻译成的类就是一个servlet在jsp所翻译成的servlet的_jsService()中,将HTML代码通过out.write()响应到浏览器,将jsp脚本片段中的代码直接在_jspService()中执行,jsp中表达式中的额内容会通过out.print()响应到浏览器,jsp声明会在jsp所翻译成的servlet中直接声明相应的成员变量

四、jsp的四大域对象

域对象中操作数据库的方法

void setAttribute(String attributeName,Object attributeValue)://设置在域对象中共享的数据
Objcet getAttribute(String attributeName);//获取域对象中共享的数据
void removeAttribute(String attributeName);//删除域对象中共享的数据

1、pageContext

**类型:**PageContext

功能:

  • 获取其他八个隐式对象
  • 域对象,可以在一个一面范围内共享数据

使用场景:

  • jsp中大部分的标签都会默认将数据共享在pageContext中

2、request

**类型:**HttpServletRequest

功能:

  • 获取请求参数
  • 转发
  • 域对象,可以在一次请求范围中共享数据

应用场景:

  • 错误信息提示
  • 查询所有数据展示在页面中
  • 数据回显

3、session

**类型:**HttpSession

功能:

  • 域对象,可以在一次会话范围中共享数据(一次会话指的是浏览器从开启到关闭)

应用场景:

  • 记录用户的登录状态
  • 购物车

4、application

**类型:**ServletContext

功能:

  • 获取当前工程的初始化参数
  • 获取当前工程的上下文路径
  • 获取当前工程的部署路径
  • 域对象,整个工程的范围中共享数据

应用场景:

​ spring会将IOC容器对象所共享在ServletContext中

下面,我们来观察域对象中的范围:

首先创建两个页面,在这两个页面中写入四大域对象中需要共享的数据,然后做以下对照试验

<%--index页面
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>这是index.jsp页面,设置共享数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值