Javaweb 4

请求与响应

Servlet应用

重定向

HttpServletRequest接口提供的sendRedirect()方法用于生产302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的URL。

发送响应消息头相关的方法

当Servlet 向客户端发送响应消息时,由于HTTP协议的响应头字段有很多种,HtpSereleResponse接口中,定义了一系列设置HITP响应头字段的方法。

发送响应消息体相关的方法

由于在HTTP响应消息中,大量的数据都是通过响应消息体传递的,因此,ServletResponse道循以10流传递大量数据的设计理念。在发送响应消息体时,定义了两个与输出流相关的方法:

  1. getOutputStream()方法
    该方法所获取的字节输出流对象为ServletOutputStream类型。由于ServletOutputStream是OutputStream的子类,它可以直接输出字节数组中的二进制数据。因此,要想输出二进制格式的响应正文,就需要使用getOutputStream()方法。
  2. getWriter()方法
    该方法所获取的字符输出流对象为PrintWriter 类型。由于PrintWriter类型的对象可以直接输出字符文本内容,因此,要想输出内容全为字符文本的网页文档,需要使用getWriter()方法。

HttpServletResponse对象

HttpServletResponse对象代表服务器的响应,这个对象中封装了响应客户端浏览器的流对象,以及向浏览器响应的响应头、数据、响应状态码等。每一个请求的客户端都独立创建请求和响应对象
设置响应类型
默认是text/html;若要设置则使用resp.setContext(" MIME ")进行对应的设置。

HttpServletResponse应用
解决中文乱码
先创建一个Servlet
命名为ChineseServlet,代码如下:

package cn.itcast.chapter04.respon;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class ChineseServlet
    */
    @WebServlet("/chinese")
    public class ChineseServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      String data=“中国人zhongguo”;
      PrintWriter pw=response.getWriter();
      pw.print(data);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
在doGet方法里面加一句

response.setContentType(“text/html;charset=utf-8”);

即可解决乱码问题

注意:如果此时仍有乱码,可能是浏览器解码错误导致的。

课堂实例
package cn.itcast.chapter04.request;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RequestFowardServlet
    */
    @WebServlet("/foward")
    public class RequestFowardServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      RequestDispatcher rd=request.getRequestDispatcher("/result");
      request.setAttribute(“company”, “huagong”);
      rd.forward(request, response);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
package cn.itcast.chapter04.request;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RequestHead
    */
    @WebServlet("/head")
    public class RequestHead extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setContentType(“text/html;charset=utf-8”);
      Enumeration er=request.getHeaderNames();

      while(er.hasMoreElements()) {
      String name=er.nextElement();

       String value=request.getHeader(name);
       System.out.println("消息头:"+name+" :  "+value);
      

      }

    }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
package cn.itcast.chapter04.request;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RequestLine
    */
    @WebServlet("/request")
    public class RequestLine extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      String method=request.getMethod();
      System.out.println(“请求方式:”+method);

      String proto=request.getMethod();
      System.out.println(“请求协议:”+proto);

      String contextpath=request.getMethod();
      System.out.println(“请求方式:”+contextpath);

      String servletpath=request.getMethod();
      System.out.println(“servletpath:”+servletpath);

      String pathURI=request.getRequestURI();
      StringBuffer pathURL=request.getRequestURL();
      System.out.println("RUI: “+pathURI+” URL: "+pathURL);

    }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
package cn.itcast.chapter04.request;

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RequestParamServlet
    */
    @WebServlet("/param")
    public class RequestParamServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      System.out.println(“get请求”);
      String username=request.getParameter(“username”);
      System.out.println(“username:”+username);

      String password=request.getParameter(“password”);
      System.out.println(“password:”+password);

      String[] hobbys=request.getParameterValues(“hobbys”);
      System.out.println(“hobbys:”+Arrays.toString(hobbys));
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      System.out.println(“post请求”);
      request.setCharacterEncoding(“utf-8”);
      String username=request.getParameter(“username”);
      System.out.println(“username:”+username);

      String password=request.getParameter(“password”);
      System.out.println(“password:”+password);

      String[] hobbys=request.getParameterValues(“hobbys”);
      System.out.println(“hobbys:”+Arrays.toString(hobbys));

    }

}

package cn.itcast.chapter04.request;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RequestResultServlet
    */
    @WebServlet("/result")
    public class RequestResultServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setContentType(“text/html;charset=utf-8”);
      Object obj=request.getAttribute(“company”);
      String name=(String)obj;
      response.getWriter().print(“公司名称”+name);

    }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
package cn.itcast.chapter04.respon;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class ChineseServlet
    */
    @WebServlet("/chinese")
    public class ChineseServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //ServletOutputStream out=response.getOutputStream();
      //response.setContentType(“text/html;charset=utf-8”);
      //String data=“大数据2005”;
      //out.write(data.getBytes(“utf-8”));

      response.setContentType(“text/html;charset=utf-8”);
      String data=“中国人zhongguo”;
      PrintWriter pw=response.getWriter();
      pw.print(data);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}

package cn.itcast.chapter04.respon;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class Loc
    */
    @WebServlet("/loc")
    public class Loc extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setStatus(302);
      response.setHeader(“Location”, “/chapter04/login.html”);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
package cn.itcast.chapter04.respon;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class RefreshServlet
    */
    @WebServlet("/refresh")
    public class RefreshServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setHeader(“Refresh”, “3”);
      response.getWriter().print(new Date());

    }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}

2020080605030

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值