文章目录

  • 1.JSP简介
    • 1.1为什么学习jsp?
    • 1.2Jsp全称
    • 1.3Jsp只能运行在服务器中,不能直接使用浏览器打开
    • 1.4Jsp本质是一个Servlet
    • 1.5jsp能够以HTML页面的方式呈现数据,是一个可以嵌入java代码的HTML
  • 2.Jsp工作原理
  • 3.Jsp基本语法
    • 3.1指令
    • 3.3代码脚本片段
    • 3.4表达式
    • 3.5 声明
    • 3.6注释
  • 4.jsp中常用指令
    • 4.1page指令
    • 4.2include指令【静态包含】
  • 5.jsp中常用的动作标签
    • 5.1动态包含
    • 5.2转发
  • 6.jsp中九大隐式对象(内置对象、隐含对象)【重点】
    • 6.1pageContext
    • 6.2request
    • 6.3session
    • 6.4application
    • 6.5page
    • 6.6response
    • 6.7config
    • 6.8out
    • 6.9exception
  • 7.jsp中的四大域对象 【重点】
    • 7.1什么是【域对象】?
    • 7.2域对象共性&使用
    • 7.3域对象有效范围

1.JSP简介

1.1为什么学习jsp?

以【登录业务】为例,当登录失败后,跳转回login.html页面时,需要提示用户【输入用户名和密码有误】。此时,目前只有两种解决方案:

  • 1.在Servlet中使用响应流。不足:有大量HTML内容,占据响应资源
  • 2.在HTML中重建一个【带有提示信息】的login2.html.不足:login.html和login2.html高度冗余。
    总结:完美解决方案,使用动态页面,jsp【在页面中将数据动态化显示】

1.2Jsp全称

Java Server Pages:Java服务器端页面

1.3Jsp只能运行在服务器中,不能直接使用浏览器打开

1.4Jsp本质是一个Servlet

  • jsp更适合于显示页面数据,数据采集
  • servlet更适合于业务处理【业务请求,做出响应】

1.5jsp能够以HTML页面的方式呈现数据,是一个可以嵌入java代码的HTML

2.Jsp工作原理

  • 第一次运行xxx.jsp文件时,服务器将xxx.jsp文件先翻译成xxx_jsp.java文件,再编译成xxx_jsp.class文件。
  • 以后再运行xxx.jsp文件时
    – 如果代码发生改变,服务器将会再次翻译&编译当前xxx.jsp文件
    –如果代码未发生改变,服务器不会再次翻译&编译当前xxx.jsp文件

3.Jsp基本语法

3.1指令

  • 格式:<%@%>
  • 常用指令:<%@ page%>、<%@include%>、<%@taglib%>## 3.2模板元素
  • html、css、js

3.3代码脚本片段

  • 格式:<%%>
  • 作用:在_jspService()方法中,书写java代码

3.4表达式

  • 格式:<%=%>
  • 作用:将数据显示到页面,类似Servlet的PrintWriter的write()方法作用。【out.print()】

3.5 声明

  • 格式:<%!%>
  • 作用:在当前翻译后的xxx_jsp.java类中,书写java代码

3.6注释

  • java注释:// /**/
  • html注释:
  • jsp注释:<%-- --%>

4.jsp中常用指令

4.1page指令

  • 语法:<%@page属性=属性值 属性2=属性2 …%>
  • 属性:
    – language:设置当前jsp中语言。有且仅有java。
    – contentType:与response.setContentType()方法作用一致。【设置服务器编码与浏览器解码】
    – import:导包
    – pageEncoding:设置jsp页面的编码字符集
    – errorPage:设置当前页面错误时的跳转页面。【错误位置在脚本片段中,声明中错误无法捕获】
    – isErrorPage:设置当前页面是否为错误页面,默认值:false
    —true:设置当前页面为异常页面,可以使用exception内置对象,捕获异常。
    — false:设置当前页面不为异常页面,不可以使用exception内置对象,捕获异常。

4.2include指令【静态包含】

  • 语法:<%@ include file=""%>
  • 属性:file=“设置被包含文件的路径”
  • 特点:被包含的文件不会被翻译&编译。(先包含,再翻译&编译)
  • 作用:在当前文件中,包含其他文件
  • 应用场景:包含静态文件【html\css\js】或有少量Java代码的文件

5.jsp中常用的动作标签

jsp的动作标签语法:jsp:标签名

5.1动态包含

  • 语法:<jsp:include page=""/>
  • 属性:page=“设置被包含文件的路径 ”
  • 特点:被包含的文件同时被翻译&编译。【先翻译&编译,再包含】
  • 作用:在当前文件中,包含其他文件
  • 应用场景:包含文件中含有大量的java代码

5.2转发

  • 语法:<jsp:forward page=""></jsp:forward>
  • 属性:page:“设置转发的路径”
  • 作用:转发请求
  • 子标签:
<jsp:forward page="include_demo.jsp"><jsp:param name="stuName" value="zs"/>
</jsp:forward>

