JSP数据交互之request对象

JSP内置对象是 Web 容器创建的一组对象

一、request对象主要用于处理客户端请求
1、什么是request?
request是Servlet.service()方法的一个参数,
类型为javax.servlet.http.HttpServletRequest。在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装到request中,然后在调用Servlet.service()方法时传递给service()方法,这说明在service()方法中可以通过request对象来获取请求数据。

通过request获得请求行

获得客户端的请求方式:String getMethod()
String getContextPath() ---web应用的名称
request.getRemoteAddr() --- 获得访问的客户端IP地址

通过request获得请求头

String getHeader(String name)

通过request获得请求体

String getParameter(String name)
String[] getParameterValues(String name)
Map<String,String[]> getParameterMap()

解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");
解决get提交的方式的乱码:

parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

request是一个域对象
request对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)

request完成请求转发
1、获得请求转发器----path是转发的地址

RequestDispatcher getRequestDispatcher(String path)

2、通过转发器对象转发

requestDispathcer.forward(ServletRequest request, ServletResponse response)

示例:JAVA代码

@WebServlet("/ser05")
public class Servlet05 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置请求的编码格式req.setCharacterEncoding("UTF-8");String uname=req.getParameter("userName");String upwd=req.getParameter("userPwd");//判断用户名if(uname==null||!"admin".equals(uname)){//设置request作用域req.setAttribute("msg","用户名不正确!");//请求转发req.getRequestDispatcher("login.jsp").forward(req,resp);return;}//判断密码if(upwd==null||!"123456".equals(upwd)){//设置request作用域req.setAttribute("msg","用户密码不正确!");//请求转发req.getRequestDispatcher("login.jsp").forward(req,resp);return;}//登录成功//将用户名设置到request作用域req.setAttribute("userName",uname);//请求转发  跳转到首页req.getRequestDispatcher("mian.jsp").forward(req,resp);}
}

JSP代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title>
</head>
<body>
<form method="post" action="ser05">姓名:<input type="text" name="userName">密码:<input type="password" name="userPwd"><button type="submit">登录</button> <%=request.getAttribute("msg")%>
</form>
</body>
</html>

请求转发

request.getRequestDispatcher("路径").forward(req,resp);

服务端跳转,地址栏不发生改变 只有一次请求 request作用域数据可以共享

request作用域
用来存放数据的特殊范围,存放的数据可以在动态页面中获取

设置作用域  request.setAttribute("参数名","参数值");
获取作用域  Object o=request.getAttribute("参数名");
移除作用域  request.removeAttribute("参数名");

response对象用于响应客户请求并向客户端输出信息
1、什么是response?
response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象,并传入给Servlet.service()方法。response对象是用来对客户端进行响应的,这说明在service()方法中使用response对象可以完成对客户端的响应工作。
2、response对象的功能分为以下四种:
l 设置响应头信息;
l 发送状态码;
l 设置响应正文;
l 重定向;

response是响应对象,向客户端输出响应正文(响应体)可以使用response的响应流,repsonse一共提供了两个响应流对象(两种流不能同时使用)

PrintWriter out = response.getWriter():获取字符流;字符输出流(只能响应字段)
ServletOutputStream out = response.getOutputStream():获取字节流;字节输出流(能够响应任何类型的数据)

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置服务端的编码格式response.setCharacterEncoding("UTF-8");//设置客户端的编码格式response.setHeader("content-type","text/html;charset=UTF-8");//同时设置服务端与客户端的编码格式response.setContentType("text/html;charset=UTF-8");//字符输出流PrintWriter writer= response.getWriter();writer.write("<h2>Hello</h2>");writer.flush();writer.close();//字节输出流ServletOutputStream out=response.getOutputStream();out.write("<h2>Hello</h2>".getBytes());out.flush();out.close();
}
response.setStatus(200):设置状态码;
response.sendError(404, “您要查找的资源不存在”)

重定向是服务器通知浏览器去访问另一个地址,即再发出另一个请求。
重定向的实现
响应码为200表示响应成功,而响应码为302表示重定向。
所以完成重定向的第一步就是设置响应码为302。
因为重定向是通知浏览器再第二个请求,所以浏览器需要知道第二个请求的URL,所以完成重定向的

