HttpServletRequest

//要下载的这个文件的类型--客户端会通过文件的MIME类型去区分类型
response.setContentType(
getServletContext().getMimeType(filename));
//告知客户端文件的打开方式(下载)
response.setHeader("Content-Disposition","attachment;"
+ "filname="+filename);

HttpServletRequest概述

我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。

service方法中的request的类型是ServletRequest,而doGet/doPost方法的request的类型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加强大,今天我们学习HttpServletRequest。

request的运行流程

通过抓包工具抓取Http请求

因为request代表请求,所以我们可以通过该对象分别获得Http请求的请求行,请         求头和请求体

通过request获得请求行

获得客户端的请求方式:String getMethod()

获得请求的资源:

String getRequestURI()

StringBuffer getRequestURL()

String getContextPath() ---web应用的名称

String getQueryString() ---- get提交url地址后的参数字符串

username=zhangsan&password=123

注意:request获得客户机(客户端)的一些信息

request.getRemoteAddr() --- 获得访问的客户端IP地址

通过request获得请求头

long getDateHeader(String name)

String getHeader(String name)

Enumeration getHeaderNames()

Enumeration getHeaders(String name)

int getIntHeader(String name)

referer头的作用:执行该此访问的的来源

做防盗链

通过request获得请求体

请求体中的内容是通过post提交的请求参数,格式是:

username=zhangsan&password=123&hobby=football&hobby=basketball

key ---------------------- value

username                                   [zhangsan]

password                           [123]

hobby                                          [football,basketball]

以上面参数为例,通过一下方法获得请求参数:

String getParameter(String name)

String[] getParameterValues(String name)

Enumeration getParameterNames()

Map<String,String[]> getParameterMap()

注意:get请求方式的请求参数 上述的方法一样可以获得

解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");

解决get提交的方式的乱码:

parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

request的其他功能

request是一个域对象

request对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute(String name, Object o)

getAttribute(String name)

removeAttribute(String name)

注意:request域的作用范围:一次请求中

request完成请求转发

获得请求转发器----path是转发的地址

RequestDispatcher getRequestDispatcher(String path)

通过转发器对象转发

requestDispathcer.forward(ServletRequest request, ServletResponse response)

            注意:ServletContext域与Request域的生命周期比较?

         ServletContext

            创建:服务器启动

            销毁:服务器关闭

            域的作用范围:整个web应用

         request

            创建:访问时创建request

            销毁:响应结束request销毁

            域的作用范围:一次请求中

 

            注意:转发与重定向的区别?

         1)重定向两次请求,转发一次请求

         2)重定向地址栏的地址变化,转发地址不变

         3)重新定向可以访问外部网站 转发只能访问内部资源

         4)转发的性能要优于重定向

                   

            注意:客户端地址与服务器端地址的写法?

         客户端地址:

            是客户端去访问服务器的地址,服务器外部的地址,特点:写上web应用名     

           

            直接输入地址:

            重定向

       

         服务器端地址:

                  服务器内部资源的跳转的地址,特点:不需要写web应用的名称转发

 

总结:

request获得行的内容

      request.getMethod()

      request.getRequestURI()

      request.getRequestURL()

      request.getContextPath()

      request.getRemoteAddr()

request获得头的内容

      request.getHeader(name)

request获得体(请求参数)

      String request.getParameter(name)

      Map<String,String[]> request.getParameterMap();

      String[] request.getParameterValues(name);

      注意:客户端发送的参数 到服务器端都是字符串

 

      获得中文乱码的解决:

         post:request.setCharacterEncoding(“UTF-8”);

         get:

parameter = new String(parameter.getBytes(“iso8859-1”),”UTF-8”);

 

request转发和域

      request.getRequestDispatcher(转发的地址).forward(req,resp);

      request.setAttribute(name,value)

      request.getAttribute(name)

