Web技术4——servlet2req,resp详解

在这里插入图片描述
步骤:

  1. 创建一个类
  2. 继承HttpServlet
  3. 重写doGet和doPost方法

req和resp的api

见培训word

req如何获取表单请求参数的过程;为何要this.doGet();如何处理中文乱码问题

https://blog.csdn.net/baidu_39378193/article/details/123744070?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168570652216800184140471%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168570652216800184140471&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-123744070-null-null.142%5ev88%5ekoosearch_v1,239%5ev2%5einsert_chatgpt&utm_term=%E8%8E%B7%E5%8F%96%E8%AF%B7%E6%B1%82%E4%BD%93%E6%95%B0%E6%8D%AE&spm=1018.2226.3001.4187

post响应数据乱码问题处理:(和请求一样)

https://blog.csdn.net/m0_70470868/article/details/126436570?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171792414916800197025257%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=171792414916800197025257&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-126436570-null-null.142v100pc_search_result_base9&utm_term=java%20web%E4%B9%B1%E7%A0%81&spm=1018.2226.3001.4187

response.setContentType(“text/html;charset=UTF-8”);
在这里插入图片描述

req请求转发resp重定向

req请求转发

request.getRequestDispatcher(url).forward(request, response);//转发
作用:跳转页面

请求转发特点:
 跳转操作是由服务器执行,客户端地址栏不会发生改变
 跳转不会发送一个新的请求
 可以跳转到WEB-INF中资源和本项目资源,但是不能跳转到其他项目的资源

重定向

• 重定向
response.sendRedirect(“重定向的路径”);

  1. 把数据存到request里面,重定向不可用
  2. 重定向的地址栏路径改变
  3. 重定向的路径可以是项目内部,也可以是项目以外的(比如跳转到百度)
  4. 重定向两次请求。
  5. 重定向的路径写绝对路径(带域名/ip地址的,如果是同一个项目里面,域名/ip地址可以省略)
  6. 重定向不能重定向到WEB-INF下的资源

二者区别

在这里插入图片描述
在这里插入图片描述
请求转发的特点:

  1. 请求转发的跳转是由服务器发起的,在这个过程中浏览器只会发起一次请求
  2. 请求转发只能跳转到本项目资源,但是可以跳转到WEB-INF中的资源
  3. 请求转发可以和request域对象一起使用
  4. 请求转发跳转浏览器地址栏不发生改变

重定向的特点:

  1. 重定向的跳转是由浏览器发起的,在这个过程中浏览器会发起两次请求
  2. 重定向跳转到任意服务器资源,但是无法跳转到WEB-INF中的资源
  3. 重定向不可以和request域对象一起使用
  4. 重定向跳转浏览器的地址中的地址栏会变成跳转到的路径

注:除非一定要用请求转发,再用,否则不要随便用。都用重定向。

域对象

ServletContext作为域对象

在这里插入图片描述
域对象范围 :整个应用(无论多少次请求,只要是这个应用里面的都是可以共享 的)
API
o getAttribute(String name) ;向ServletContext对象的map取数据
o setAttribute(String name, Object object) ;从ServletContext对象的map中添加数据
o removeAttribute(String name) ;根据name去移除数据

request作为域对象存取值

request范围: 一次请求有效

域对象是一个容器,这种容器主要用于Servlet与Servlet/JSP之间的数据传输使用的。
方法:
• Object getAttribute(String name) ;
• void setAttribute(String name,Object object) ;
• void removeAttribute(String name) ;
说明:
request域对象的作用范围只在一次请求之间,所以request作为域对象存取值必须和请求转发一起使用

ServletContext其他功能

servletContext概述

ServletContext: 是一个全局对象, 上下文对象.
服务器为每一个应用(项目)都创建了一个ServletContext对象。 ServletContext属于整个应用(项目)的,不局限于某个Servlet。并且整个项目有且只会有一个ServletContext对象

ServletContext作用

1)作为域对象存取数据,让Servlet共享(掌握)
2)获取的文件MIME类型(文件下载)
getMimeType(String file)
3)获得全局初始化参数
String getInitParameter(String name) ; //根据配置文件中的key得到value;
4)获取web资源路径,可以将web、资源转换成字节输入流(掌握)
String getRealPath(String path);根据资源名称得到资源的绝对路径.
getResourceAsStream(String path) ;返回指定路径文件的流

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值