请求对象

1. 获取请求行数据
getMethod()获取请求方式
getContextPath()获取虚拟目录
2. 获取请求头数据
getHeader(请求头)  获取指定的请求头中的数据
3. 获取请求体数据
必须是post请求才可以getReader() 通过请求对象获取字符流对象(可以操作浏览器传过来的文本数据)getInputStream()通过请求对象获取字节流对象(可以操作浏览器传过来的所有数据)
4. 获取表单提交的数据
常用方法request.getParameter(name属性的值) 获取表单提交的数据(根据参数的名称获取参数的值)request.getParameterValues(name属性的值) 根据参数的名称获取参数的值的数组(复选框)request.getParameterMap();获取表单提交数据的map集合封装方式手动封装,适合少量的数据反射封装,几乎不用工具类封装,常用(BeanUtils)post请求乱码问题根源前后编码不一致表单提交数据:UTF-8服务器接收到数据并转成字符串,用的默认是ISO-8859-1(不支持中文)解决request.setCharacterEncoding("utf-8");
5. 域对象临时存储数据
范围时间范围:一次请求开始到结束空间范围:当前的请求中方法setAttribute()getAttribute()removeAttribute()
6. 实现请求转发和包含
目的一个资源需要多个servlet协同处理,就可以使用请求转发或者包含步骤首先获取请求的分发器RequestDispatcher r = request.getRequestDispatcher("/路径");转发r.forward(request,response);包含r.include(request,response);特点浏览器的地址不会发生改变转发 对于源组件为"留头不留体",目标组件为"留体不留头"(头:请求头 体:请求体, 作为了解)包含 对于源组件为"留头又留体",目标组件为"留体不留头"(头:请求头 体:请求体, 作为了解)本质都是一次请求,共享了请求和响应对象    案例改进如果登录成功,转发到SuccessServlet,并且把用户名带过去

响应对象

1. 设置响应行
void setStatus(int sc)  设置状态码常见的状态码描述
1XX:浏览器发送的请求不完善,需要浏览器进一步补充资料
2XX:响应正常完成
3XX:本次请求已经完成,但是需要浏览器进一步操作
4XX:请求资源错误 404:资源找不到  405:请求方式没有对应的方法
5XX:服务器范的错
2. 设置响应头
通用的方法setHeader()可以设置不同的头,来实现不同的功能1,设置缓存时间response.setDateHeader("Expires",0) 不缓存页面2,设置定时刷新(定时跳转)设置Refresh头response.setHeader("Refresh","3")每3秒刷新一次(当前页面) 炒股,直播response.setHeader("Refresh","3;url=路径")3秒之后跳转到指定页面3,实现重定向(立即跳转)设置location头response.setHeader("location","路径"); response.setStatus(302)简化写法 response.sendRedirect("路径")和转发的区别请求响应的次数转发:一次请求,一次响应重定向:两次请求,两次响应浏览器的地址转发:地址栏保持初值不变重定向:改为重定向之后的地址作用范围转发:只能在同一个项目中重定向:可以定位到其他项目或者其他服务器url的路径转发:不需要加上虚拟目录重定向:需要加上虚拟目录变量的作用域转发:可以使用request域对象可以共享数据重定向:因为重新发了一个请求,不能用request域对象可以共享数据各自的优点转发:相对的高效,可以共享同一个请求对象,可以隐藏实际的链接地址重定向:能够访问其他项目或者服务器上的资源4,实现文件下载
3. 设置响应体
response.getOutputStream()获取字节流对象,用于在页面中展示音视频,图片等
response.getWriter().获取字符流对象,用于在页面中展示文本数据根源:前后编码不一致服务器发送数据:UTF-8浏览器接收数据并解析:GBK(中文的IE浏览器)解决:response.setContentType("text/html;charset=UTF-8");告诉浏览器,我会以utf-8的编码去发送数据,将来浏览器接收到数据之后就会使用utf-8的格式去解码
4. 文件下载
两个头content-type : 文件类型/流的类型content-disposition: attachment 以附件的形式下载
两个流读服务器上的图片 输入流把图片数据写到浏览器 输出流
一对接循环读写
5. 路径问题
相对路径不以/开头(相同的部分去掉)http://localhost:8080/login.html 访问登录页面http://localhost:8080/LoginServlet 访问LoginServlet跳转路径:LoginServlet(相当于他俩在同一个目录)http://localhost:8080/user/login.html 访问登录页面http://localhost:8080/LoginServlet    访问LoginServlet跳转路径:../LoginServlet(LoginServlet相当于在login.html的上一层)不建议使用相对路径,总是要确定他俩的相对位置,比较麻烦绝对路径以/开头(省略了协议和ip和端口号)/LoginServlet(前面省略了http://localhost:8080)研究什么时候需要加上虚拟目录给客户端使用(从客户端跳到服务器端)需要加上虚拟目录(超链接,form表单,img标签的src属性,重定向,刷新)给服务器端使用(在当前项目内跳转)不需要加上虚拟目录(请求转发,包含)

