语法篇·JSP基础

news2024/10/7 18:31:23

一、初识JSP

1.1简介

JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签。JSP是一种动态网页技术标准,也是JavaEE的标准。JSP和Servlet一样,是在服务器端执行的。JSP是在Servlet技术发展之后为了让开发者写html标签更方便而发展起来的技术,JSP实际上就是Servlet。

人们通常把Servlet作为Web应用中的控制组件来使用,只负责响应请求产生数据,并把数据通过转发技术带给jsp,而把jsp技术作为数据显示模板来使用。这样使程序结构更清晰,可读性和可维护性更高。

1.2 基础语法与指令

声明脚本(极少使用)

声明格式:<%! java代码 %>

作用:可以给翻译出来的java类定义属性和方法甚至是静态代码块,内部类等

1.声明类属性

<%!
  private Integer id;
  private String name;
  private static Map<String,Object> map;
%>

2.声明static静态代码块

<%!
  static {
    map = new HashMap<String,Object>();
    map.put("key1","猫");
    map.put("key2","狗");
    map.put("key3","羊");
    map.put("key4","牛");
  }
%>

3.声明类方法

<%!
  public int test(){
    return 12;
  }
%>

4.声明内部类

<%!
  public static class A{
    private int id = 1;
    private String name = "aaa";
  }
%>

 表达式脚本(常用)

​ 表达式脚本格式:<%=表达式%>

​ 表达式脚本的作用是:在jsp页面上输出数据

1.输出整型

<%=12%>

2.输出浮点数

<%=12.12%>

3.输出字符串

<%="我是字符串"%>

4.输出对象

<%=map%>

 表达式脚本的特点: 1. 使用的表达式脚本都会被翻译到jsp源文件的_jspService()方法中去

​ 2. 表达式脚本都会被翻译为out.print()输出到页面上

​ 3. 由于所有的表达式脚本翻译的内容都在_jspService()中,所以__jspService()方法中的对象可以直接使用

​ 4. 表达式脚本中的表达式不能以分号结束

代码脚本

​ 代码脚本格式:<%java语句%>

​ 代码脚本的作用:可以在jsp页面中编写我们自己需要的功能(java语句)

1.代码脚本—-if语句

<%
      int i=12;
      if(i==12)
        System.out.println("哈哈哈");
      else
        System.out.println("呵呵呵");
    %>

2.代码脚本—-for循环语句

<%
      for(int j = 0;j<10;j++)
        System.out.print(j);
    %>

3.翻译后java文件中_jspService方法内的代码都可以写

<%
      String name = request.getParameter("name");
      System.out.println("请求的参数为:"+name);
    %>

 代码脚本的特点: 1. 代码脚本翻译到了源文件的_jspService()方法中

​ 2. 由于代码脚本翻译的内容都在_jspService()中,所以__jspService()方法中的现有对象可以直接使用

​ 3. 代码脚本还可以由多个代码脚本块组合完成一个完整的Java语句

​ 4. 代码脚本还可以和表达式脚本一起组合使用,在jsp页面上输出数据

1.3 jsp中的三种注释

  1. html注释 <!--这是html注释--> 会被翻译到java源代码中,以out.writer输出到客户端

  2. java注释 java注释会被翻译到java源代码中\

    <%
        //单行注释
        /*多行注释*/
    %>
  3. jsp注释 <%—这是jsp注释—%> jsp注释可以注释掉jsp页面中所有代码

1.4错误界面(重要)

1.5JSP指令(网页结构)

二、JSP入门

2.1JSP九大内置对象 

jsp中的内置对象,是指Tomcat在翻译jsp页面成为servlet源代码后,内部提供的九大对象,叫内置对象

  1. request 请求对象
  2. response 响应对象
  3. pageContext jsp的上下文对象
  4. session 回话对象
  5. application ServletContext对象
  6. config ServletConfig对象
  7. out jsp输出流对象
  8. page 指向当前jsp的对象
  9. exception 异常对象(需要开启isErrorPage属性)

