JSP

Java Server Pages简称jsp,是简化Servlet编写的一种技术,它将Java代码和Html语句混合在同一个文件中编写,页面动态资源使用java代码,静态页面使用html
初体验:

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %><%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/6/15Time: 15:36To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>动态展示时间</title>
</head>
<body><%Date date = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");String currentTime = simpleDateFormat.format(date);%><h3><% out.write(currentTime);%></h3>
</body>
</html>

实现原理

JSP本质上就是一个Servlet
jsp页面,运行的时候,会先生成一个java文件,进行编译灾再去执行

脚本与注释

脚本

  1. <% 代码 %>脚本片段,声称在service方法中,每次请求的时候都会执行
  2. <%! 代码 %>申明片段,在java代码中声名成员变量,放在jsp生成java文件中的成员位置
  3. <%= 代码%>输出脚本片段,相当于out。print(“代码”)方法,输出到jsp页面

注释

html注释

jsp注释
<%-- --%>
java注释(jsp脚本内使用)
单行//
多行/* /
文档注释/
* */

作用范围

注释 1 JSP源码 2 java源码 1 html源码 2
html 可见 可见 可见
java 可见 可见 不可见
jsp 可见 不可见 不可见

jsp指令

指令?

用于配置jsp页面,导入资源文件

格式

<%@ 指令名称 属性名1=“属性值1” 属性名2=“属性值2” …%>

jsp三大指令

page指令

用于配置当前jsp页面的一些信息

属性名 说明
contentType 相当于response.setContentType();设置响应体的MIME类型和编码方式
language 目前仅支持java语言
import 导入jar包
errorPage 当前页报错后,跳转指定错误提示页面
isErrorPage 声明当前jsp页面是一个异常处理页面,打开异常开关
false:(默认)
true:可以操作execption异常对象

include指令

页面包含的,导入页面的资源文件
<%@include file=“xxx.jsp”%>
例如以下代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>show.jsp</title>
</head>
<body><%@include file="top.jsp"%><div style="border: red solid 5px;height: 400px">我是include静态包含,主体..</div>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>top.jsp</title>
</head>
<body><div style="border: skyblue dashed 5px;height: 180px">头部</div>
</body>
</html>

taglib指令

导入资源,在jstl中会使用该指令导入标签库
profix自定义前缀名

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html><head><title>jstl</title></head><body>导入jstl标签库</body>
</html>

JSP内置对象

在jsp页面中不需要获取和创建,可以直接使用的对象

九大内置对象

变量名 说明 说明
pageContext PageContext 当前页面中共享数据(域对象)
request HttpServletRequest 一次请求中共享数据(域对象)
session HttpSession 一次会话中共享数据(域对象)
application ServletContext 整个web应用共享数据(域对象)
response HttpServletResponse 响应对象
page(this) Object 当前页面(servlet)对象
out JSPWriter 数处对象
config ServletConfig servlet配置对象
execption Throwable 异常对象(默认关闭。。。)

常用内置对象

变量名 说明
pageContext 当前页面的域对象和获取其他八个内置对象
request 接受用户请求(参数)和获取一次请求中域对象
response 设置响应:字节流和字符流
out 专门在jsp中处理字节流
print():可以输出一切类型
write():只能输出字符类型

EL表达式

Expression Language表达式语言
格式: ${表达式}
作用:主要是从域对象中查找指定的数据
语法: ${域名城.键名}:从指定域中获取指定键的值

域名 对应关系
pageScope pageContext
requestScope request
sessionScope session
applicationScope application(ServletContext)

