二手书网站开发需求分析,深圳便宜的网站建设,广州人才网,跨境电商有哪几个平台简介
Request#xff08;请求#xff09; Response#xff08;响应#xff09; 浏览器会向服务器发送请求数据#xff0c;服务器也需要返回响应数据给浏览器#xff0c;因此我们需要设置对应的类来代表请求数据和响应数据#xff0c;且Servlet中的service方法就需…简介
Request请求 Response响应 浏览器会向服务器发送请求数据服务器也需要返回响应数据给浏览器因此我们需要设置对应的类来代表请求数据和响应数据且Servlet中的service方法就需要对应的请求数据和响应数据的参数 Request存放请求数据可以通过request对象来获取请求数据
Response存放响应数据可以通过response对象设置响应数据 Resquest
Request继承体系 1.Tomcat需要解析请求数据封装为request对象并且创建request对象传递到service方法中
2.Tomcat的实现类实现至HttpServletRequest接口因此使用resquest对象时可以查阅JavaEE API文档的HttpServletRequest接口 Resquest获取请求数据
获取请求数据
请求数据分为3部分
1.请求行 注getRequestURL返回的参数为StringBuffer类型其他方法返回的参数均为String类型 2.请求头 该方法可以通过请求头的名称来得到对应的值 3.请求体 这两个方法分别会返回字节输入流和字符输入流通过返回的输入流即可读取请求体
若请求体中为字符串信息则使用字符输入流即可
若请求体中包含图片等信息则需要使用字节输入流 通用方式获取请求参数 Request在得到请求数据后会自动解析请求参数如图先将参数分离再将名称和值分离最后封装到Map集合中且由于名称可能会重复即键可能会重复因此值为数组类型 Request对象提供相应的方法来得到请求参数 idea更改Servlet模板
在使用通用方式获取请求参数后屏蔽了GET和POST的请求方式代码的不同则代码可以定义为如下格式 在idea中当jar包中包含Servlet后创建类时可以直接创建Servlet类会自动继承相应的类并且重写方法但默认模板中方法中不包含任何内容路径格式也和图片不同因此可以更改模板的样式 方法如下 请求参数中文乱码处理
请求参数中包含中文时会乱码
POST
POST获取请求参数时会获取一个字符输入流并通过流来读取数据而Tomcat默认该流的编码不是UTF-8因此会出现中文乱码现象更改默认流的编码即可 GET
乱码原因
浏览器在得到中文数据后会使用UTF-8来对其进行URL编码但Tomcat的解码为ISO_8859_1且没有提供更改方式因此导致乱码 解决方案
可以将得到的乱码的数据编码成字节数组在对字节数组进行解码 注
1.图中使用的是编码方式的常量有自动提示也可以直接使用字符串来表示对应的编码方式
2.这个方法是通用方法也适用POST Tomcat 8.0 之后已经将GET请求乱码的问题解决设置默认的解码方式为UTF-8 请求转发
请求转发forward一种在服务器内部的资源跳转方式 实现方式 该代码中只有资源B的路径需要修改
请求转发资源间共享数据
我们可以将一些数据通过Request对象从一个资源带到另一个资源 以上三个Request对象的方法分别代表
将数据储存到request域中需要提供一个字符串类型的键和任意类型的值
从request域中得到值需要提供键名
从request域中删除键值对需要提供键名
请求转发特点
1.浏览器地址栏路径不发生变化
2.只能转发到当前服务器的内部资源
3.一次请求可以在转发的资源间使用request共享数据 Response
Response继承体系 Response设置响应数据
响应数据分为3部分
1.响应行 2.响应头 3.响应体 Response完成重定向
重定向
重定向Redirect一种资源跳转方式 如图浏览器向资源A发送请求资源A向浏览器响应告知需要重定向以及资源B的路径浏览器再次向资源B发送请求
实现方式 如图需要设置状态码为302来告知浏览器需要重定向以及需要响应头中设置重定向的资源路径 可以简化成一行代码
重定向特点
1.浏览器地址路径发生变化两次请求均由浏览器发出地址为访问资源A在访问后地址会变为资源B
2.可以重定向到任意位置的资源服务器内部、外部均可
3.两次请求不能在多个资源使用request共享数据
资源路径问题
在进行请求转发和重定向时对应的资源B的路径一个需要加虚拟目录一个不需要
标准明确路径是谁在使用
浏览器使用需要加虚拟目录项目访问路径
服务端使用不需要加虚拟目录 例 如图分别为
超链接由浏览器访问加虚拟目录
表单由浏览器发送加虚拟目录
请求转发在服务端内部使用不加虚拟目录
重定向由浏览器访问加虚拟目录 由于可以在pom.xml中使用configuration下的path标签来修改虚拟路径的地址因此在使用虚拟路径时可以动态的获取虚拟目录来降低代码的耦合性 响应字符数据
使用
1.通过Response对象获取字符输出流 2.写数据 注意事项
1.响应数据时可以响应标签如: 在相应时会将“aaa”设置成标题1的形式
但是默认浏览器会将标签当作字符串来识别因此需要设置对应的响应头如图 该代码设置了响应头届时浏览器会以html的解析引擎来解析响应数据 2.中文乱码
由于tomcat通过Response获取的字符输出流默认编码为ISO-8859-1因此输出中文时会乱码可以通过下述方法解决
response.setContentType(text/html;charsetutf-8);
该方法可以同时设置响应头和流的编码即该行代码可以同时解决识别标签和中文乱码的问题 3.得到的字符输出流不需要关闭在响应结束后response对象销毁该流会随之关闭
响应字节数据
使用
1.通过response对象获取字节输出流 2.写数据 IOUtils工具类使用
可以通过该工具类快速完成复制等操作
1.导入坐标 2.使用