JSP学习笔记(二)
JSP内置对象
- request对象
- response对象
- session对象
- application对象
- out对象
有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这就是JSP的内置对象
1.request对象
request对象是实现了ServletRequest接口类的一个实例
[1].HTTP请求
HTTP通信协议是用户与服务器之间一种提交信息与响应信息的通信协议,其中request封装了用户提交的信息,即请求。
HTTP请求包括请求行,头域和可能的信息体,如:
GET/hello.htm HTTP/1.1
Host: localhost:8080
accept-encoding: gzip, deflate
第一行是请求行,其中GET是请求行规定的请求方法,hello.htm是请求的资源,HTTP/1.1是使用的HTTP协议的版本。
第二行是头(header),是请求资源文件所在的地址。
第三行也是头(header),是告诉服务器端:我的浏览器支持gzip和deflate格式的网页压缩格式哦
[2].获取用户提交的信息
<form action = "abc.jsp" method = "post">
<input type = "text" name = "boy" value = "ok">
<input type = "submit" value = "提交">
</form>
用户向abc.jsp提交表单,而我们在abc.jsp中使用:
request.getParameter(“boy”)就可以获取name为boy的文本输入框的内容
上一章中的 <jsp: param name = “” value = “”> 也可以通过这种方式来获取
为了防止获取的中文信息乱码,可以对request设置编码:
request.setCharacterEncoding("utf-8");
2.response对象
response对象对用户的请求作出动态响应,向用户发送数据
[1]动态响应contentType属性
response.setContentType("application/msword; charset = utf-8");
例如让用户点击保存当前页面为word文档,则在用户点击后设置该属性,此时用户浏览器就会启用word来显示或保存当前页面
[2]HTTP响应
响应由状态行开始,可以包含几个头即可能的信息体,如:
请求成功,则返回"HTTP/1.1 200 OK"
请求失败,则返回"HTTP/1.1 404 Object Not Found"
[3]response重定向
response.sendRedirect(“url”);即跳转页面到url
注:详细过程:redirect 会首先发一个response给浏览器,然后浏览器收到这个response后再发一个requeset给服务器,服务器接收后发新的response给浏览器。这时页面从浏览器获取来的是一个新的request。这时,在原来跳转之前的页面用request.setAttribute存的东西都没了,如果在当前的新页面中用request.getAttribute取,得到的将会是null。这种方式的跳转会改变浏览器的地址栏中的url地址。
addHeader(String head,String value);
setHeader(String head,String value);
用来动态添加新的响应头和头的值,如果添加的头已经存在,则覆盖
3.session对象
session是实现了HttpSession接口类的一个实例
[2]
当一个用户首次访问Web服务目录中的一个JSP页面时,Tomcat服务器产生一个session对象,这个对象调用相应的方法可以存储用户在访问该Web服务目录中各页面期间提交的各种信息,如姓名和性别等等。
这个session对象被分配了一个String类型的id号,Tomcat服务器同时将这个id号发送到用户端,存放在用户的Cookie中。
不同用户之间的session对象互不相同
[3]session对象与URL重写
如果用户端不支持或禁用了Cookie,那么,JSP页面可以通过URL重写来实现session对象的唯一性,就是当用户从一个页面重新连接到一个页面时,通过向这个新的URL添加参数,把session对象的id传递过去,例如如果想跳转到second.jsp页面,代码实现如下:
String str = response.encodeRedirectURL("second.jsp"); //重写
response.sendRedirect(str);
4.application对象
不同Web服务目录下的application不同
5.out对象
out.println和out.print的区别是println会向缓存区写入一个换行,但是浏览器不识别该换行
JSP学习笔记(二)的更多相关文章
- JSP学习笔记(二):Tomcat服务器的安装及配置
一.Tomcat的下载及安装. 前往Tomcat官网下载安装包或者免安装压缩包.链接http://tomcat.apache.org/ 这里,我选择的是Tomcat8.0,而不是最新的Tomcat9. ...
- Servlet和JSP读书笔记(二)
一. GenericServlet 1. 前面写的 Servlet和JSP学习笔记(一) 中的实例都是通过实现Servlet接口编写的,这样存在的问题就是:你必须实现Servlet中的所有方法,而不管 ...
- JSP学习笔记
JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...
- WPF的Binding学习笔记(二)
原文: http://www.cnblogs.com/pasoraku/archive/2012/10/25/2738428.htmlWPF的Binding学习笔记(二) 上次学了点点Binding的 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- JMX学习笔记(二)-Notification
Notification通知,也可理解为消息,有通知,必然有发送通知的广播,JMX这里采用了一种订阅的方式,类似于观察者模式,注册一个观察者到广播里,当有通知时,广播通过调用观察者,逐一通知. 这里写 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Java IO学习笔记二
Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...
随机推荐
- Nginx之反向代理配置(一)
前文我们聊了下Nginx作为web服务器配置https.日志模块的常用配置.rewrite模块重写用户请求的url,回顾请参考https://www.cnblogs.com/qiuhom-1874/p ...
- html5调用摄像头功能
前言 前些天,线上笔试的时候,发现需要浏览器同意开启摄像头,感觉像是 js 调用的,由于当时笔试,也就没想到这么多
- VUE实现Studio管理后台(九):开关(Switch)控件,输入框input系列
接下来几篇作文,会介绍用到的输入框系列,今天会介绍组普通的调用方式,因为RXEditor要求复杂的输入功能,后面的例子会用VUE的component动态调用,就没有今天的这么直观了,控件的实现原理都一 ...
- linux 安装 memcached
1.Linux系统安装memcached,首先要先安装libevent库. yum install libevent libevent-deve 2.安装memcached yum install - ...
- 对javaweb项目中web.xml重用配置的理解(个人学习小结)
<!-- 所有的总结描述性与语言都在注释中 --><?xml version="1.0" encoding="UTF-8"?> < ...
- 基于Canal和Kafka实现MySQL的Binlog近实时同步
前提 近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台.优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存.更新或者软删除)到一个另 ...
- 学习gensim
首先要将字符串分割成词语列表.比如”hurry up”要分割成[“hurry”,”up”]. 对于中文来讲,分词就是一个很关键的问题,不过可以去找一些分词库来实现.我一般用的是jieba. 而对于英文 ...
- java面试汇总一
第一部分 Java SE基础(1) 1.1 java的8种基本数据类型 装箱 拆箱 1.1.1 8种基本的数据类型 1.1.2装箱 拆箱 自动装箱是 Java 编译器在基本数据类型和对应的对象包 ...
- CSS--transform相关属性实现2d到3d的具体变化
先放上一段我写的相关代码(可能有一定冗杂代码,请见谅) <!DOCTYPE html> <html lang="en"> <head> ...
- 有了这套微信小程序x5调试,调试一些简单的开发者工具调试不了的功能不成问题!!!!
1.首先我们需要打开微信 TBS 调试 地址是:http://debugx5.qq.com 2.然后打开手机 打开开发者模式,打开 USB 调试 3.然后 在谷歌浏览器地址栏输入 chrome://i ...