Servlet对象和域对象

本文详细介绍了Servlet中的Request、Response对象,包括它们的功能如请求参数、请求头、响应体、会话跟踪等。接着探讨了Servlet的域对象,包括request、session和application域,以及如何在这些域中添加和获取数据。同时,讲解了回话跟踪技术中的cookie和session的使用,以及两者之间的概念、相同点和区别。
摘要由CSDN通过智能技术生成

一、Requset、Response对象

1 HttpServletRequest对象

  • 接受请求参数parameter
String  getParameter(String pname); 获取单值请求参数
String[]  getParameterValues(String pname); 获取多值请求参数
Enumeration<String>  getParameterNames();获取所有的请求参数名对应的集合
Map<String,String[]>  getParameterMap();获取所有请求参数对应的map

void setCharacterEncoding(String cset)
  • 获取请求头header
String getHeader(String hname)
  • 作为域对象
域对象:可以在指定区域中实现数据共享的对象
request域:实现在请求转发/请求包含的多个资源(请求链)之间实现数据共享
域对象中的数据:域属性Attribute
域对象的统一方法:
   Object getAttribute(String aName);
   void removeAttribute(String aName);
   void setAttribute(String aName,Object vObj);
   Enumeration<String> getAttributeNames();
  • 请求转发和请求包含
请求转发:request.getRequestDispatcher(path).forward(request,response);
请求包含:request.getRequestDispatcher(path).include(request,response);
  • 其他功能
String getMethod();
String getContentPath();
Cookies[]  getCookies();
HttpSession  getSession();

2、HttpServletResponse对象

  • 设置响应体
void setCharacterEncoding(String cset)
void setContentType()
OutputStream getOutputStream();
PrintWriter  getWriter();
  • 设置响应头
String setHeader(String hname,String hvalue);
  • 重定向
resposne.sendRedirect(path)
  • 其他功能
//void resp.addCookie(Cookie); 添加cookie
//resp.sendError(404,"请求的资源不存在!");//设置错误状态码和错误信息
//resp.setStatus(404);//设置状态码

3、 请求转发+请求包含+重定向的区别

请求转发和请求包含的区别
1:方法不同
2:响应头
3:响应体
4:使用不同:
请求转发和重定向的区别
1:请求次数不同
2:浏览器显示不同
3:是否可以用request域对象
4:请求转发只能跳转到当前项目的资源  重定向可以跳转到任意项目的资源

二、 servlet域对象

在指定区域内实现数据共享的对象
域对象的统一方法:
   Object getAttribute(String aName);
   void removeAttribute(String aName);
   void setAttribute(String aName,Object vObj);
   Enumeration<String> getAttributeNames();

1 request域对象

requet域对象的共享区域:同一个请求链(请求转发或者请求包含涉及的多个资源)
  • 代码1:/s0101
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    //设置request域属性
    request.setAttribute("aa", "aa"+System.currentTimeMillis());
    request.setAttribute("bb", "bb"+System.currentTimeMillis());
    request.getRequestDispatcher("/s0100").forward(request, response);
}
  • 代码2:/s0100
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   

    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    PrintWriter out=response.getWriter();
    //获取request域属性
    out.print("request域属性aa="+request.getAttribute("aa")+"<br/>");
    out.print("request域属性bb="+request.getAttribute("bb")+"<br/>");
}

2 session域对象

session:回话: 同一个浏览器对服务器发出的几个连贯(默认时间差不能大于30分钟)的请求
回话跟踪技术:解决http协议的无状态(两次请求之间不能实现数据共享)
  • 代码1:/s0102
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
    response
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值