java 학습 노트 - HttpServletResponse(21)

10383 단어 response
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

요약:
서버의 출력은 바이트 흐름이나 문자 흐름을 사용할 수 있기 때문에 실제 개발에서는 그 중 하나만 가져오면 된다.
4
  • 만약에 다른 흐름이 가져오기 전에 첫 번째 흐름 데이터를 직접 표시하는 리셋을 하면 데이터는 브라우저에 전송되지만 이상의 이상을 계속 던진다

  • 4
  • 만약에 다른 흐름이 가져오기 전에 첫 번째 흐름을 닫으면 데이터는 브라우저에 전송되지만 이상의 이상을 계속 던집니다

  • 4
  • 전송을 요청할 때 리퀘스트와response 대상이 공유되는 것을 주의해야 한다. 만약에 전송하기 전에response 대상의 바이트 흐름을 얻었다면 전송 후에 문자 흐름을 더 이상 얻을 수 없다

  • 4
  • 전송을 요청하기 전에response의 출력 흐름 대상을 수동으로 닫지 마십시오. 기본 응답이 끝나면 닫지 마십시오

  • HttpServletRequest 인터페이스


    이 인터페이스는 서브렛Request 인터페이스를 상속합니다.이 인터페이스의 대상은 주로 사용자가 제출한 요청의 데이터를 가져오는 데 사용됩니다.
    이 인터페이스의 객체는 웹 컨테이너(Tomcat)에서 서비스()에 직접 전달하는 메서드를 작성합니다.
    서브렛Request 인터페이스 공통 방법
    사용자 요청 매개 변수 가져오기
    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);
    
        }

    좋은 웹페이지 즐겨찾기