《JSP数据交互总结》
1.1.1为什么需要动态网页
静态网页的内容是固定的,不能提供个性化和定制化的服务,因此,动态网页技术逐渐发展起来。
1.1.2什么是动态页面
动态网页是指在服务器端运行的使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容。
动态网页需要使用服务器端脚本语言。
动态网页的优势是什么?
1.交互性:即网页会根据用户的要求和选择而动态改变和显示内容。
2.自动更新:即无须改变页面代码,便会自动生成新的页面内容,可以大大节省工作量。
3.随机性:即当不同的时间,不同的人访问同一网址时会产生不同的页面效果。
1.1.3如何实现动态网页
以JSP技术为核心,结合其他相关技术
1.1.4为什么学习B/S架构技术
C/S(Client/Server, 客户端/服务器端)
B/S(Browser/Server,浏览器/服务器)
bs:客户端-服务器
cs:浏览器-服务器
2000年以前,c/s结构占据开发领域的主流,随着b/s结构的发展,c/s结构已经逐步被b/s结构取代
数据安全性
数据实时性
网络应用限制:前者仅适用于局域网内部用户或宽带用户,后者几乎适用于所有的网络结构
服务响应及时性
1.1.5什么是B/S架构
B/S架构的Web应用程序由于不在受安装客户端的限制,访问极其简便,因此越来越多地被企业采用。
1.1.6B/S架构的工作原理
1.浏览器接受用户的输入
2.浏览器向服务器端发送请求
3.数据处理
4.发送响应
1.1.7什么是URL
URL(Uniform Reaource Locator)统一资源定位符
1.1.8URL的组成
1.协议:HTTP协议,即超文本传输协议
2.服务器域名或IP:由服务器收集用户请求,经过处理再返回响应到浏览器端
3.端口号:服务器用于内外部通信的通道
4.路径:包含两层含义.
1.2.1Tomcat服务器
Tomcat是一个免费的开源的Web容器
1.3JSP简介
1.跨平台性,易维护性,易管理性等优点