注意:如果转发中不需要传递参数时,那么该标签的开始标签和结束标签之间,不允许书写任何内容。【包括空格都不能书写】,正确的书写语法如下:

<jsp:forward page="include_demo.jsp"></jsp:forward>

6.jsp中九大隐式对象(内置对象、隐含对象)【重点】

什么是隐式对象?
无需程序员自己实例化的对象。【jsp隐式对象,是服务器预先定义&实例化的对象】
注意:jsp默认页面中只有8个隐式对象,需要设置isErrorPage=“true”时,才会出现exception这个隐式对象。
具体隐式对象如下图:

6.1pageContext

  • 类型:java.servlet.jsp.PageContext
  • 定义:代表页面【域对象】
  • 作用:
    –1.页面域对象
    –2.获取其他8个隐式对象。【九大隐式对象的大哥,大哥可以调用其他8个小弟】 pageContext.getRequest()或pageContext.getXXX()
  • 在Servlet中的获取方式:无

6.2request

  • 类型:java.servlet.http.HttpServletRequest
  • 定义:代表浏览器向服务器发送请求报文,封装到了request对象中。该对象由服务器【容器】创建,并以参数的形式,传入到service()方法中,最终传入到doGet()和doPost()方法中。
  • 作用:
    –1.获取请求参数:
    什么是请求参数【请求参数有哪些】?
    请求参数,整体可以分为两类
    1.附加在url的后面的值,就是请求参数
    2.表单中从存在name属性值的表单项,也是请求参数
    request.getParameter();获取单个请求参数
    request.getParameterValues();获取多个请求参数【name相同】
    –2.获取URL信息【http://localhost:8080/day07_http_servlet】
    1.获取协议名:request.getScheme()
    2.获取主机名:request.getServerName()
    3.获取主机端口号:request.getServerPort()
    4.获取上下文路径【带/+项目名】:request.getContextPath()
    –3.获取请求头信息
    request.getHeader()
    –4.转发【路径跳转】,转发后地址栏不变
    获取转发器:RequestDispatcher rd=request.getRequestDistpatcher(“跳转URL”);
    执行转发:rd.forward(request,response);
    –5.请求域路径:
    ServletContext
    HttpServletRequest
  • 在Servlet中的获取方式,可以再doGet()方法中,doPost()方法中直接使用。

6.3session

  • 类型:java.servlet.http.HttpSession
  • 定义:代表浏览器与服务器之间的会话
  • 作用:会话域对象
  • 在Servlet中的获取方式:request.getSession()

6.4application

  • 类型:javax.servlet.ServletContext
  • 定义:代表当前web应用程序,当服务器启动时被创建。每个应用程序都有唯一的ServletContext对象。
  • 作用:
    –1.获取当前上下文路径:servletContext.getContextPath();
    –2.获取指定文件的真实路径:servletContext.getRealPath();
    –3.获取【当前上下文】初始化参数:servletContext.getInitParam()
    –4.上下文域对象,共享数据【共4个域对象】servletContext.getAttribute()
  • 在Servlet的获取方式中:直接在doGet()或doPost()中调用getServletContext()获取。

6.5page

  • 类型:java.lang.Object
  • 源码:final.java.lang.Object page=this;
  • 作用:当前类的对象
  • 在Servlet的获取方式:this

6.6response

  • 类型:javax.servlet.http.HttpServletResponse
  • 在Servlet中的获取方式:可以再doGet()方法中,也可以在doPost()方法中直接使用。

6.7config

  • 类型:javax.servlet.ServletConfig
  • 定义:ServletConfig接口封装了Servlet的配置信息,每个Servlet都有唯一对应的ServletConfig对象
  • 作用:
    1.获取当前Servlet名称:servletConfig.getServletName()
    2.获取ServletContext对象:servletConfig.getServletContext()
    3.获取【当前Servlet】初始化参数:servletConfig.getInitParam()
  • 在Servlet中的获取方式:直接在doGet()或doPost()中调用getServletConfig()获取

6.8out

  • 类型:javax.serlvet.jsp.JspWriter
  • 定义&作用:与Servlet中的PrintWriter作用一致。
  • 作用:与Servlet中的PrintWriter作用 一致。【响应数据到页面】jspWriter与PrintWriter均继承到java.io.Writer
  • 在Servlet中的获取方式:无【PrintWriter writer=response.getWriter()】

6.9exception

  • 类型:java.lang.Throwable
  • 定义&作用:捕获处理异常
  • 在Servlet的获取方式:直接实例化

7.jsp中的四大域对象 【重点】

7.1什么是【域对象】?

  • 生活中的“域对象”:以快递行业为例:同区快递、同城快递、全国 快递、全球快递。主要在不同区域直接传递【共享】商品、物品。
  • 程序中的域对象:主要负责在不同web资源之间进行数据交换。【数据共享】
  • jsp中的四大域对象:pageContext、request、session、application。注意:Servelet中只有:request、session、application。