Servlet--基本二(请求对象,文件下载)相关推荐

  1. Servlet的学习之Request请求对象(2)

    在上一篇<Servlet的学习(十)>中介绍了HttpServletRequest请求对象的一些常用方法,而从这篇起开始介绍和学习HttpServletRequest的常用功能. 使用Ht ...

  2. servlet ---- 请求对象

    请求对象常用方法 获取各种路径 @WebServlet(name = "ServletDemo9", value = "/ServletDemo9") publ ...

  3. Servlet的学习之Request请求对象(3)

    本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看R ...

  4. Request To JavaBean(请求对象转换为JavaBean对象)

    背景:  经常要从request等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,麻烦   一 参考资料  1 http://jc-dreaming.iteye.com/blog/563 ...

  5. javaweb学习总结(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  6. Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  7. Java Web学习总结(3)Servlet(二)

    一,Servlet访问URL映射配置 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml ...

  8. javaweb学习总结(六):Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  9. JSP九大内置对象和四大作用域和Servlet的三大作用域对象

    一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...

最新文章

  1. 《设计模式解析(第2版)》
  2. c语言中void跟argv,argc和argv []在C语言中
  3. OpenCV Stitching 工程搭建
  4. Cloudera Manager agent无法启动,拒绝链接 Failed! trying again in 2 second(s): [Errno 111] Connection refuse
  5. 群晖消息通知 推送服务器,群晖resync服务器
  6. 计算某日是该年的第几天
  7. Swing组件集合的事件处理(三)
  8. Redis开发与运维之第八章理解内存(四)
  9. Xshell“所选的用户密钥未在远程主机上注册”解决办法
  10. JS_综合,全面性增删改查,多条件查询,排序,点击发货
  11. Python制作Windows系统服务
  12. 光电开关与光耦的区别 - 光电开关电子电路图
  13. [编译原理]DO-WHILE循环语句的翻译程序设计(LR(1)方法、输出四元式)C++实现
  14. 2023年湖北助理工程师在哪里申报?助理工程师的五大作用你知道吗
  15. 转:人最大的教养,是善待父母
  16. shell字符串截取掐头去尾操作
  17. Linux 学习 第六单元
  18. 第三章 Hello World入门程序
  19. 旭元数艺:数创未来,智攀高峰
  20. STM32理论 ——通信

热门文章

  1. 写两个线程,一个线程打印 1~52,另一个线程打印字母A-Z。打印顺序为12A34B56C……5152Z
  2. 大数据助力农牧业转型升级
  3. 网络收包流程-收包函数__netif_receive_skb的核心函数__netif_receive_skb_core(三)
  4. itx机箱尺寸_这可能是目前最便宜的ITX机箱,体积仅12L,配好一套主机仅一千多...
  5. 又是新一年的1024呦
  6. 技术学校有哪些专业计算机,自贡计算机职业技术学校有哪些专业
  7. Java接口和抽象类的异同
  8. 智云Smooth Q支持延时摄影多种滤镜 拍电影如此简单
  9. php gprmc 坐标转换,GPS的GPRMC转GBS84,GCJ02,BD09 且将数据标定在百度地图上面
  10. HTML和Css的学习