request和response区别

本文深入讲解Servlet中request和response对象的使用,包括如何获取和设置请求参数,服务器内部数据传递,转发与重定向的区别及应用场景,以及响应编码和数据返回等关键操作。

request

获得请求参数的值(客户端发送过来的数据)

String getParameter(String name)

String[] getParameterValues(String name)


在服务器内部传递数据

void **setAttribute(String key, Object value)**
Object类型 **getAttribute(String key)**

转发

setAttribute(“要显示的参数名”,“要显示的参数内容”)

**getRequestDispatcher(设置要跳转的url).forward(request,response);**

只能访问服务器内的资源网站(url),不能访问服务器外的网站


设置请求参数的编码

setCharacterEncoding(“utf-8”);



response:响应对象

response定义
public interface HttpServletResponse extends ServletResponse

描述一个返回到客户端的HTTP回应对象。

返回数据到客户端
//将消息返回给客户端
//先设置编译再写入消息
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();//获得响应流
out.println(msg);//换行打印
//        out.print();//不换行打印

获得响应流

PrintWriter getWriter()

PrintWriter out = resp.getWrite();

重定向

sendRedirect(设置要跳转的url); 可以访问服务器外的网站

url需要加上虚拟路径(项目虚拟路径)


设置响应的编码方式,编码的值是固定的

setCharacterEncoding(“utf-8”);

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


转发与重定向
概述
  1. 转发(需要之前的数据):需要将当前servlet的数据传输给下一个请求的地址

    使用场景:如果多个请求之间需要共享数据时

  2. 重定向(不需要之前的数据):通知浏览器重新发送新的请求给web服务器。

    使用场景:如果多个请求之间不需要共享数据

转发与重定向的区别
  1. 转发第一次请求的url不会改变[页面会跳转回原来的url路径所在的页面(跳回原来的页面)]

    req.setAttribute(String key,Object value)[key=“参数名”,value=“参数内容”]

    req.getRequestDispatcher(“要参数内容显示的跳转页面”).forward(req,resp);

    重定向:在地址栏会显示重定向后的url地址[会直接跳转到指定的url地址的页面(可以访问服务器外资源网站)]

    resp.sendRedirect(“指定跳转页面的url”)

    url需要加上虚拟路径(项目虚拟路径)

  2. 从速度上来说

    转发是一次请求/响应的过程中跳转1到多个url

    重定向是通知浏览器发出了第二次请求,所以从速度上来说,重定向是相对慢的。


使用场景

request的方法

返回值方法描述
voidsetAttribute(String name,Object value)在request的作用内设置键值对的值
ObjectgetAttribute(String name)根据key取值
RequestDispatchergetRequestDispatcher(String url)设置要转发的url

response

返回值方法描述
sendRedirect(String url)重定向到指定的url
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值