2.2四大域对象

​ jsp的四大域对象(可以像map一样存取数据的对象)

  1. pageContext(PageContextImpl类) 当前jsp页面范围内有效
  2. request(HttpServletRequest类) 一次请求内有效
  3. session(HttpSession类) 一次会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
  4. application(ServletContext类) 整个web工程范围内都有效(只要web工程不停止,数据都在)

四个域使用的优先顺序是:

​ pageContext ===> request ===> session ===> application

2.3 jsp中out输出和response.getWriter输出的区别  

​ response中表示响应,我们经常用于设置返回给客户端的内容

​ out也是给用户做输出使用

​ 当jsp页面中所有代码执行完成后会做以下操作:

  1. 执行out.flush()的操作,会把out缓冲区中的数据追加写入到response缓冲区末尾
  2. 执行response的刷新操作,把全部数据写给客户端

由于jsp翻译之后,底层源代码都是使用out来输出,使用一般情况下我们统一使用out来进行输出,避免打乱页面输出的顺序

​ out.write()输出字符串没有问题,输出整型有问题

​ out.print()输出任意数据没有问题(都转换为字符串后调用write输出)

在jsp页面中,可以统一使用print()进行输出

2.4JSP标签、JSTL标签、EL表达式

2.4.1EL表达式

EL表达式全称为:Expression Language,即表达式语言。

EL表达式作用为:主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出,相比原生的jsp可读性更高,更简洁。

EL表达式:${ }
●获取数据
●执行运算
●获取web开发的常用对象

2.4.2JSP标签

<%--<jsp:include>--%>
<!-- jsp携带数据 -->
<jsp:forward page="/jsptag2.jsp">
    <jsp:param name="name1" value="1"/>
    <jsp:param name="name2" value="2"/>
</jsp:forward>

取出值

<%= request.getParameter("name1")%>
<%= request.getParameter("name2")%>

核心标签(掌握部分)
格式化标签
SQL标签
XML标签

JSTL常用标签

<c:if>

 c:set

作用:存值,存值到scope中

<c:choose>, <c:when>, <c:otherwise> 标签用于在众多选项中做出选择,与switch功能相同 

 <c:forEach>标签

迭代遍历元素,整合for/foreach等 Items,集合数组等对象,必为通过EL获取的集合对象 Var,每次迭代的元素对象 varStatus,迭代状态变量

<c:out>

<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

1、 value 要输出的信息

2、 default 默认情况下输出什么 

3、 escapeXml 是否以xml格式输出注:默认为true,即像”<”,”>”这样的符号会原样输出

varStatus属性,封装遍历状态的属性变量名称 

 2.5JAVABean

JAVABean是一种用Java语言编写的可重用组件,它遵循一些规范,如有无参数的构造器,有set和get方法的属性,有事件监听器的事件等。JAVABean可以被其他Java应用程序调用,也可以被可视化的开发工具操作。JAVABean有可视化和不可视化两种类型,分别用于提供图形用户界面和处理业务逻辑等

实体类

JavaBean有特定的写法:

  • 必须要有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法:

一般用来和数据库的字段做映射 ORM;

ORM:对象关系映射

  • 表 —> 类
  • 字段 —> 属性
  • 行记录 —> 对象
idnameageaddress
1oi1号18温泉1
2oi2号19温泉2
3oi3号20温泉3
class people{
    private int id;
    private String name;
    private int age;
    private String address;
}
class A{
    new People(1,"oi1号",18,"温泉")
}

 2.6MVC三层架构

Model View Controller 模型、视图、控制器

Model

  • 业务处理:业务逻辑(Service)
  • 数据持久层:CRUD (Dao)

View

  • 展示数据
  • 提供链接发起Servlet请求(a,form,img…)

Controller(Servlet)

  • 接受用户的请求:(req:请求参数、Session信息…)
  • 交给业务层处理对应的代码
  • 控制视图的跳转

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果公司开发者账号申请流程

