Javaweb学习第十二弹--Request和Response
XML配置方式编写Servlet
3.0版本之前,仅仅支持XML配置文件的配置方式
1、编写Servlet类
2、在web.xml中配置该Servlet

Request和Response
Request------>获取请求数据
Response----->设置响应数据
Request继承体系
ServletRequest---->Java提供的请求对象接口
^
|
HttpServletRequest---->Java提供的对Http协议封装的请求对象接口
^
|
RequestFacade---->Tomcat定义的实现类
Request获取请求数据
1、请求行
获取请求方式,获取虚拟目录,获取URL,获取URI,获取请求参数



2、请求头
根据请求头名称,获取值


3、请求体
获取字节输入流,获取字符输入流
参数:利用相应表单获取对应的post请求方式(输入流);而get请求方式通过getQueryString()方法获取
Request对象使用通用方式获取请求参数
请求参数获取方式:
GET方式:String getQueryString();
POST方式:BufferedReading getReader();
1、Map<String,String[]> getParameterMap():获取所有参数Map集合
2、String[] getParameterValues(String name):根据名称获取参数值(数组)
3、String getParameter(String name):根据名称获取参数值(单个值)
GET和Post方法示例:




更高效----使用Servlet模板创建
在Java文件夹中创建一个Servlet类型的.java文件,会自动生成一个相关的Servlet模板
步骤如下:
右键Java文件夹,new--->Servlet---->即可生成模板

目前,我们需要的Servlet模板没有这么复杂,所以可以通过下面的步骤将模板修改为我们所需要的模板样式
步骤如下:
File--->Settings--->Editor--->File and Code Temples

再选择其中的Other

找到下面的web中的Java codetemples--->Servlet Annotated Class.java,就可以进行模板的修改啦!


Request对象请求转发
一种在服务器内部的资源跳转方式
实现方式:
req.getRequestDispatcher("资源B路径").forward(req,resp);




请求转发资源间共享数据,使用Request对象
void setAttribute(String name,Object o);//存储数据到request域中
Object getAttribute(String name);//根据key,获取值
void removeAttribute(String name);//根据key,删除该键值对




请求转发的特点:
1、浏览器地址栏路径不发生变化
2、只能转发到当前服务器的内部资源
3、一次请求,可以在转发的资源间使用request共享数据
Response对象
设置响应数据功能
1、响应行
void setStatus(int sc);//设置响应状态码
2、响应头
void setHeader(String name,String value);//设置响应头键值对
3、响应体
PrintWriter()//实现字符输出流
ServletOutputStream getOutputStream()//获取字节输出流
Response完成重定向(一种资源跳转方式)

实现方式:
resp.setStatus(状态码);
resp.setHeader("location","资源B的路径");



要清楚的是,在设置资源B的路径时,需要加上前面的虚拟目录
特点:
1、浏览器地址栏发生变化
2、可以重定向到任意位置
3、两次请求,不能在多个资源使用request共享数据
Response响应字符数据(设置字符数据的响应体)


利用setHeader()方法识别html标签

如果想要输入中文,可能会出现乱码情况,所以需要进行以下操作:


重要操作!!!!!!!!!!!!

并且,流是不需要关闭的
Response响应字节数据(图片数据)


Javaweb学习第十二弹--Request和Response的更多相关文章
- JavaWeb学习总结(十二)——Session
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- JavaWeb学习总结(十二)——Session(转)
一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...
- javaweb学习总结十二(JAXP对XML文档进行SAX解析)
一:JAXP使用SAX方式解析XML文件 1:dom解析与sax解析异同点 2:sax解析特点 二:代码案例 1:xml文件 <?xml version="1.0" enco ...
- Python3 学习第十二弹: 补充something
python中遇到 *keys, **keys的形式 其实 * 代表传递任意个无名字参数,这些参数通过Tuple访问 >>> def sum(*keys): ret= 0 for i ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- Tensorflow深度学习之十二:基础图像处理之二
Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474 首先放出原始图像: ...
- JavaWeb核心篇(2)——Request和Response
JavaWeb核心篇(2)--Request和Response 上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet类中我们会接触到两个 ...
- Javaweb学习笔记——(二十)——————Javaweb监听器、国际化
Javaweb监听器 三大组件 *Servlet *Listener *Filter Listener:监听器 1.初次相见:A ...
- JavaWeb学习笔记(二十二)—— 过滤器filter
一.什么是过滤器 过滤器filter是JavaWeb三大组件之一,它与Servlet很相似!不过过滤器是用来拦截请求的,而不是处理请求的.WEB开发人员通过Filter技术,对web服务器管理的所有w ...
随机推荐
- shell_Day02
虽然差了不少天,但的确是第......一天 history 查看历史命令记录 !命令序号 查看命令并执行 -c 清空 关于命令历史的文件 关于命令历史的变量(环境变量) 命令补全 tab:制表符 \t ...
- ANSYS Electronics Suite 19.2下载地址及其安装教程
ANSYS Electronics Suite 19.2下载安装教程 1.下载地址https://getintopc.site/ansys-electronics-suite-19-2-free-do ...
- UNIT FIVE TO EIGHT
内存单元间接表示 mov dl, [0] :直接寻址 mov bx, 0mov dl, [bx]:间接寻址 loop指令 1.语法 loop 标号 2.CPU执行指令过程 ① (cx) ← (cx) ...
- Apple Sources
1. libsystem_malloc.dylib的源码 https://opensource.apple.com/tarballs/libmalloc/ .这里有多个版本(例如用otool找到iOS ...
- Tesstwo9.1.0配置步骤
一,配置步骤 环境:Tesstwo9.1.0+Android10(华为)+Android11(模拟器) 1.查看tess-two的最新版本(GitHub - rmtheis/tess-two: For ...
- 132pattern-Leetcode456
QUESTION: To search for a subsequence (s1,s2,s3) such that s1 < s3 < s2. INTUITION: Suppose we ...
- 需要改动node_modules,并且别人也可以同步,插件 patch-package
patch-package 转自:https://www.cnblogs.com/lovewhatIlove/p/15724812.html 1.简介:有个功能需要修改node_modules里面的代 ...
- MAC读写模式自动挂载硬盘/不自动挂载硬盘
一.卸载硬盘 sudo umount /dev/disk1s1 自己从磁盘工具获取设备ID 或使用终端命令:diskutil list 来获取 二.新建文件夹以供挂载,位子自选 sudo mkdir ...
- PHP实现斐波那契数列(递归 + 非递归)实现
非递归写法:function fbnq($n){ //传入数列中数字的个数 if($n <= 0){ return 0; } $array[1] = $array ...
- [C#]Event相关的三个典型Case收录.
基本版: using System; namespace EventDemo1 { public delegate void CatCallEventHandler(); public class C ...