JSP-java服务器端页面【学习笔记】
文章目录
- 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服务器端页面【学习笔记】相关推荐
- JavaWeb(八)——JSP(Java服务器端页面)
文章目录 1. JSP定义 2. JSP原理 3. JSP基础语法 4. JSP指令 5. 九大内置对象 6. JSP标签.JSTL标签.EL表达式 1. JSP定义 Java Server Page ...
- [转]Java中文处理学习笔记——Hello Unicode
Java中文处理学习笔记--Hello Unicode 作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com 写于:2002/07 最后更新: ...
- Java中文处理学习笔记——Hello Unicode (转)
Java中文处理学习笔记--Hello Unicode (转)[@more@] Java中文处理学习笔记--Hello Unicode 作者: 车东 chedong@bigfoot.com 最后更新: ...
- Java中文处理学习笔记
Java中文处理学习笔记--Hello Unicode 作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com 写于:2002/07 最后更新: ...
- JSP (java服务器页面)
JSP (java服务器页面) 本质是servlet 底层是java文件 具体内容包含servlet中的内容 并且可以输出 pre标签 预格式化标签 能保留多个空格和tab缩进的位置 (不需要 空格) ...
- java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间
资源名称:Java JDK 8学习笔记 PDF 内容简介: ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念.操作.应用等问题及解决方案 ●针对Java SE 8新功能 ...
- Java基础篇 学习笔记
List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...
- 01.Java 编程入门学习笔记20210307
Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...
- java/android 设计模式学习笔记(1)--- 单例模式
前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...
- java.util.List学习笔记
概述 在Java中,List是一种特殊的集合结构,即:List是一种有序的集合.在List接口的实现中,需要提供根据列表下表对元素进行操作的方法,包括:插入,删除,查询和修改等: List一般允许重复 ...
最新文章
- MySQL Innodb日志机制深入分析
- R语言ggplot2地理信息可视化(下)
- 温故一下Linux CentOS的VI/VIM命令
- php 协程 mysql_实现一个协程版mysql连接池
- 输出EXCEL文件的通用函数
- 5G发展是绵绵秋雨 应循序渐进
- 计算机科学与技术专业《计算机网络原理》课程实验指导书,计算机科学导论,课程实验指导书解读.pdf...
- @微信官方,给我微信旁边加个福字
- centos 6.8 下安装redmine(缺陷跟踪系统)
- 微型计算机的硬件系统普遍采用,2016年9月计算机一级《MS Office》考题与答案
- jQuery(2)——如何使用jQuery回显数据
- 在上海创业的日子之注册公司的详细流程
- 数显之家快讯:【SHIO世硕心语】小聪明毁大前程,所有人都应该深思!
- Python分析《武林外传》
- MATLAB 将RGB颜色空间转为HSI颜色空间、LAB颜色空间 原理及程序
- activiti5.21 + SVG 绘制流程图 高亮显示已完成节点
- 物质模拟器5.0版 新增炸药及可以连续爆炸
- 一文搞懂css 2D动画效果
- Variant 数据类型介绍
- 如何判断轨道上行下行