重定向是两次请求;
重定向的URL可以是其他应用,不局限于当前应用;
重定向的响应头为302,并且必须要有Location响应头;
重定向就不要再使用response.getWriter()或response.getOutputStream()输出数据,不然可能会出现异常;

JSP数据交互:request、response对象相关推荐

  1. JSP/Servlet临汾天泰学习笔记(二)JSP数据交互

    20190923上课记录 JSP内置对象 (内置对象,jsp中默认创建的对象,我们可直接使用) 常用的内置对象有五个:out.request.response.session.application ...

  2. JSP中如何借助response对象实现页面跳转呢?

    转自: JSP中如何借助response对象实现页面跳转呢? 下文笔者将讲述使用response对象对页面跳转的几种方法分享,如下所示: 通过response.sendRedirect方法跳转 < ...

  3. jsp数据交互(一),九大内置对象

    九大内置对象 九大内置对象 内置对象 类型 说明 作用域 request javax.servlet.ServletRequest 请求对象--在 一次请求/一个Request请求周期 中传递数据,请 ...

  4. JSP数据交互(一)

    1.JSP内置对象 请求对象:request 输出对象:out 响应对象:response 应用程序对象:application 会话对象:session 页面上下文对象:pageContext 页面 ...

  5. JSP数据交互(二)

    1.JSP内置对象application 作用:用于同一应用内的所有用户之间的数据共享 常用方法: JSP的常用内置对象: 2.对象的作用域 注:page<request<session& ...

  6. jsp java 交互_JSP-Servlet入门4之JSP数据交互

    一.什么是JSP内置对象 JSP 内置对象,就是在编写JSP页面时,不需要做任何声明就可以直接使用的对象,但我们在写JAVA代码时知道对象一定是要声明的,那么JSP为什么可以不声明就使用呢?我们通过观 ...

  7. java获取response对象_Java 获取Request,Response对象方法

    第一种.参数 @RequestMapping("/test") @ResponseBodypublic void saveTest(HttpServletRequest req, ...

  8. Java 获取Request,Response对象方法

    第一种.参数 @RequestMapping("/test") @ResponseBody public void saveTest(HttpServletRequest req, ...

  9. java跟jsp数据交互的坑

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_25343557/article/ ...

最新文章

  1. 字符串还可以这样初始化--uboot篇
  2. nginx学习七 高级数据结构之动态数组ngx_array_t
  3. ac 梦幻布丁 启发式合并
  4. 19岁P8入驻阿里?从阿里的人才成长体系学习
  5. 实现“0”的突破:给一直没有对主机硬件进行过任何“保洁、养护”的网友“支两招”...
  6. 会员制营销的起源和基本原理
  7. Vuex实战之 todos待办事项列表的状态管理
  8. 如何完美清除被磁碟机感染的文件?
  9. 木东居士谈数仓的学习方法!
  10. 颜色空间:RGB,CMY,HSV,HSL,Lab详解(转载)
  11. C-11 Problem H: 开宝箱2
  12. 数字签名开源_数字时代的开源与人文
  13. Python自学笔记6:实操案例三(十进制转换二、八、十六进制),手机充值,计算能量消耗,预测未来子女身高
  14. 今天看到了三年前杭电的LCY老师写的一篇自我检讨,值得大家来读一读
  15. 搭建gloo网关(基于envoy)的wasm实验环境(阿里云、本机)
  16. 量化风控系列--风险定价(一)
  17. 2021叙永一高考成绩查询,四川叙永第一中学2021年招生录取分数线
  18. matlab simulink Buck三电平dcdc变换器
  19. 精益生产的本质和应用案例
  20. windows本地如何使用md5sum

热门文章

  1. cd r光盘可以反复刻录_如何跨多个DVD或CD光盘刻录数据
  2. 摩客怎么设置安卓的dp_Android屏幕适配——使用 dp 实现完美适配
  3. python基于selenium实现自动删除qq空间留言板
  4. 在CSDN开通博客专栏后如何发布文章(图文)
  5. 程序员如何自我学习?
  6. 《疯狂英语:轻松背诵5分钟》.张丽丽等.PDF扫描版下载
  7. 一个模型击溃12种AI造假,各种GAN与Deepfake都阵亡 | 伯克利Adobe新研究
  8. 计算机网络结构参考模型
  9. 【ML】第五章 支持向量机
  10. 2023年复旦大学新闻与传播考研考情与难度、参考书及上岸前辈初复试备考经验