当前位置: 首页 > news >正文

唐山网站制作网络公司洞头建设局网站

唐山网站制作网络公司,洞头建设局网站,北京门户网站,中小企业融资平台目录 一、概述 二、Request对象 1.Request继承体系 2.Request获取请求数据 ①获取请求行数据 ②获取请求头数据 ③获取请求体数据 ④获取请求参数 3.Request请求转发 三、Response 1.Response设置响应数据功能 ①响应行 ②响应头 ③响应体 2.请求重定向 3.路径问…目录 一、概述 二、Request对象 1.Request继承体系 2.Request获取请求数据 ①获取请求行数据 ②获取请求头数据 ③获取请求体数据 ④获取请求参数 3.Request请求转发 三、Response 1.Response设置响应数据功能 ①响应行 ②响应头 ③响应体 2.请求重定向 3.路径问题 4.Response响应字符数据 5.Response响应字节数据 一、概述 Request是请求对象Response是响应对象 request:获取请求数据 浏览器会发送HTTP请求到后台服务器[Tomcat] HTTP的请求中会包含很多请求数据[请求行请求头请求体] 后台服务器[Tomcat]会对HTTP请求中的数据进行解析并把解析结果存入到一个对象中 所存入的对象即为request对象所以我们可以从request对象中获取请求的相关参数 获取到数据后就可以继续后续的业务比如获取用户名和密码就可以实现登录操作的相关业务 response:设置响应数据 业务处理完后后台就需要给前端返回业务处理的结果即响应数据 把响应数据封装到response对象中 后台服务器[Tomcat]会解析response对象,按照[响应行响应头响应体]格式拼接结果 浏览器最终解析结果把内容展示在浏览器给用户浏览 二、Request对象 1.Request继承体系 Request的继承体系为ServletRequest--HttpServletRequest--RequestFacade Tomcat需要解析请求数据封装为request对象,并且创建request对象传递到service方法 2.Request获取请求数据 HTTP请求数据总共分为三部分内容分别是请求行、请求头、请求体 ①获取请求行数据 请求行包含三块内容分别是请求方式、请求资源路径、HTTP协议及版本 获取请求方式: GET String getMethod() 获取虚拟目录(项目访问路径): /request-demo String getContextPath() 获取URL(统一资源定位符): http://localhost:8080/request-demo/req1 StringBuffer getRequestURL() 获取URI(统一资源标识符): /request-demo/req1 String getRequestURI() 获取请求参数(GET方式): usernamezhangsanpassword123 String getQueryString() ②获取请求头数据 String getHeader(String name) ③获取请求体数据 浏览器在发送GET请求的时候是没有请求体的所以需要把请求方式变更为POST 获取字节输入流如果前端发送的是字节数据比如传递的是文件数据则使用该方法 ServletInputStream getInputStream() 获取字符输入流如果前端发送的是纯文本数据则使用该方法 BufferedReader getReader() ④获取请求参数 请求参数是请求数据中的部分内容 如果是GET请求请求参数在请求行中 如果是POST请求请求参数一般在请求体中 GET方式 String getQueryString() POST方式 BufferedReader getReader(); 统一获取GET和POST请求参数的方式  方法一 //示例直接使用POST调用GET方法提高代码复用率 WebServlet(/req1) public class RequestDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求方式String method req.getMethod();//获取请求参数String params ;if(GET.equals(method)){params req.getQueryString();}else if(POST.equals(method)){BufferedReader reader req.getReader();params reader.readLine();}//将请求参数进行打印控制台System.out.println(params);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);} } 方法二 获取所有参数Map集合 MapString,String[] getParameterMap() 根据名称获取参数值 String[] getParameterValues(String name) 根据名称获取参数值(单个值) String getParameter(String name) WebServlet(/req2) public class RequestDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//GET请求逻辑System.out.println(get....);//1. 获取所有参数的Map集合MapString, String[] map req.getParameterMap();for (String key : map.keySet()) {// username:zhangsan lisiSystem.out.print(key:);//获取值String[] values map.get(key);for (String value : values) {System.out.print(value );}System.out.println();}}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} }WebServlet(/req2) public class RequestDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//GET请求逻辑//...System.out.println(------------);String[] hobbies req.getParameterValues(hobby);for (String hobby : hobbies) {System.out.println(hobby);}}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} } WebServlet(/req2) public class RequestDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//GET请求逻辑//...String username req.getParameter(username);String password req.getParameter(password);System.out.println(username);System.out.println(password);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} } POST只需要采用GET的方法即可 public class RequestDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//采用request提供的获取请求参数的通用方式来获取请求参数//编写其他的业务代码...}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);} } 3.Request请求转发 请求转发(forward)一种在服务器内部的资源跳转方式 (1)浏览器发送请求给服务器服务器中对应的资源A接收到请求 (2)资源A处理完请求后将请求发给资源B (3)资源B处理完后将结果响应给浏览器 (4)请求从资源A到资源B的过程就叫请求转发 请求转发的实现方式 req.getRequestDispatcher(资源B路径).forward(req,resp); 请求转发资源间共享数据使用Request对象 存储数据到request域[范围,数据是存储在request对象]中 void setAttribute(String name,Object o); 根据key获取值 Object getAttribute(String name); 根据key删除该键值对 void removeAttribute(String name); 请求转发的特点 浏览器地址栏路径不发生变化 只能转发到当前服务器的内部资源 一次请求可以在转发资源间使用request共享数据 三、Response Response:使用response对象来设置响应数据 Reponse的继承体系和Request的继承体系也非常相似: 1.Response设置响应数据功能 HTTP响应数据总共分为三部分内容分别是响应行、响应头、响应体 ①响应行 设置响应状态码: void setStatus(int sc); ②响应头 设置响应头键值对 void setHeader(String name,String value); ③响应体 对于响应体是通过字符、字节输出流的方式往浏览器写 获取字符输出流: PrintWriter getWriter(); 获取字节输出流 ServletOutputStream getOutputStream(); 2.请求重定向 (1)浏览器发送请求给服务器服务器中对应的资源A接收到请求 (2)资源A现在无法处理该请求就会给浏览器响应一个302的状态码location的一个访问资源B的 路径 (3)浏览器接收到响应状态码为302就会重新发送请求到location对应的访问地址去访问资源B (4)资源B接收到请求后进行处理并最终给浏览器响应结果这整个过程就叫重定向 重定向的实现方式 resp.setStatus(302); resp.setHeader(location,资源B的访问路径); 重定向简化 resposne.sendRedirect(资源B的访问路径); 重定向的特点 浏览器地址栏路径发送变化 当进行重定向访问的时候由于是由浏览器发送的两次请求所以地址会发生变化 可以重定向到任何位置的资源(服务内容、外部均可) 因为第一次响应结果中包含了浏览器下次要跳转的路径所以这个路径是可以任意位置资源。 两次请求不能在多个资源使用request共享数据 因为浏览器发送了两次请求是两个不同的request对象就无法通过request对象进行共享数 据 Request和Response重定向的对比  3.路径问题 转发的时候路径上没有加/request-demo而重定向加了 浏览器使用:需要加虚拟目录(项目访问路径) 服务端使用:不需要加虚拟目录 4.Response响应字符数据 通过Response对象获取字符输出流 PrintWriter writer resp.getWriter(); 通过字符输出流写数据: writer.write(aaa) ①可以返回简单字符串 ②可以返回一串html字符串并且可以被浏览器解析 ③可以返回中文字符串需要注意设置响应数据的编码为utf-8 //设置响应的数据格式及数据的编码 response.setContentType(text/html;charsetutf-8); 5.Response响应字节数据 通过Response对象获取字节输出流ServletOutputStream outputStream resp.getOutputStream(); 通过字节输出流写数据: outputStream.write(字节数据); //1. 读取文件 FileInputStream fis new FileInputStream(d://a.jpg); //2. 获取response字节输出流 ServletOutputStream os response.getOutputStream(); //3. 完成流的copy byte[] buff new byte[1024]; int len 0; while ((len fis.read(buff))! -1){os.write(buff,0,len); } fis.close();
http://www.w-s-a.com/news/693756/

