Jsp九大内置对象之Request和Response

Request

1.内置对象request提供了一系列关于获取请求头之类的详细信息,还有关于jsp页面提交数据中文乱码的问题。因为get和post提交方式默认是以ISO-8859-1的编码提交的,Request对象也是以ISO-8859-1的编码获取数据的,想要解决这个问题就要在Request对象获取数据时将ISO-8859-1编码改成UTF-8。

post提交方式的只需要调用   request.setCharacterEncoding("utf-8"); 语句就可以了。由此可见setCharacterEncoding()方法只是针对FormDate中提交的数据有效。

get提交方式需要重新实例化String对象,如下

 

或者直接将tomcat config中的server.xml文件中配置UTIEncoding=“utf-8” 来解决乱码问题。

Response 

1.动态响应客户端的请求,控制发送给用户的信息。提到响应就得说说请求转发和重定向的区别和联系了。

区别: 

  1. request.getRequestDispatcher()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;服务器内部转发,整个过程处于同一个请求当中。
    response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。不在同一个请求。重定向,实际上客户端会向服务器端发送两个请求。                                  所以转发中数据的存取可以用request作用域:request.setAttribute(), request.getAttribute(),重定向是取不到request中的数据的。只能用session。

  2. forward()更加高效,在可以满足需要时,尽量使用RequestDispatcher.forward()方法。

  3. RequestDispatcher是通过调用HttpServletRequest对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。
    sendRedirect()是HttpServletResponse对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

  4. 重定向可以跨域访问,而转发是在web服务器内部进行的,不能跨域访问。

请求转发和重定向的应用场景:
     1. forward: 访问 Servlet 处理业务逻辑,然后 forward 到 jsp 显示处理结果,浏览器里 URL 不变

     2. redirect: 提交表单,处理成功后 redirect 到另一个 jsp,防止表单重复提交,浏览器里 URL 变了

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值