1.4JSP页面组成
由静态内容,指令,表达式,小脚本,声明,标准动作,注释等元素构成
1.4.1静态内容
静态内容是JSP页面中的静态文本,其基本是HTML文本,与java 和JSP语法无关
1.4.2JSP指令元素
JSP指令以“<%@”开始,以“%>”结束
page指令
page指令用来设定JSP页面的全局属性,该配置作用于整个JSP页面。语法格式为<%@page 属性="属性值" 属性="属性值"%>。
include指令
include指令用于在JSP文件中include一个包含文本或代码的文件,使用include指令包含文件,执行时,先 将文件的内容插入到include指令所在的位置,执行完被包含文件的内容后,在继续执行该JSP文件。语法格式: <%@ include file="被包含文件的URL"%>。
taglib指令
表达式:<%= %>
声明: <%! %>
1.4.4JSP中的注释
<!-- HTML注释(客户端可以看到源代码) -->
<%-- JSP注释(客户端看不到源代码) --->
<% //使用预定格式将日期转换成字符串 %>
1.5JSP的执行过程
1.翻译阶段
2.编译阶段
3.执行阶段
1.6JSP九大内置对象
内置对象特点:
1. 由JSP规范提供,不用编写者实例化。
2. 通过Web容器实现和管理
3. 所有JSP页面均可使用
4. 只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)
常用内置对象:
1. 输出输入对象:request对象、response对象、out对象
2. 通信控制对象:pageContext对象、session对象、application对象
3. Servlet对象:page对象、config对象
4. 错误处理对象:exception对象
对象常用方法说明:
1.out对象(数据流 javax.servlet.jsp.jspWriter)
| 方法名 | 说明 |
| print或println | 输出数据 |
| newLine | 输出换行字符 |
| flush | 输出缓冲区数据 |
| close | 关闭输出流 |
| clear | 清除缓冲区中数据,但不输出到客户端 |
| clearBuffer | 清除缓冲区中数据,输出到客户端 |
| getBufferSize | 获得缓冲区大小 |
| getRemaining | 获得缓冲区中没有被占用的空间 |
| isAutoFlush | 是否为自动输出 |
2.request对象(请求信息 javax.servlet.http.HttpServletrequest)
| 方法名 | 说明 |
| isUserInRole | 判断认证后的用户是否属于某一成员组 |
| getAttribute | 获取指定属性的值,如该属性值不存在返回Null |
| getAttributeNames | 获取所有属性名的集合 |
| getCookies | 获取所有Cookie对象 |
| getCharacterEncoding | 获取请求的字符编码方式 |
| getContentLength | 返回请求正文的长度,如不确定返回-1 |
| getHeader | 获取指定名字报头值 |
| getHeaders | 获取指定名字报头的所有值,一个枚举 |
| getHeaderNames | 获取所有报头的名字,一个枚举 |
| getInputStream | 返回请求输入流,获取请求中的数据 |
| getMethod | 获取客户端向服务器端传送数据的方法 |
| getParameter | 获取指定名字参数值 |
| getParameterNames | 获取所有参数的名字,一个枚举 |
| getParameterValues | 获取指定名字参数的所有值 |
| getProtocol | 获取客户端向服务器端传送数据的协议名称 |
| getQueryString | 获取以get方法向服务器传送的查询字符串 |
| getRequestURI | 获取发出请求字符串的客户端地址 |
| getRemoteAddr | 获取客户端的IP地址 |
| getRemoteHost | 获取客户端的名字 |
| getSession | 获取和请求相关的会话 |
| getServerName | 获取服务器的名字 |
| getServerPath | 获取客户端请求文件的路径 |
| getServerPort | 获取服务器的端口号 |
| removeAttribute | 删除请求中的一个属性 |
| setAttribute | 设置指定名字参数值 |
3.response对象(响应 javax.servlet.http.HttpServletResponse)
| 方法名 | 说明 |
| addCookie | 添加一个Cookie对象 |
| addHeader | 添加Http文件指定名字头信息 |
| containsHeader | 判断指定名字Http文件头信息是否存在 |
| encodeURL | 使用sessionid封装URL |
| flushBuffer | 强制把当前缓冲区内容发送到客户端 |
| getBufferSize | 返回缓冲区大小 |
| getOutputStream | 返回到客户端的输出流对象 |
| sendError | 向客户端发送错误信息 |
| sendRedirect | 把响应发送到另一个位置进行处理 |
| setContentType | 设置响应的MIME类型 |
| setHeader | 设置指定名字的Http文件头信息 |
4.session对象(会话 javax.servlet.http.HttpSession)
| 方法名 | 说明 |
| getAttribute | 获取指定名字的属性 |
| getAttributeNames | 获取session中全部属性名字,一个枚举 |
| getCreationTime | 返回session的创建时间 |
| getId | 获取会话标识符 |
| getLastAccessedTime | 返回最后发送请求的时间 |
| getMaxInactiveInterval | 返回session对象的生存时间单位千分之一秒 |
| invalidate | 销毁session对象 |
| isNew | 每个请求是否会产生新的session对象 |
| removeAttribute | 删除指定名字的属性 |
| setAttribute | 设定指定名字的属性值 |
5.pageContext对象(页面上下文 javax.servlet.jsp.PageContext)
| 方法名 | 说明 |
| forward | 重定向到另一页面或Servlet组件 |
| getAttribute | 获取某范围中指定名字的属性值 |
| findAttribute | 按范围搜索指定名字的属性 |
| removeAttribute | 删除某范围中指定名字的属性 |
| setAttribute | 设定某范围中指定名字的属性值 |
| getException | 返回当前异常对象 |
| getRequest | 返回当前请求对象 |
| getResponse | 返回当前响应对象 |
| getServletConfig | 返回当前页面的ServletConfig对象 |
| getServletContext | 返回所有页面共享的ServletContext对象 |
| getSession | 返回当前页面的会话对象 |
6.application对象(应用程序 javax.servlet.ServletContext)
| 方法名 | 说明 |
| getAttribute | 获取应用对象中指定名字的属性值 |
| getAttributeNames | 获取应用对象中所有属性的名字,一个枚举 |
| getInitParameter | 返回应用对象中指定名字的初始参数值 |
| getServletInfo | 返回Servlet编译器中当前版本信息 |
| setAttribute | 设置应用对象中指定名字的属性值 |
7.config对象(Servlet的配置信息 javax.servlet.ServletConfig)
| 方法名 | 说明 |
| getServletContext | 返回所执行的Servlet的环境对象 |
| getServletName | 返回所执行的Servlet的名字 |
| getInitParameter | 返回指定名字的初始参数值 |
| getInitParameterNames | 返回该JSP中所有的初始参数名,一个枚举 |
8.page对象(当前JSP的实例,java.lang.object)
它代表JSP被编译成Servlet,可以使用它来调用Servlet类中所定义的方法
9.exception对象(运行时的异常,java.lang.Throwable)
被调用的错误页面的结果,只有在错误页面中才可使用,
即在页面指令中设置:<%@page isErrorPage=“true”%>
Request(Javax.servlet.ServletRequest)它包含了有关浏览器请求的信息.通过该对象可以获得请求中的头信息、Cookie和请求参数。
Response(Javax.servlet.ServletResponse)作为JSP页面处理结果返回给用户的响应存储在该对象中。并提供了设置响应内容、响应头以及重定向的方法(如cookies,头信息等)
Out(Javax.servlet.jsp.JspWriter)用于将内容写入JSP页面实例的输出流中,提供了几个方法使你能用于向浏览器回送输出结果。
pageContext(Javax.servlet.jsp.PageContext)描述了当前JSP页面的运行环境。可以返回JSP页面的其他隐式对象及其属性的访问,另外,它还实现将控制权从当前页面传输至其他页面的方法。
Session(javax.servlet.http.HttpSession)会话对象存储有关此会话的信息,也可以将属性赋给一个会话,每个属性都有名称和值。会话对象主要用于存储和检索属性值。
Application(javax.servle.ServletContext)存储了运行JSP页面的servlet以及在同一应用程序中的任何Web组件的上下文信息。
Page(Java.lang.Object)表示当前JSP页面的servlet实例
Config(javax.servlet.ServletConfig)该对象用于存取servlet实例的初始化参数。
Exception(Javax.lang.Throwable)在某个页面抛出异常时,将转发至JSP错误页面,提供此对象是为了在JSP中处理错误。只有在错误页面中才可使用<%@page isErrorPage=“true”%>
|
Jsp内置对象 |
功能 |
主要方法 |
|
out |
向客户端输出数据 |
print() println() flush() clear() isAutoFlush() getBufferSize() close() ………… |
|
request |
向客户端请求数据 |
getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() ………….. |
|
response |
封装了jsp产生的响应,然后被发送到客户端以响应客户的请求 |
addCookie() sendRedirect() setContentType() flushBuffer() getBufferSize() getOutputStream() sendError() containsHeader()…………… |
|
application |
||
|
config |
表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet |
getServletContext() getServletName() getInitParameter() getInitParameterNames()…………… |
|
page |
Jsp实现类的实例,它是jsp本身,通过这个可以对它进行访问 |
flush()……… |
|
pagecontext |
为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 |
forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute() findAttribute() …………… |
|
session |
用来保存每个用户的信息,以便跟踪每个用户的操作状态 |
getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() invalidate() isNew() |
|
exception |
反映运行的异常 |
getMessage()………… |
《JSP数据交互总结》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- kafka笔记1
Kafka是一款基于发布和订阅的消息系统.一般被称为分布式提交日志或分布式流平台. Kafka系统是按照一定的顺序持久化保存的,可以按需读取. Kafka的数据单元被称为消息.类似于数据库中表的一行记 ...
- 《linux内核设计与实现》阅读笔记-进程与调度
一.进程 process: executing program code(text section) data section containing global variables open f ...
- openstack namespace 的应用
查看虚拟机网络连通性 1.neutron port-list | grep IP 2.neutron port-show ID 查看subnet 3.neutron subnet-show ID 查看 ...
- 视频直播:Windows中各类画面源的截取和合成方法总结
当今,视频直播技术和实时音视频技术已经是很多行业必备,典型的应用场景有教育直播.远程视频会议.互联网娱乐等.在移动端发起直播,其画面源的种类是十分有限的,无非是取摄像头.截屏等.PC端由于其系统资源充 ...
- 《JavaScript 高级程序设计》读书笔记
文章目录 第三章 基本语法 第四章 变量.作用域和内存问题 第五章 应用类型 1. Array 类型 2. RegExp 类型 3. Function 类型 4. String 类型 第六章 面向对象 ...
- 【IDE】idea在debug模式启动非常慢,debug模式一直在启动中状态
现象:一直处于启动中状态,日志刷的很慢,非debug模式正常启动: 最终解决方式:下图按钮,取消所有打过的断点,问题解决
- JVM史上最全实践优化没有之一
JVM史上最全优化没有之一 1.jvm的运行参数 1.1 三种参数类型 1.1.1 -server与-clinet参数 2.1 -X参数 2.1.1 -Xint.-Xcomp.-Xmixed 3.1 ...
- POJ 2449:Remmarguts' Date(A* + SPFA)
题目链接 题意 给出n个点m条有向边,源点s,汇点t,k.问s到t的第k短路的路径长度是多少,不存在输出-1. 思路 A*算法是启发式搜索,通过一个估价函数 f(p) = g(p) + h(p) ,其 ...
- 常见Code Review过程中发现的问题
软件环境:Spring MVC + MyBatis 主要体现在两个方面,一个是编码习惯问题,另一个是编码质量的问题.编码习惯主要有日志编写.代码注释以及编码风格的问题,而编码质量则与很多方面相关,比如 ...
- Skyline WEB端开发5——添加标签后移动
针对于标签或者模型,在skyline上可以进行移动.可以让一个模型可以像无人机似的飞行,或者描述从一个点到另一个点的飞行轨迹. 话不多说,直接上干货. 第一步 添加标签 参考网址:https://ww ...