A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 小石姐姐 于 2018-5-23 16:48 编辑

request和response的使用



1.ServletRequest存取数据:
        * request作为域对象存取数据:
                * setAttribute(String name,String value);
                * Object getAttribute(String name);
                * removeAttribute(String name);
        * request的作用范围:
                * 作用范围就是一次请求的范围.
                * 创建和销毁:
                        * 创建:客户端向服务器发送了一次请求以后,服务器就会创建一个request的对象.
                        * 销毁:当服务器对这次请求作出了响应之后.


        * public RequestDispatcher getRequestDispatcher(String path)
                //
                返回一个 RequestDispatcher 对象,它充当位于给定路径上的资源的包装器。
                可以使用 RequestDispatcher 对象将请求转发给资源,或者在响应中包含资源。
                资源可以是动态的,也可以是静态的。
                指定的路径名可以是相对的,尽管它无法扩展到当前 servlet 上下文之外。
                如果该路径以 "/" 开头,那么可以相对于当前上下文根解释它。
                如果 servlet 容器无法返回 RequestDispatcher,则此方法将返回 null。
        


        * 使用request获得客户机的信息:
例:
/*
public class RequestServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;


        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // 获得请求方式:
                String method = request.getMethod();
                System.out.println("请求方式:"+method);
                // 获得客户机的IP地址:
                String ip = request.getRemoteAddr();
                System.out.println("IP地址:"+ip);
                // 获得用户的请求的路径:
                String url = request.getRequestURL().toString();
                String uri = request.getRequestURI();
                System.out.println("获得请求的URL:"+url);
                System.out.println("获得请求的URI:"+uri);
                // 获得发布的工程名:
                String contextPath = request.getContextPath();
                System.out.println("工程名:"+contextPath);
               
        }
*/                        




2.获取客户机信息
* getMethod();                        ---获得请求方式.
* getQueryString();                ---获得请求路径后的参数.
* getRemoteAddr();                ---获得客户机的IP地址.
* getRequestURI();                ---获得请求的路径
* getRequestURL();                ---获得请求的路径
* getContextPath();                ---获得工程名
* request.getHeader(“User-Agent”);
* request.getHeader(“Referer”);


3.接受表单参数
* request.getParameter(String name);
* request.getParameterValues(String name);
* request.getParamaterMap();




        
--------------------------------------------------------------------------------------
2.ServletResponse


2.1.概述
        * Response:代表响应的对象.从服务器向浏览器输出内容.
2.2.向页面输出内容
        * response.getWriter().println("<h1>登录失败:用户名或密码错误!</h1>");
        * getOutputStream();做文件下载用


注意: 这两个方法是互斥的.
      做出响应的时候只能使用其中的一种流响应.
2.3常用方法:
        //响应行:
        * public void setStatus(int sc)
                设置此响应的状态代码。此方法用于设置没有错误时的返回状态代码
                (例如状态代码 SC_OK 或 SC_MOVED_TEMPORARILY)。
                如果有错误,并且调用者希望调用 Web 应用程序中定义的错误页面,则应改用 sendError 方法。
        //响应头:
        //针对一个key对应多个value的头信息.
        * public void addDateHeader(String name, long date)
                用给定名称和日期值添加响应头。该日期根据距历元时间的毫秒数指定。此方法允许响应头有多个值。
        
        * public void addHeader(String name, String value)
            用给定名称和值添加响应头。此方法允许响应头有多个值。
               
        * public void addIntHeader(String name, int value)
                用给定名称和整数值添加响应头。此方法允许响应头有多个值。
        
        //针对一个key对应一个value的头信息.
        * public void setDateHeader(String name, long date)
                用给定名称和日期值设置响应头。该日期根据距历元时间的毫秒数指定。
                如果已经设置了头,则新值将重写以前的值。
                containsHeader 方法可用于测试在设置其值之前头是否存在。
        
        * public void setHeader(String name, String value)
                用给定名称和值设置响应头。如果已经设置了头,则新值将重写以前的值。
                containsHeader 方法可用于测试在设置其值之前头是否存在。
               
        * public void setIntHeader(String name, int value)
                用给定名称和整数值设置响应头。如果已经设置了头,则新值将重写以前的值。
                containsHeader 方法可用于测试在设置其值之前头是否存在。
        
        //响应体
        * public ServletOutputStream getOutputStream() throws java.io.IOException
                返回适用于在响应中编写二进制数据的 ServletOutputStream。servlet 容器不会编码二进制数据。
                对 ServletOutputStream 调用 flush() 将提交响应。
                可调用此方法或 #getWriter 编写正文,而不是两种方法都调用。
               
        * public java.io.PrintWriter getWriter() throws java.io.IOException
                返回可将字符文本发送到客户端的 PrintWriter 对象。
                PrintWriter 使用 #getCharacterEncoding 返回的字符编码。
                如果未如 getCharacterEncoding 中所述指定响应的字符编码(
                即该方法只返回默认值 ISO-8859-1),
                则 getWriter 会将字符编码更新到 ISO-8859-1。
               
2.4【文件下载的方式】
一种:超链接下载.直接将文件的路径写到超链接的href中.---前提:文件类型,浏览器不支持.
二种:手动编写代码的方式完成文件的下载.
          * 设置两个头和一个流:
                        * Content-Type                        :文件的MIME的类型.
                        * Content-Disposition        :以下载的形式打开文件.
                        * InputStream                        :文件的输入流.        

您需要登录后才可以回帖 登录 | 加入黑马