常见请求头

  • User-Agent:浏览器版本信息,可以解决浏览器兼容性问题
  • Referer:请求来源地址,可以防盗链和统计

Request

方法

  1. 获取请求方式: String getMethod()
  2. 获取虚拟目录: String getContextPath()
  3. 获取Servlet路径: String getServletPath()
  4. 获取get方式请求参数: String getQueryString()
  5. 获取请求URI:
  6. 获取协议及版本: String getProtocol()
  7. 获取客户机的IP地址: String getRemoteAddr()

获取请求参数通用方式

  1. String getParameter(String name) 根据参数名称获取参数值
  2. String[] getParameterValues(String name) 根据参数名称获取参数值的数组
  3. Enumeration<String> getParameterNames() 获取所有请求的参数名称
  4. Map<String,String[]> getParameterMap() 获取所有参数的map集合

请求转发

request.getRequestDispatcher(String path).forward(request, response)

特点

  1. 浏览器地址不变
  2. 只能转发当前服务器内部资源中
  3. 只有一次请求

共享数据

通过域对象

application > session > request > page

响应消息

响应状态码

  1. 1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
  2. 2xx:成功。代表:200
  3. 3xx:重定向。代表:302(重定向),304(访问缓存)
  4. 4xx:客户端错误。代表:404(请求路径没有对应的资源)、405(请求方式没有对应的doXxx方法)
  5. 5xx:服务器端错误。代表:500(服务器内部出现异常)

常见响应头

  • Content-Type:服务器告诉客户端本次响应体数据格式以及编码格式
  • Content-disposition:服务器告诉客户端以什么格式打开响应体数据
    • in-line:默认值,在当前页面内打开
    • attachment;filename=xxx:以附件形式打开响应体。文件下载

Response

设置响应消息

  • 设置状态码: setStatus(int sc)
  • 设置响应头: setHeader(String name, String value)

重定向

response.sendRedirect(String path)

特点

  1. 地址栏发生变化
  2. 可以访问其他服务器的资源
  3. 两次请求

中文乱码问题

request

  • get方式:tomcat 8 已经将get方式乱码问题解决了
  • post方式:在获取参数前,设置request的编码 request.setCharacterEncoding("utf-8")

response

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

路径问题

  • 相对路径:以.开头

    • ./ : 当前目录
    • ../ : 后退一级目录
  • 绝对路径:以/开头
  • 客户端使用,需要加虚拟目录,动态目录获取:request.getContextPath()
    • <a>、<form>、重定向……
  • 服务端使用,不用加虚拟目录
    • 转发路径

最新文章

  1. 偶然发现的Unity3d,两点之间的距离计算。
  2. [部署]MVC4.0+EF5.0+ODT+ORACLE相关注意事项
  3. PHP中常用的函数
  4. Masonry
  5. tomcat启动,输出system.out.println()
  6. hadoop NameNode HA 和ResouceManager HA
  7. css技巧之如何实现ul li边框重合
  8. CSS的display、hover、overflow、&amp;copy(版权符号)、borer-radius(边框圆角)
  9. java继承中的初始化顺序
  10. DEDE中 field:rel 是什么意思,起一个什么样的作用效果
  11. LR之error(一)
  12. apache2.4 文件浏览服务器页面配置
  13. ubuntu 升级 python3.5到 python3.6
  14. PHP策略模式2
  15. MySQL更改relay-bin名称导致同步停止的解决办法
  16. Android应用启动时Activity被创建两次
  17. Python 类变量
  18. Java基础——iO(二)
  19. JavaScript 继承——三种继承方法及其优劣
  20. oracle 锁表/解锁 杀进程

热门文章

  1. svn: 处于冲突状态
  2. 《阿里巴巴Java开发手册》阅读笔记
  3. linux命令详解-useradd,groupadd
  4. 7-4 python 接口开发(提供mock服务)
  5. 用js控制单选框或者多选框问题
  6. JavaSE 第二次学习随笔(String的坑 + ==)
  7. Dialog BLE 学习之 修改分散加载文件 (2)
  8. 笔记-git-协作开发
  9. 安装python 第三方库遇到的安装问题 microsoft visual studio c++ 10.0 is required,Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
  10. spark练习--mysql的读取