《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 安装并启动 ...
随机推荐
- vue-cli3.x npm create projectName 报错: Unexpected end of JSON input while parsing near......
npm 版本与node版本还有webpack版本之间的问题 清理缓存,“ npm cache clean --force " 一切OK
- git push 时 failed to push some refs 的解决方案
我们在利用 GIt 上传代码的时候,往往会遇到这样一个问题,导致我们的代码没有办法正常上传到仓库中 造成这个问题的原因其实很简单,就是因为远程仓库和本地库不一致. 基于这样的一个问题,解决办法自然也就 ...
- spring boot 2.x 系列 —— spring boot 整合 druid+mybatis
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构 项目查询用的表对应的建表语句放置在resour ...
- spring 5.x 系列第5篇 —— 整合 mybatis + druid 连接池 (xml配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 项目目录结构 1.创建maven工程,除了Spring基本依赖外,还需要导 ...
- 【java自定义注解2】java自定义注解结合Spring AOP
承接上一篇,注解应用于属性,本篇定义了一个用于方法的注解,结合Spring AOP 实现 切面编程. 以下demo演示使用了SpringBoot,与SSM中使用方式大致相同,效果如下: 1.自定义注解 ...
- 如何使用共享网卡的NAT模式配置VMware12中的CentOS6.7的上网功能
1.首先共享网卡的NAT模式是通过win10中的VMnet8来通信的,如下双击VMnet8 2.点击[详细信息]查看VMnet8的IPV4地址为192.168.232.110,掩码为255.255.2 ...
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'wher id = 41' at line 1
where 没有打完整
- STM32 HAL库学习系列第7篇---定时器TIM 输入捕获功能
测量脉冲宽度或者测量频率 基本方法 1.设置TIM2 CH1为输入捕获功能: 2.设置上升沿捕获: 3.使能TIM2 CH1捕获功能: 4.捕获到上升沿后,存入capture_buf[0], ...
- Python机器学习经典实例电子版和附带源码
Python机器学习经典实例电子版和附带源码 下载:https://pan.baidu.com/s/1m6ODNJk--PWHW8Vdsdjs-g 提取码:nyc0 分享更多python数据分析相关电 ...
- leadcode的Hot100系列--78. 子集--回溯
上一篇说了使用位运算来进行子集输出,这里使用回溯的方法来进行排序. 回溯的思想,我的理解就是: 把解的所有情况转换为树或者图,然后用深度优先的原则来对所有的情况进行遍历解析. 当然,因为问题中会包涵这 ...