request :
- 结构:
请求行:
方法名(空格)URI(空格)版本
请求头:
浏览器信息
空行:请求头结束
请求数据:post方法
通过request方法获取参数,获取后都是字符串类型。
- request常见方法:
.getMethod();获得请求提交方式
.getRequestURI();获得请求URI
.getHeader("User-Agent");获得请求头特定项
.getRemoteAddr();获得请求IP地址
.getContextPath();返回客户端请求访问web应用的URL入口 如:URL:http://localhost:8080/helloapp/info,该方法返回/helloapp;
.getCookies();返回HTTP请求中的所有cookie
.getQueryString();获得请求中的查询字符串,?后面的内容
.setCharacterEncoding("utf-8");设置字符集
response:
- response常见方法:
.sendRedirect(); 返回指定页面
.getOutputStream(); 返回ServletOutputStream对象,用来输出二进制的正文数据。
.getWriter(); 返回一个PrintWriter对象,用来输出字符串形式的正文数据。
.setCharacterEncoding("utf-8");设置字符集
.setContentType();设置响应正文的MIME类型
MIME类型:描述消息内容类型的因特网标准,指定浏览器按照什么类型进行处理该数据。
三种方式:
1.res.setContentType("text/html;charset=utf-8");
2.res.setContentType("text/html");res.setCharacterEncoding("utf-8");
3.res.setHeader("Content-type","text/html;charset=utf-8");
.setBufferSize(int size);设置存放数据正文的缓冲区大小。
.getBufferSize();返回存放数据正文的缓冲区大小。
.reset(); 清空缓冲区数据,并清空响应状态码和响应头
.restBuffer();只清空缓冲区数据
.flushBuffer();强制把缓冲区数据发送到客户端
.isCommitted();返回布尔值,true:表示缓冲区内容已发送到客户端。
将缓冲区内容发送到客户端几种方法:
1.缓冲区数据满,OutputStream或PrintWriter对象会自动发送。
2.调用.flushBuffer()方法
3.调用OutputStream或PrintWriter对象的flush()或close()方法。
为了保证数据全部提交到客户端,需要在数据输出完毕后调用OutputStream或PrintWriter对象的close()方法。如果servlet中service没有关闭,Tomcat会在调用service方法后关闭输出流,保证数据全部提交到客户端。
如果要设置MIME类型或字符集需要先进行setContentType()和setCharacterEncoding("utf-8")进行设置,才能进行数据传输。
禁止客户端缓存页面:
response.addHeader("Pragma","no-cache"); --适用HTTP1.0的浏览器,不缓存页面
response.setHeader("Cache-Control","no-cache");--适用HTTP1.1的浏览器,不缓存页面
response.setHeader("Expires","0");--设定网页过期时间,立即过期。
JSP
重定向和请求转发:
重定向:
站外跳转,网址改变,返回一个URL给客户端,客户端重新发出请求,进行两次完整的请求响应过程,.sendRedirect("URI");绝对路径“/”后写项目名,取不到request里的值?只能从session中取,可以跨域访问,性能低。
请求转发:
站内跳转,网址不变,客户端只发出一次请求,共享response和request对象, RequestDispatcher rd = request.getRequestDispatcher("URL"); rd.forword(req,res);框架中比较常用。绝对路径“/”后写此应用下的文件名,可以从request中取值,不能跨域访问,性能高
JSP:是一种文件。
1.静态内容:html
2.指令:内部是java代码,通常用来导包或引入文件。
<%@ page 常用来设置文本格式contentType、响应流的编码格式pageEncoding、导包import、语言language
<%@ include file="" 包含外部另一文件,
<%@ taglib 引入标签库的定义
3.内部是java代码
表达式<%= :生成在servlet方法体中
脚本<% :生成在servlet的doPost()/doGet()方法体中
声明<%!:jsp中声明方法、属性。
<% return ; %> :后面代码不执行。
编译时先执行java代码段。
4.动作:标签,有前缀。
5.自定义标签:将java代码封装成标签,解析变慢,开发缓慢,淘汰。
内置9大对象:
page、req、res、session、application(相当于servletContext)、out、config、exception、pagecontext。
注释:
html:<!-- -->
css: /* */
java: //
jsp:<%-- --%>
EL表达式
session
- 概述:
由Tomcat创建javax.servlet.session.HTTPSession
在服务器内存中开辟空间创建会话,存放ip、浏览器等信息
主要给不同请求和响应(客户端一系列的请求响应)存取共享数据
session中主要以键值对的形式存放数据
一旦代码中涉及session,不进行用户登录是不能够进行访问的。
网友评论