《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 安装并启动 ...
随机推荐
- java多线程之wait和notify
多线程中的通信是非常重要的概念,线程直接实现通信就可以并发完成很多复杂工作. java在Object类中就设计了wait()和notify()两个方法,以解决这个问题. 1.释义: wait()方法将 ...
- ABP开发框架前后端开发系列---(5)Web API调用类在Winform项目中的使用
在前面几篇随笔介绍了我对ABP框架的改造,包括对ABP总体的介绍,以及对各个业务分层的简化,Web API 客户端封装层的设计,使得我们基于ABP框架的整体方案越来越清晰化, 也越来越接近实际的项目开 ...
- Laravel ---【转】PhpStorm下Laravel代码智能提示
[转]http://blog.csdn.net/pangchengyong0724/article/details/54706775 第一步:在项目的composer.json中添加如下一行 &quo ...
- Hexo+NexT(二):Hexo站点配置详解
阅读本篇之前,假定读者已经有了Node.js的基础,如需要补充Node.js知识的,请自行百度. Hexo是在Node.js框架下的一个项目,利用Node.js提供的强大功能,完成从Markdown到 ...
- 先订一个小目标,把微信小程序搞懂
目标:系统性学习微信小程序. 第一阶段:熟悉微信小程序及前端开发(结合web前端学习) 第二阶段:了解设计及后端 第三阶段:学习后端.
- React Router 4.0 + webpack 实现组件按需加载
网上关于React Router 4.0的按需加载文章有很多,大致的思路都一样,但是其实具体实现起来却要根据自己的实际情况来定,这里主要介绍一下我的实现方式. 主要方式是通过Route组件的rende ...
- 【dateFormatSymbols】JAVA特殊日期格式转换
记录:特殊日期格式转换,如将yyyyMMdd转为01MAY2019 public static final String DATE_VIP_FORMAT = "yyyyMMdd"; ...
- Matplotlib快速入门
Matplotlib 可能还有小伙伴不知道Matplotlib是什么,下面是维基百科的介绍. Matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy.它为利用通用的图形用 ...
- jQuery调整表列(左右拉动调整列宽)插件__colResizable,动态列如何使用
官网地址:http://www.bacubacu.com/colresizable/ 这里值得注意的是,如果是动态加入的列,则需要先清理调用插件生成的class,id和div之后再重新调用才会有作用. ...
- Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract 报错解决
java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.isClosed()Z is abstract ----- ...