6.Request和Response
一、Requset 继承体系
二、Requset 获取请求数据
1.请求行: GET /request-demo/req1?username=zhangsan HTTP/1.1
String getMethod(): 获取请求方式 : GET
String getContextPath(): 获取虚拟目录(项目访问路径): /requset-demo
StringBuffer getRequsetURL() :获取URL(统一资源定位符):http://localhost:8080/requset-demo/req1
String getRequsetURL(): 获取URL(统一资源标识符) : /requset-demo/req1
String getQueryString(): 获取请求参数(GET方式):username=zhangsan&password=123
2.请求头:
String getHeader(String name): 根据请求头名称,获取值
3.请求体:POST
ServletInputStream getInputStream(): 获取字节输入流
BufferedReader getReader(): 获取字符输入流
4.post或get调用相互的方法 this.doPost(req.resp)
三、Requset 通用方式获取请求参数
Map<String,String[]> getParameterMap(): 获取所有参数Map集合
String[] getParameterValues(String name) : 根据名称获取参数值(数组)
String getParamter(String name): 根据名称获取参数值(单个值)
四、Idea模板创建Servlet(网上找)
五、请求参数中文乱码问题-POST解决方案
req.setCharactorEncoding("UTF-8")
package com.itheima.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/demo5")
public class ServletDemo5 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");System.out.println("哈哈哈"+req.getParameter("username"));}
}
六、请求参数中文乱码问题-GET解决方法
通用方法get/post: new String(username.getBytes("ISO-8859-1"),"UTF-8")
package com.itheima.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;@WebServlet("/demo6")
public class ServletDemo6 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String regStr = new String(req.getParameter("username").getBytes("ISO-8859-1"), "UTF-8");System.out.println("哈哈哈"+regStr);}
}
七、Request请求转发
实现方式:req.getRequsetDispatcher("资源B路径").forward(req,resp);
请求转发资源间共享数据:使用Requset对象
Void setAttribute(String name,Object o): c存储数据到requset域中
Object getAttribute(String name):根据key,获取值
void removeAttribute(String name):根据Key,删除该键值对
@WebServlet("/demo7")
public class ServletDemo7 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo7");//存储数据req.setAttribute("msg","hello");//请求转发req.getRequestDispatcher("/demo8").forward(req,resp);}
}
@WebServlet("/demo8")
public class ServletDemo8 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo8");//获取数据System.out.println("demo8"+req.getAttribute("msg"));}
}
八、Response设置响应数据功能介绍&完成重定向
相应行:HTTP/1.1 200 OK
响应头:Content-Type:text/html
响应体:<html><h1></h1></html>
九、Response完成重定向
实现方式一:resp.setStatus(302) resp.setHeader("Location","资源B的路径")
简化:resp.sendRedirect("资源B的路径")
@WebServlet("/demo9")
public class ServletDemo9 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo9");//方式一
// resp.setStatus(302);
// resp.setHeader("Location","/web-demo/demo1");//简化resp.sendRedirect("/web-demo/demo1");}
}
十、路径问题
明确路径谁使用?
1.浏览器使用:需要加虚拟目录(项目访问路径)
2.服务端使用:不需要加虚拟目录
练习:
<a href="路径" > 加虚拟目录
<form action="路径" >加虚拟目录
req.getRequestDispatcher("路径") 不加虚拟目录
resp.sendRedirect("路径") 加虚拟目录
因为pom.xml可以修改虚拟目录名字,所以我们需要动态获取虚拟目录:
String contextPath = requset.getContextPath() responce.sendRedirect(contextPath+"/resp2")
十一、Responce响应字符数据
1.通过Responce对象获取字符输出流 PrintWriter writer = resp.getWriter(); 2.写数据 writer.write("aaa")
2.返回结果中文乱码 resp.setContentType("text/html;charset=utf-8")
十二、Response响应字节数据
6.Request和Response相关推荐
- SpringMvc4中获取request、response对象的方法
springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...
- 简单了解request与response
本文对 request. response 简单描述,未涉及到具体的浏览器缓存.重定向.请求转发等代码部分. 一.Web服务器,浏览器,代理服务器 在看 response.request 对象之前,先 ...
- request 和response
当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等. 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We ...
- Struts2中action获取request、response、session的方式
2019独角兽企业重金招聘Python工程师标准>>> 第一种方式,非IoC(Spring中的控制反转)方式: package com.action; import java.uti ...
- request和response一览
1.HTTP SERVLETRESPONSE简介 set heade set int head set data head add haed add int head add int head 字节流 ...
- Spring MVC中处理Request和Response的策略
前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 作者:码农小胖哥, 图文编辑:xj 来源:https://mp.weixin.qq.com/s/3eFygsiVl8dC2nRy8_8n5 ...
- request、response 中文乱码问题与解决方式
request.response 中文乱码问题与解决方式 request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向 ...
- ASP.NET之Request和Response对象
经过了牛腩新闻公布系统和html的学习对B/S开发的流程有了些理解.前面尽管用到了非常多知识.但对制作网页仅仅能说知其然.当学到asp.net视频中的解说才干够说開始知其所以然了. 今天来说说clie ...
- error response from daemon_Scrapy 框架-模拟登录-Request、Response
1. Scrapy-Request和Response(请求和响应) Scrapy的Request和Response对象用于爬网网站. 通常,Request对象在爬虫程序中生成并传递到系统,直到它们到达 ...
- HTTP请求消息数据格式分析以及request和response
* HTTP概念 Hyper Text Transfer Protocol 超文本传输协议 * 传输协议:定义了,客户端和服务器端通信时,发送数据的格式 * 特点: ...
最新文章
- java 注解继承注解_Java注解合并,注解继承
- QTP连接oracle
- 多线程并发:每个开发人员都应了解的内容
- 解读思科2014-19年全球移动互联网发展趋势报告(1)
- 写给程序员的有效学习方法
- php 发送微信请求失败的原因,微信小程序模拟正常 真机服务器请求出错
- 【实施工程师之家】linux安装mysql(yum安装mysql)
- 【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理
- matlab水力学工具箱,新浪潮水工设计软件
- less简介、less安装、编译、less语法之变量、嵌套、类混入、函数混入、运算、less文件导入
- tensorflow版本及其对应环境
- ios7之后的一些更改
- Eclipse用法和技巧十三:自动生成的TODO注释1
- JAVA语法——选择排序
- Atitit 软件体系重要理论学科 v2 s67.docx Atitit 软件重要理论学科 目录 1. 计算理论这门学问	2 1.1. 学科的产生	2 1.2. 在这些领域中,自动机理论和形式语言理论
- 网页设计中常用的Web安全字体
- Hadoop的容错性
- memcpy和memmove以及memcmp
- vue 动态背景图片
- Linux服务器绑定mac与ip,Linux实现ip和mac绑定