麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

java學習筆記—HttpServletResponse(21)

2019-11-14 23:36:17
字體:
來源:轉載
供稿:網友
java學習筆記—HttpServletResponse(21)
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 獲取字節流對象        ServletOutputStream out = response.getOutputStream();        // 獲取字符流對象        PRintWriter writer = response.getWriter();        out.write("image".getBytes());        writer.write("<br/>text");        }

運行結果出現異常,異常信息如下:

java.lang.IllegalStateException: getOutputStream() has already been called for this response

總結:

由于服務器的輸出可以使用字節流或字符流,因此在實際的開發中只需要獲取其中一個流即可。

  1. 如果在另一個流打獲取之前將第一個流數據直接進行顯示的刷新,那么數據被推送給瀏覽器,但是繼續拋出以上的異常。
  2. 如果在另一個流打獲取之前將第一個流直接關閉,那么數據被推送給瀏覽器,但是繼續拋出以上的異常。
  3. 一定要注意在請求轉發的時候request和response對象是共享的,那么如果轉發前已經獲取了response對象上得字節流,那么在轉發后就一定不能再獲取字符流。
  4. 一定不要在請求轉發前手工關閉response的任何輸出流對象,如果關閉默認響應結束。
HttpServletRequest接口

該接口繼承自ServletRequest接口。該接口的對象主要用于獲取用戶提交請求中的數據。

該接口的對象是由Web容器(Tomcat)創建直接傳遞給service()方法。

ServletRequest接口常用方法

獲取用戶請求參數

String getParameter(String name)             ? 獲取單個請求參數String[] getParameterValues(String name)      ? 獲取多個請求值Enumeration getParameterNames()         ? 獲取所有參數名Map getParameterMap()                 ? 獲取所有參數的Map集合對象

在對象中存儲和獲取數據

void setAttribute(String name, Object o)     ? 設置屬性Object getAttribute(String name)            ? 獲取屬性

指定獲取用戶請求參數數據時候的編碼方式

String getCharacterEncoding()            ? 設置獲取請求參數值時候編碼方式

HttpServletRequest接口常用方法

Cookie[] getCookies()                     ? 獲取Cookie數組Httpsession getSession()                 ? 獲取回話對象String getContextPath()                    ? 獲取網站的映射路徑
獲取請求參數

在實際的開發中request對象主要的任務是獲取用戶傳遞過來的各種類型的參數。以下我們就以不同的方式獲取各種請求參數。

1 獲取單一的請求參數

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 獲取單一的請求參數        String value = request.getParameter("uname");        // 獲取字節流對象        ServletOutputStream out = response.getOutputStream();        String data = "value="+value;        // 輸出        out.write(data.getBytes());    }

2 獲取多個值

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 獲取單一的請求參數        String value[] = request.getParameterValues("likes");        // 獲取字節流對象        ServletOutputStream out = response.getOutputStream();        String data = "value="+Arrays.toString(value).toString();        // 輸出        out.write(data.getBytes());    }

3獲取所有請求數據

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 獲取所有的請求參數名字的迭代器        Enumeration<String> nas = request.getParameterNames();        // 獲取字節流對象        ServletOutputStream out = response.getOutputStream();        // 迭代        while(nas.hasMoreElements()){            String name = nas.nextElement();            if("uname".equals(name)){                String value = request.getParameter(name);                out.write((name+"="+value).getBytes());            }            out.write("<br/>".getBytes());            if("likes".equals(name)){                String[] value = request.getParameterValues(name);              out.write((name+"="+Arrays.toString(value)).getBytes());            }        }    }

4封裝請求參數

一般的注冊頁面中用戶的請求數據比較多,如果servlet直接獲取了這些數據,但是servlet本身不能處理這些數據需要傳遞給底層的業務層代碼進行處理。如果一個一個傳遞那么太繁瑣。因此獲取到用戶的請求參數后需要適當進行數據的封轉以便傳遞給下一層處理數據。

JavaBeanàBeanUtils

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {        // 獲取所有請求的參數的Map對象        Map<String,Object> map = request.getParameterMap();        // 獲取set集合        Set<Map.Entry<String, Object>> set = map.entrySet();        // 獲取迭代器對象        Iterator<Map.Entry<String, Object>> it = set.iterator();        // 創建一個javabean對象        User user = new User();        // 循環        while(it.hasNext()){            Map.Entry<String, Object> entry = it.next();            String name = entry.getKey();            Object value = entry.getValue();            try {                BeanUtils.setProperty(user, name, value);            } catch (Exception e){                System.out.println("封裝失敗!");                e.printStackTrace();            }        }        // 輸出user對象的數據        System.out.println(user);    }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人高清在线观看 | 国产一区二区三区视频在线观看 | 麻豆视频国产在线观看 | 精品乱码久久久久 | 国产精品久久久久久久娇妻 | 一级黄色在线观看 | 久久久日韩精品一区二区三区 | 国内自拍网址 | 日本一道aⅴ不卡免费播放 视屏一区 | 香蕉秀| 369看片你懂的小视频在线观看 | 视频在线中文字幕 | 黄色一级片在线免费观看 | 精品国产中文字幕 | xnxx 日本免费 | 午夜视频在线 | 91在线精品亚洲一区二区 | 欧美成人做爰高潮片免费视频 | 成年人视频在线免费播放 | 欧美日本国产精品 | 久久精品国产精品亚洲 | 国产午夜精品一区二区三区在线观看 | 久久精品一区二区三区四区五区 | 中文字幕亚洲欧美 | 色猫av| 久久精品a一级国产免视看成人 | 国产精选久久 | 亚洲第一激情 | 久久一区二区三区av | 人人看人人艹 | 久久色播| 亚洲一区二区三区91 | 一区二区高清视频在线观看 | 久草在线观看福利视频 | 成人男女视频 | 国产精品美女久久久久久不卡 | 色婷婷久久久亚洲一区二区三区 | 国产成年人视频 | 欧美性生活视频免费 | 久久这 | 亚洲天堂在线电影 |