相关文章:

  • 效果建网站的公凡科网登陆
  • 网站域名续费多少钱在线制作图片软件
  • 济南城乡住房建设厅网站中国会议营销网站
  • 展示类网站cms网站seo方法
  • 莒县做网站的公司设计师网站模版
  • 顺德顺的网站建设备份的网站建设方案书
  • 如何做网站广告山东电商网站建设
  • 新手建什么网站赚钱吗WordPress搜狗不收录
  • 石家庄招聘哪个网站做的好网站设计建设公司服务商
  • 建设公司网站大概需要多少钱建站平台和网站开发的区别
  • 淄川区住房和城乡建设局网站门户网站模板源码下载
  • 室内设计公司 网站建设建站塔山双喜
  • 网站建设属于什么经营范围销售网站开发业务
  • 企业建站系统平台优秀网站作品截图
  • 杭州品牌网站制作wordpress多域名移动主题
  • 北京网站网站建设icp备案 网站备案
  • 长春网站公司哪家好电子商务网站建设作文
  • 网站开发php程序员网上店铺怎么运营
  • mip网站怎么做匹配h5婚纱摄影网站模板
  • 怎么注册建设公司网站域名历史价格查询
  • 爱站网seo工具包互联网软件开发工程师
  • 百度站长工具平台登录郑州seo规则
  • 财税公司做网站精品建站教程
  • 建设区块链网站区块链开发平台有哪些
  • 青年人爱看的网站ie显示wordpress网页不完整
  • 优惠券推广网站怎么做青岛正规网站建设哪家便宜
  • 怎么搞一个服务器建设网站wordpress页眉编辑
  • 计算机企业网站建设论文流量平台是什么意思
  • 成都建设网站公司哪家好上海有名的广告公司
  • 收录优美图片找不到了整站seo优化一般多少钱