目录 一、注册 Apple ID 账号二、Apple Developer 登录三、申请公司邓白氏编码四、下载 Apple Developer app五、审核六、缴费七、发票 一、注册 Apple ID 账号 注册网址&#xff1a;https://appleid.apple.com/account 二、Apple Developer 登录 登录网址&#xff1a;http…

汽车EBSE测试流程分析(二):关于优势和挑战的案例分析

EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第二”篇章&#xff0c;在之前的“篇章&#xff08;一&#xff09;”中已经阐述了汽车软件工程的特点&#xff0c;以及使用混合方法设计的分阶段EBSE测试过程&#xff0c;并提出问题。接下来&#xff0c;我们将具体分析EB…

抖音矩阵系统源码开发指南

抖音矩阵系统是一个大规模的分布式系统&#xff0c;它可以处理数百万级别的并发请求。要开发和部署抖音矩阵系统源代码 您需要遵循以下步骤&#xff1a; 下载和安装必要的软件依赖项&#xff1a;抖音矩阵系统源代码需要使用Java和Scala编程语言&#xff0c;因此您需要下载和安…

2023年程序员工资中位数增长10%?开发者最常用的语言竟然是……

在调研了全球超过 90000 名开发者之后&#xff0c;程序员社区 Stack Overflow 重磅发布了《2023 Developer Survey》调查报告。在本次报告中&#xff0c;Stack Overflow 从工具、编码、工作、社区等维度展开&#xff0c;同时深入研究了 AI/ML 技术&#xff0c;并解析开发者如何…

python spider 爬虫 之 urllib系列

python 中 集成了 urllib urllib import urllib.request # urlopen 方法 url"url" response urllib.request.urlopen(url)print(type(response )) print(response.read()) # 解码 字节--->字符串 decode 字符串--》字节 encode print(response.read()…

618电商物流内卷,拼速度不是唯一底牌,还有……

每年的618大促&#xff0c;对于消费者来说都是一场购物盛宴&#xff0c;也是各个快递企业的“大练兵”。各大电商平台也纷纷铆足劲&#xff0c;希望能抓住此次机会增加营收。 面对电商平台和消费者需求&#xff0c;今年的快递电商企业在保证速度&#xff0c;提升服务质量的前提…

用CMake下的find_package()函数链接库

文章目录 find_package()原理案例1&#xff1a;为项目添加库 find_package()原理 关于find_package()函数的相关内容可参考&#xff1a; https://www.cnblogs.com/lidabo/p/16635249.html Cmake 会在以下的路径中寻找Config.cmake或Find.cmake文件。找到后即可执行该文件并生…

pycharm 2023 IDE 个人一些常用配置记录|输入法|中文|光标|

1. 中文 文件->设置->插件,找到这个&#xff1a; 2. 光标前进和后退 移除前面的配置&#xff0c;修改一下&#xff0c;改称Ctrl左键头\右箭头 然后点击确定 3.中文输入法 3.1 解决输入法有无问题 在pycharm安装目录bin下的pycharm.sh中&#xff0c;添加如下几行&am…

白酒回收APP开发需具备哪些功能?

开发白酒回收APP软件需要具备哪些功能呢&#xff1f; 1、酒品展示。白酒回收APP首页展示各种人们回收的白酒产品&#xff0c;还可以对白酒进行品牌分类&#xff0c;这样用户在回收售卖的时候可以快速找到自己需要的品牌&#xff0c;点击进入查看回收指南&#xff0c;一步…

中国葡萄酒 当惊世界殊 宁夏贺兰山东麓葡萄酒亮相首都地铁

近日&#xff0c;宁夏贺兰山东麓葡萄酒以“中国葡萄酒 当惊世界殊、中国酒庄酒 天赋贺兰山”为宣传主题的宁夏贺兰山东麓葡萄酒宣传专列&#xff08;列车车号&#xff1a;01055&#xff09;亮相北京地铁1号线。该专列将从4月7日至7月6日持续开行3个月&#xff0c;平均每天往返穿…

