首页 > 编程语言 >Javaweb学习第十二弹--Request和Response

Javaweb学习第十二弹--Request和Response

时间:2022-09-25 15:37:40浏览次数:37  
标签:String -- Request 获取 请求 Servlet Response Javaweb

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响应字节数据(图片数据)

标签:String,--,Request,获取,请求,Servlet,Response,Javaweb
From: https://www.cnblogs.com/liuzijin/p/16727207.html

相关文章

  • 第一课 计算机基础
    第一课计算机基础控制器运算器CPU:中央处理器,包含了运算器和控制器存储器就是我们通常说的内存条外存硬盘固态硬盘机械硬盘光盘U......
  • Spring 高级-jdk反射优化
    一、代码packagecom.mangoubiubiu.show.asm;importjava.lang.reflect.Field;importjava.lang.reflect.Method;//运行时请添加--add-opensjava.base/java.lan......
  • 创新案例|市值$400亿的设计平台Canva的增长策略
    澳大利亚在线平面设计工具「Canva」目前估值已达400亿美元,成为全球最有价值初创公司之一。是什么让Canva实现如此高速的增长?本文将通过研究Canva的产品体验创新、付费......
  • C语言max宏的进化
    C语言max宏的进化lv1:shit#defineMAX(a,b)a>b?a:b问题所在不必多言lv2:角度:参数也可为expr解:#defineMAX(a,b)(a)>(b)?(a):(b)bug示例:#i......
  • 数据类型转化
    一、输出作用:将所写程序里的内容输出给用户实例1name="张三"2print(name)(一)格式化输出所谓的格式化输出就是按照一定的格式输出内容(二)格式化符号格式......
  • vuex4的简单使用
    安装vuexcnpminstallvuex@next--save官网地址是https://vuex.vuejs.org/zh/guide/#%E6%9C%80%E7%AE%80%E5%8D%95%E7%9A%84-storevuex中的常用5个模块vuex模块......
  • Ubuntu16.04修改IP
    ssh登录到服务。编辑网卡配置文件。vim/etc/network/interfaces 先关闭DPCP,将ifaceeth0inetdhcp前面加上#号。设置IP地址、掩码、网关address=****netmask=***......
  • csapp cache lab partB,30行不到全case通用解法
    #defineROUND_UP(x,align)(((int)(x)+(align-1))&~(align-1))#defineMIN(a,b)(((a)<(b))?(a):(b))#defineBLOCK_SZ8voidtranspose_submit(int......
  • 1-VSCode搭建GD32开发环境
    一、使用VSCode开发GD32的原因1-单片机开发用的最多的IDE为Keil,而Keil为商用软件,并非开源,而且只支持windows环境,介于当前关系,有断供的风险在。2-其他IDE类似第1条。3-V......
  • C++ 引用注意的问题
    引用的对象不存在#include<iostream>usingnamespacestd;classA{public:A(intx){this->x=x;}~A(){};intget_x(){returnx;}private......