${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
例如:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%pageContext.setAttribute("name", "吉泽明步老师");request.setAttribute("name", "饭岛爱老师");request.setAttribute("age", 20);session.setAttribute("sex", "女");application.setAttribute("address", "日本东京热");%><%%>${pageScope.name}${requestScope.age}${sessionScope.sex}${applicationScope.address}

EL获取值

获取字符串

代码演示

package com.lifly.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/elGetValueServlet")
public class ElGetValueServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求乱码问题request.setCharacterEncoding("utf-8");response.setContentType("text/html;utf-8");request.setAttribute("username","tom");request.getRequestDispatcher("/el_getValue.jsp").forward(request,response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/6/16Time: 14:57To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%--<%pageContext.setAttribute("name", "吉泽明步老师");request.setAttribute("name", "饭岛爱老师");request.setAttribute("age", 20);session.setAttribute("sex", "女");application.setAttribute("address", "日本东京热");%>${pageScope.name}${requestScope.age}${sessionScope.sex}${applicationScope.address}<br>
--%>${name}<br>${age}<br>${sex}<br>${address}<br><br>${username}
</body>
</html>

获取对象

package com.lifly.JavaBean;/*** @Describe* @Author Double LiFly* @date 2021/6/16 15:13*/
public class User {private String username;private String password;public User() {}public User(String username, String password) {this.username = username;this.password = password;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +'}';}
}
package com.lifly.servlet;import com.lifly.JavaBean.User;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/elGetObjectServlet")
public class ElGetObjectServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求乱码问题request.setCharacterEncoding("utf-8");response.setContentType("text/html;utf-8");User user = new User("tom", "1234");request.setAttribute("user",user);request.getRequestDispatcher("/el_getObject.jsp").forward(request,response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/6/16Time: 15:12To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%--获取user对象--%>直接打印对象:${user}<br>获取对象的每一个属性:<br>用户名:${user.username}<br>密码:${user.password}<br>
</body>
</html>

获取数组

package com.lifly.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/elGetArrayServlet")
public class ElGetArrayServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求乱码问题request.setCharacterEncoding("utf-8");response.setContentType("text/html;utf-8");String[] str = {"jack","rose","tom"};request.setAttribute("str",str);request.getRequestDispatcher("/el_getArray.jsp").forward(request,response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/6/16Time: 15:22To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%--获取数组--%>直接打印数组:${str}<br>获取数组的每一个值:<br>${str[0]}<br>${str[1]}<br>${str[2]}<br>
</body>
</html>

获取List集合

package com.lifly.servlet;import com.lifly.JavaBean.User;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;@WebServlet("/elGetListServlet")
public class ElGetListServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求乱码问题request.setCharacterEncoding("utf-8");response.setContentType("text/html;utf-8");//创建集合(泛型为String)ArrayList<String> list = new ArrayList<>();list.add("jack");list.add("rose");list.add("tom");//创建集合(泛型为User对象)ArrayList<User> users = new ArrayList<>();users.add(new User("jen","1234"));users.add(new User("jim","2345"));request.setAttribute("list",list);request.setAttribute("users",users);request.getRequestDispatcher("/el_getList.jsp").forward(request,response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/6/16Time: 15:28To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%--获取集合--%>获取整个集合:<br>${list}<br>${users}<br>获取集合元素list:<br>${list[0]}<br>${list[1]}<br>${list[2]}<br>获取集合集合User:<br>${users[0]}<br>${users[0].username} ${users[0].password}<br>${users[1]}<br>${users[1].username} ${users[1].password}<br>
</body>
</html>

获取Map集合

package com.lifly.servlet;import com.lifly.JavaBean.User;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;@WebServlet("/elGetMapServlet")
public class ElGetMapServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 处理post请求乱码问题request.setCharacterEncoding("utf-8");response.setContentType("text/html;utf-8");//创建集合HashMap<String, String> map = new HashMap<>();map.put("jack","北京");map.put("rose","上海");map.put("tom","深圳");HashMap<String, User> map1 = new HashMap<>();map1.put("user1",new User("jim","1234"));map1.put("user2",new User("jan","2345"));request.setAttribute("map",map);request.setAttribute("map1",map1);request.getRequestDispatcher("el_getMap.jsp").forward(request,response);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
<%--Created by IntelliJ IDEA.User: AdministratorDate: 2021/6/16Time: 15:38To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%--获取map集合--%>获取整个map:<br>${map}<br>${map1}<br>获取map中的元素:<br>${map.jack}<br>${map.rose}<br>${map.tom}<br>获取map1中的元素:<br>${map1.user1.username}|${map1.user1.password}<br>${map1.user2.username}|${map1.user2.password}<br>
</body>
</html>

JavaWeb阶段JSP详情介绍(上)相关推荐

  1. JAVAWEB使用JSP+Servlet实现商品管理功能,后台为数据库,功能包括商品信息浏览、商品信息详情、商品信息删除及修改。

    商品管理功能 一.功能介绍 1.1显示 1.2商品详情 1.3新增 1.4修改 1.5删除 二.数据库语句 三.项目结构 四.java代码 4.1Good类 4.2 Charge类 4.3GoodDa ...

  2. javaweb(servlet)+jsp+Mysql实现的简单相册管理系统(功能包含登录、管理首页、添加图片、分类管理、修改密码、图片详情等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的简单相册管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的简单相 ...

  3. 【JavaWeb】之Tomcat介绍、安装与使用

    [JavaWeb]Tomcat 前言 一.Tomcat简介 1.什么是Tomcat 2.其他常用Web服务器 二.Tomcat安装 1.下载Tomcat 2.配置环境变量 三.Tomcat使用 1.启 ...

  4. 基于STM32C8T6、ESP8266-01S、JavaWeb、JSP、Html、JavaScript、Android、服务器和客户端设计、上位机和下位机设计等技术融合的物联网智能监控系统设计与实现

    系列文章目录 第一章ESP8266的java软件仿真测试 第二章ESP8266硬件与软件测试 第三章ESP8266客户端与Java后台服务器联调 第四章ESP8266客户端与JavaWeb服务器联调 ...

  5. 学计算机的学校17w,摇号中签率23.19%,学费一年17W?11所民校详情介绍!

    原标题:摇号中签率23.19%,学费一年17W?11所民校详情介绍! 民校专辑 点击蓝色字体查看学校具体介绍 2021小升初已经进入准备阶段,家长帮一路跟进小升初进度,帮助家长朋友搜集一手咨询,掌握最 ...

  6. 我是如何用JSP在网络上架构一个网上招标系统,以推进网站无纸化,过程电子化,管理智能化的发展

    声明:部分代码参考与网络,如有侵权请联系博主删除,博主本着学习的态度和大家一起成长. 项目github地址:https://github.com/sunmenglei/sunmengleiwangsh ...

  7. 基于javaweb+jsp的仓库进销存管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)

    基于javaweb+jsp的仓库进销存管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot) 运行环境 Java≥8.MySQL≥5.7.To ...

  8. java web中td_Java匹马行天下之JavaWeb核心技术——JSP

    Java匹马行天下之JavaWeb核心技术--JSP JSP动态网页技术 一.JavaWeb简介 一.什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总称. 需要 ...

  9. java 打开jsp文件_jsp文件怎么打开(java-web中jsp的理解)

    jsp文件怎么打开(java-web中jsp的理解)JSP:Java Server Pages.JSP是一种网页的编码格式,不同于HTML的是JSP中是由 HTML中的标签指令 和 Java逻辑代码 ...

最新文章

  1. 上升沿_不懂上升、下降沿的我,高兴惨了!
  2. 【Jekyll搭建GITHUB个人博客】安装Ruby 环境、包管理器 RubyGems、Jekyll与错误解决...
  3. 网站在收录后还需要做什么?
  4. ubuntu 16.04更新软件源
  5. 34.对象 GC,GC属性,影响GC的因素,GC步骤,GC算法,安全区/安全区域,新生代,老年代等介绍
  6. mysql字段名explain_Mysql中explain用法和结果字段的含义介绍
  7. C# 版本 疫情传播仿真程序
  8. 元胞自动机模型_【ABM仿真模拟】第三章 元胞自动机 B
  9. 《C++ Primer》14.3.1节练习
  10. 纹理和基元_自定义基元和DTO的(反)序列化和验证
  11. C# 图解教程 第四章 类的基本概念
  12. linux内核分析第五次实验
  13. C# 添加,修改,删除Xml节点
  14. 几个关于oracle 11g ASM的问题
  15. mergsort.c
  16. jsp与servlet的区别以及jsp的四个作用域
  17. 【转载】电信光猫中兴F451破解方法
  18. Termux-API 使用教程,很多坑,电量,设备信息
  19. html5调用手机震动
  20. postgresql统一把字段小写转大写

热门文章

  1. google、bing ,baidu 等搜索引擎 查询参数
  2. TopK推荐的评价指标
  3. Windows自带的输入法全角/半角如何切换?
  4. 基于tabular包的Latex表格尺寸设置方法(列宽和行高)
  5. HTTPS文件服务器搭建,搭建一个简易的https
  6. docker创建busybox
  7. 如何把视频或者音频转成文字
  8. 多进程和多线程的使用场景
  9. Python curses使用
  10. 孟岩:想抓住EOS的机会,从这四个方向入手吧!