JavaEE之HttpServletRequest的更多相关文章

  1. JavaWeb基础

    1.Servlet: Servlet是JavaWeb的3大组件之一,是把url请求转为后台处理的具体类,此类必须实现Servlet接口,一把实际使用时无须我们实现,我们直接使用JavaEE的HTTPS ...

  2. [JavaEE笔记]Cookie

    引言 由于 Http 是一种无状态的协议,服务器单从网络连接上无从知道客户身份. 会话跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话.常用会话跟踪技术是 Cookie 与 Session. ...

  3. 【概念笔记】JavaEE - web part2

    IT`huhui前言录 续JavaEE - web part1 链接http://www.cnblogs.com/ithuhui/p/5930745.html, 持续修改更新. Cookie 1. 定 ...

  4. javaee基本环境搭建

    安装包 安装jdk :D:\Program Files\Java\jdk1.7.0_17 下载tomcat:E:\apache-tomcat-6.0.36 下载maven:E:\apache-mave ...

  5. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. 无法找到类:java.lang.ClassNotFoundException: com.tt.javaweb.HttpServletRequest问题解决

    问题如下:找不到Httpservlet对应的Class,进入build目录下发现确实没有对应的class文件. 严重: Allocate exception for HttpServletReques ...

  7. JavaEE系列之(一)JSP基础知识详解

    一.JSP基础语法     1.JSP简介        JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.JSP是一种动态网页 ...

  8. javaee学习-servlet初始化参数

    1.需要定义ServletConfig对象来接收servlet配置的初始化参数. 2.当servlet配置了初始化参数后,web容器在创建servlet实例对象时, 会自动将这些初始化参数封装到Ser ...

  9. JavaEE(19) - Web层和EJB的整合(Session Bean)

    1. 通过依赖注入访问无状态Session Bean #1. EJB注入Servlet中 #2. EJB注入JSF中 2. 通过EJB引用访问有状态Session Bean 3. 在工具类中访问Ses ...

随机推荐

  1. 2016级算法第二次上机-C.AlvinZH的儿时梦想——坦克篇

    872 AlvinZH的儿时梦想----坦克篇 思路 简单题.仔细看题,题目意在找到直线穿过的矩形数最小,不能从两边穿过.那么我们只要知道每一行矩形之间的空隙位置就可以了. 如果这里用二维数组记住每一 ...

  2. image_size must contain 3 elements[4]

    今天在制作自己训练集合并且训练的时候,碰见了如下的错: image_size must contain 3 elements[4] 这是因为训练的数据集中不是所有的图片位深都是三通道的. 写一个脚本查 ...

  3. Opencv3.0: undefined reference to cv::imread(cv::String const&, int)

    使用opencv,编译出错: undefined reference to cv::imread(cv::String const&, int) 自opencv3.0之后,图像读取相关代码在i ...

  4. (一)Win消息机制,SDK编程基础

    一,基本概念 SDK:软件开发工具包(缩写:SDK.外语全称:Software Development Kit) API:应用程序接口 WINAPI:Windows平台下的系统调用,包含 window ...

  5. P2472 [SCOI2007]蜥蜴

    传送门 求无法逃离的蜥蜴总数的最小值就是求最多逃离的蜥蜴总数 所以显然考虑最大流,一个流量的路径就相当于一只蜥蜴逃离的路径 发现每个位置有一个最大经过次数,所以把每个位置拆成两个点$x,y$,$x$ ...

  6. 关于浏览器localhost点击wamp项目跳转出错

    www目录下index.php399行代码 $handle=opendir("."); $projectContents = ''; while (($file = readdir ...

  7. nginx, flask, wsgi

    原来自己还没搞懂这些. 首先post一个观点: nginx应该是没解析任何东西,就判断是不是http请求,然后转发?或者判断是不是tcp请求,然后转发. 所以给了python后台就可以用wsgi解包. ...

  8. (转)centos7.0安装配置DRBD

    原文:http://gushiren.blog.51cto.com/3392832/1685207 首先确保两台机器时间同步,配置ssh. 方法一通过yum源安装:yum安装默认路径是/etc/drb ...

  9. bug缺陷级别定义

    缺陷定义: 出现以下缺陷测试定义为致命 bug l  系统无响应处于死机状态. l  点击某个菜单后出现“The page cannot be displayed”或者返回异常错误. l  进行某 ...

  10. TOJ 1836 Play on Words

    描述 Some of the secret doors contain a very interesting word puzzle. The team of archaeologists has t ...