Snipaste下载

官网&#xff1a; Snipaste 下载 解压 在桌面右下角状态栏中可以找到软件图标&#xff0c; 如图所示&#xff0c;已经运行成功 鼠标右键点击该图标&#xff0c;选择首选项可以设置相关功能选项。 设置了开机自启 最后将该文件夹放到合适的路径下&#xff0c;重新双击运行Snipa…

计算物理专题:薛定谔方程的有限元解法

计算物理专题&#xff1a;薛定谔方程的有限元解法 简单边值问题的有限元解法 其中&#xff1a;都是上已知的连续函数&#xff0c;且也连续&#xff0c; 等价性定理 如果y(x)是边值问题(1)的解&#xff0c;则y(x)是\mu 中使得泛函I(z)取极小值的函数&#xff1b;反正&#xff0c…

【面试题系列】关于K8s—Job的2个问题

序言 人生是一场消耗&#xff0c;要把美好的时光放在喜欢的人与事上。 写在前面 前面学习了job&#xff0c;现在思考一下两个问题 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标…

only up 游戏分析

文章目录 介绍游戏玩法游戏面向的群体游戏所须配置游戏美术风格游戏优点游戏缺点和改进方案游戏爆火原因分析同类型游戏对比和游戏继承性地铁跑酷掘地求升跳跳乐 总结 介绍 游戏玩法 这是一个玩法很简单的跑酷游戏&#xff0c;你必须找到一条可行的道路&#xff0c;一直往上走…

【C++】哈希的应用

文章目录 一、位图1. 位图的引入2. 位图的实现3. 位图的应用4. 哈希切割 二、布隆过滤器1. 布隆过滤器的引入2. 布隆过滤器的实现3. 布隆过滤器的应用4. 布隆过滤器的总结 一、位图 1. 位图的引入 我们先来看一道面试题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没…

vue项目用iframe嵌入另外一个vue项目(cesium)

vue项目用iframe 项目嵌入另外一个vue项目&#xff0c;主要分2种情况&#xff0c;一种情况是嵌入本地项目&#xff0c;另外一种是嵌入用web服务器启动的vue项目。 1&#xff09;嵌入本地项目 vue create hello-world 创建项目后&#xff0c; 用npm run build打包&#xff0c;把…

IPO观察丨健身器材行业加“数”前行,康力源如何重构竞争壁垒?

近年来&#xff0c;健身器材市场的火热&#xff0c;引来了资本的广泛关注。数据显示&#xff0c;2021年中国健身器材市场规模为546.5亿元&#xff0c;同比增长15%&#xff0c;预计2024年或可达到799.6亿元。在这股浪潮之下&#xff0c;多家健身器材企业递出了IPO申请。比如&…

安装mmdetection(windows下)

windows环境安装mmdetection 创建pytorch环境最终安装的版本信息安装过程step1&#xff1a;安装mmcv-fullstep2&#xff1a;安装mmdetection 创建pytorch环境 mmdetection是基于PyTorch、CUDA环境来安装的&#xff0c;所以首先得安装深度学习pytorch环境、参考我的这篇pytorch…

基于企业微电网平台的食用菌工厂的能源管理

摘要&#xff1a;从食用菌生产经营者角度指出食用菌工厂化生产的产品生鲜属性、微生物培养的技术特点和竞争战略难以突破决定了成本控制是经营的核心。分析食用菌生产的成本构成&#xff0c;指出加强能源管理是节本增效的重要途径&#xff0c;从电费的分类和改善方式、灭菌的燃…

JDK的安装配置

MySQL的安装下载已经有很多码友阅读和提出意见&#xff0c;谢谢大家的肯定和批评&#xff0c;如下给出JDK的安装配置&#xff0c;如有帮助&#xff0c;点赞收藏加关注&#xff0c;如有不足或者错误&#xff0c;敬请批评指正&#xff01;&#xff01; 一、下载JDK 1、Oracle官网…