7.2域对象共性&使用

  • 每个域对象内部都维护一个Map<String,Object>,域对象的共同方法如下:
    –void setAttribute(String key,Object value):将数据存放到域中
    –Object getAttribute(String key):从域对象中获取数据
    –void removeAttribute(String key):将数据从域中移除

7.3域对象有效范围

  • pageContext【页面域】
    –作用域:当前页面中共享数据有效,离开 当前页面失效。
    每个页面都有唯一的pageContext对象
  • request【请求域】
    –作用域范围:当前请求有效,离开当前请求失效。
    –当前请求:转发、直接访问某个页面时为当前请求
    –离开当前请求:重定向、、location等跳转页面时,即为离开当前页面。
    –总结:只要【未使用转发时】路径发生改变,就离开当前请求。
  • session【会话域】
    –作用域范围:当前会话中有效,离开当前页面会话失效。
    –当前会话:当前浏览器不关闭或浏览器不更换时,即为当前会话。【会话与浏览器一一对应,与服务器无关】
    –离开当前会话:关闭浏览器即为会话结束,不同浏览器之间不能共享会话。【默认情况】
  • application【上下文域,web域】
    –作用域范围:当前web应用在服务器中启动状态,即有效。当前web应用关闭或卸载,即失效。
    –有效:当前web应用为启动状态
    –失效:关闭服务器,重启服务器,卸载web应用时,即为失效。
  • 总结:域对象的大小关系:pageContext<request<session<application
    在使用域对象时,能使用小域就不使用大域。

JSP-java服务器端页面【学习笔记】相关推荐

  1. JavaWeb(八)——JSP(Java服务器端页面)

    文章目录 1. JSP定义 2. JSP原理 3. JSP基础语法 4. JSP指令 5. 九大内置对象 6. JSP标签.JSTL标签.EL表达式 1. JSP定义 Java Server Page ...

  2. [转]Java中文处理学习笔记——Hello Unicode

    Java中文处理学习笔记--Hello Unicode 作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com 写于:2002/07 最后更新: ...

  3. Java中文处理学习笔记——Hello Unicode (转)

    Java中文处理学习笔记--Hello Unicode (转)[@more@] Java中文处理学习笔记--Hello Unicode 作者: 车东 chedong@bigfoot.com 最后更新: ...

  4. Java中文处理学习笔记

    Java中文处理学习笔记--Hello Unicode 作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com 写于:2002/07 最后更新: ...

  5. JSP (java服务器页面)

    JSP (java服务器页面) 本质是servlet 底层是java文件 具体内容包含servlet中的内容 并且可以输出 pre标签 预格式化标签 能保留多个空格和tab缩进的位置 (不需要 空格) ...

  6. java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间

    资源名称:Java JDK 8学习笔记 PDF 内容简介: ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念.操作.应用等问题及解决方案 ●针对Java SE 8新功能 ...

  7. Java基础篇 学习笔记

    List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...

  8. 01.Java 编程入门学习笔记20210307

    Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...

  9. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  10. java.util.List学习笔记

    概述 在Java中,List是一种特殊的集合结构,即:List是一种有序的集合.在List接口的实现中,需要提供根据列表下表对元素进行操作的方法,包括:插入,删除,查询和修改等: List一般允许重复 ...

最新文章

  1. MySQL Innodb日志机制深入分析
  2. R语言ggplot2地理信息可视化(下)
  3. 温故一下Linux CentOS的VI/VIM命令
  4. php 协程 mysql_实现一个协程版mysql连接池
  5. 输出EXCEL文件的通用函数
  6. 5G发展是绵绵秋雨 应循序渐进
  7. 计算机科学与技术专业《计算机网络原理》课程实验指导书,计算机科学导论,课程实验指导书解读.pdf...
  8. @微信官方,给我微信旁边加个福字
  9. centos 6.8 下安装redmine(缺陷跟踪系统)
  10. 微型计算机的硬件系统普遍采用,2016年9月计算机一级《MS Office》考题与答案
  11. jQuery(2)——如何使用jQuery回显数据
  12. 在上海创业的日子之注册公司的详细流程
  13. 数显之家快讯:【SHIO世硕心语】小聪明毁大前程,所有人都应该深思!
  14. Python分析《武林外传》
  15. MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序
  16. activiti5.21 + SVG 绘制流程图 高亮显示已完成节点
  17. 物质模拟器5.0版 新增炸药及可以连续爆炸
  18. 一文搞懂css 2D动画效果
  19. Variant 数据类型介绍
  20. 如何判断轨道上行下行

热门文章

  1. 如何在MATLAB上用GPU加速计算
  2. 关于C/C++中的short类型
  3. es6 使用filter给对象数组去重
  4. 将营销进行到底的逸仙电商,难向“完美”
  5. IO进程——系统IO与文件IO
  6. 【MySQL数据库笔记 - 进阶篇】(四)视图/存储过程/触发器
  7. python read( )函数
  8. PSINS惯性系初始对准与代码解读
  9. PHP有哪些优势和劣势
  10. 张艾迪(创始人):拥抱单身与自由的Eidyzhang