HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,

通过这个对象提供的方法,可以获得客户端请求的所有信息。 

一、获取常用信息:
   客户端IP(案例封IP):方法:getRemoteAddr() 得到远程地址
  请求方式:方法:getMethod()

   getRequestURL() 方法返回客户端发出请求时的完整URL,获取请求URL

  getQueryString 方法返回请求行中的参数部分
  头User-Agent,使用toLowerCase以及contains()判断浏览器版本
  使用Referer防盗链

二、获取请求头:
   重要方法:getHeader()
  获取请求参数:(注意submit的范围)
  重要方法:getParameter()单值
  Map<String,String[]>getParameterMap()请求参数封装到map中

  

三、获得客户机请求参数(客户端提交的数据)

  getParameter()单值
   Map<String,String[]>getParameterMap()请求参数封装到map中

  请求的乱码问题:    

  post:使用

        request.setCharacterEnconing("utf-8");

           response.setContentType("text/html;charset=utf-8");
  get:

   1.修改配置文件

    到config里找servr.xml配置端口8080后加URIEncoding="utf-8";
    之后get请求之后不用自己设置了,

    修改tomcat的配置文件server.xml:

    <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>

  只需增加 URIEncoding="UTF-8"  这一句,然后重启tomcat即可。慎用!

  2.真正使用的是反编回来:

   String name = request.getParameter("name");
   name =new String(name.getBytes("ISO-8859-1"), "UTF-8");

  超链接的乱码问题与GET一样,故也是采用相似的解决办法:反编回来

四、请求转发:

  一个Servlet完成不了,请求其它Web资源进行完成,当然,响应也是由被请求的完成

  请求转发是在同一个请求内完成的,使用的是同一个request对象!

   A请求B,A 留头不留体 B 留头又留体

  完成请求的语法格式:

request.getRequestDispatcher("/test.jsp").forward(request, response);

  

 request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作

  • setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute("data", data);
  • getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute("data")
  • removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute("data")
  • getAttributeNames方法,获取request对象的所有属性名,返回的是一个集合,例如:Enumeration<String> attrNames = request.getAttributeNames();

转发和重定向的区别:

  形式上:

  request.getRequestDispacther("/test.jsp").forword(request,response);

  response.sendRedirect("test.jsp");
  本质上:

  请求转发,一次请求一次响应,只能在服务器内部Servlet之间,地址栏不会变化(不带项目名)/307
  重定向,两次请求与响应,地址栏会变化,可以去别的路径/302

JavaWeb基础—HttpServletRequest的更多相关文章

  1. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  2. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  3. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  4. JavaWeb基础: 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  5. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  6. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  7. [JavaWeb基础] 002.JSP和SERVLET初级入门

    上一篇中,我介绍了javaweb项目的创建和Tomcat的搭建和部署,接下来我们要在上一篇的基础上去讲解一下简单的jsp和servlet交互,做出一个简单的登陆功能页面.该例子主要讲解了从页面请求道后 ...

  8. JavaWeb基础: 获取资源文件

    Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...

  9. JavaWeb基础:Servlet Response

    ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...

随机推荐

  1. Oracle EBS AR 收款取值

    select hr.name, a.autoapply_flag, a.AUTOMATCH_SET_ID, a.LEGAL_ENTITY_ID, a.RECEIPT_NUMBER, a.type, a ...

  2. C# 调用WebService服务

    方 法 一 :  选择项目,右键添加服务引用,输入服务地址,如图: 点击确定跳转到如下界面: 调用 接口: ServiceReference1.ImportDataServiceClient sr = ...

  3. JavaScript运行机制的学习

    今天在偶然在网上看到一个JavaScript的面试题,尝试着看了一下,很正常的就做错了,然后给我们前端做,哈哈,他居然也顺理成章做的错了,代码大概是这样的 /*1 下面代码会怎样执行?执行结果是什么* ...

  4. SqlServer查询存储过程中包含指定的内容

    存储过程太多,有时只记得存储过程里面的某一点类容,想要找到对应的存储过程: SELECT obj.Name 存储过程名, sc.TEXT 存储过程内容 FROM syscomments sc INNE ...

  5. MySql EF6 DBFirst 向导无法生成 edmx 解决方法(同:您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序)

    使用 MySql EF6 DBfirst 生成模型时经常会遇到EF6模式无法选择的情况究其原因, 还是因为没有正确的使用 Connector/Net. 下面说一下使用方法. 使用 MySql DBFi ...

  6. [翻译] TSMessages

    TSMessages https://github.com/KrauseFx/TSMessages This library provides an easy to use class to show ...

  7. python第十四课--排序及自定义函数

    1.排序 特点: 1).升序:从小到大 2).降序:从大到小 课堂实现选择排序:参看老郭选择排序.py文件 2.函数:(方法/method) 自定义函数: 概念:它表示一段作用范围(作用域),当中封装 ...

  8. 1.2 Why Python for Data Analysis(为什么使用Python做数据分析)

    1.2 Why Python for Data Analysis?(为什么使用Python做数据分析) 这节我就不进行过多介绍了,Python近几年的发展势头是有目共睹的,尤其是在科学计算,数据处理, ...

  9. [USACO19FEB]Moorio Kart

    题目 我们的神仙教练在考试里放了这道题,当时我非常惊讶啊 背包是\(O(n^3)\)的吧明明是带根号的好吧,那既然要优化的话 NTT!什么时候我们教练会在考试里放多项式了 模数\(1e9+7\)? 任 ...

  10. 清除SQL server 记住的用户名和密码

    公司更换电脑,清除SQL server 记住的用户名和密码 请按照上图中的位置找到相应的文件SqlStudio.bin,然后把它删除,请放一百个心,这个文件会自动生成的. 需要注意的是,在删除之前一定 ...