자바 웹 입문:HttpResponse 와 HttpRequest 상세 설명
HttpServletResponse 개요:
Servlet 을 만 들 때 service()방법 이나 doGet()/doPost()를 덮어 씁 니 다.이 방법 들 은 두 개의 인자 가 있 습 니 다.하 나 는 요청 한 request 와 응답 response 를 대표 합 니 다.서비스 방법의 response 유형 은 ServletResponse 이 고 doGet/doPost 방법의 response 유형 은 HttpServletResponse 이 며 HttpServletResponse 는 ServletResponse 의 하위 인터페이스 로 기능 과 방법 이 더욱 강하 다.
Response 실행 프로 세 스
 응답 헤드 가 많 습 니 다.여기 서 자주 사용 하 는 것 만 소개 합 니 다.
 브 라 우 저 에 서 는 F12 패키지 로 응답 헤드,요청 헤드 를 볼 수 있 으 며 구체 적 인 것 은 다시 확인 할 수 있 습 니 다.
응답 줄 설정
응답 상태 코드 설정
/**
 * @Author: crush
 * @Date: 2021-05-09 19:35
 * version 1.0
 */
@WebServlet("/test3")
public class HttpResponseTest3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("     ,         ,         ");
        resp.setStatus(404);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
테스트
 응답 헤드 설정
점프 페이지 새로 고침
/**
 * @Author: crush
 * @Date: 2021-05-09 19:35
 * version 1.0
 */
@WebServlet("/test4")
public class HttpResponseTest4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //        1     
        System.out.println("       1     ");
        resp.setHeader("Refresh", "1");
        //     3       
//        resp.setHeader("Refresh","3;URL=hello.jsp");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
테스트
 작은 demo 가 페이지 새로 고침 누적 을 실현 합 니 다.
/**
 * response
 * @author Adimi
 */
@WebServlet("/test4")
public class ResponseTest4 extends HttpServlet {
    private static Integer id=1;
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setHeader("Refresh","1");
        PrintWriter writer = response.getWriter();
        id++;
        writer.print("id==>"+id);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
문자 인 코딩 설정
/**
 * @Author: crush
 * @Date: 2021-05-09 19:35
 * version 1.0
 */
@WebServlet("/test1")
public class HttpResponseTest1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //         
        //      
        //        resp.setCharacterEncoding("UTF-8");
        //                                  
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.print("  ,  !!!");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
테스트
 리 디 렉 션
/**
 *    
 * @Author: crush
 * @Date: 2021-05-09 19:35
 * version 1.0
 */
@WebServlet("/test5")
public class HttpResponseTest5 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("hello.jsp");
//        resp.setHeader("location","www.baidu.com");          
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
리퀘스트
/**
 *    
 * @Author: crush
 * @Date: 2021-05-09 19:35
 * version 1.0
 */
@WebServlet("/test5")
public class HttpResponseTest5 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        resp.sendRedirect("hello.jsp");
        req.getRequestDispatcher("hello.jsp").forward(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
리 셋 과 리 트 윗 의 차이파일 다운로드
경로 자원 가 져 오기
String path=this.getServletContext().getRealPath("WEB-INF\\classes\\8.jpg");자원 읽 기
FileInputStream fileInputStream=new FileInputStream(path);파일 이름 을 가 져 옵 니 다.경 로 를 컴퓨터 에 저장 하 는 형식 은\\\입 니 다.
String fileName=path.substring(path.lastIndexOf("\\")+1);메시지 헤더 설정 브 라 우 저 에 1.png 이 그림 설정 인 코딩 을 다운로드 하려 고 합 니 다.
resp.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
읽 은 내용 을 브 라 우 저 에 되 돌려 줍 니 다.
 int len=0;
byte[] bytes=new byte[1024];
// ServletOutputStream                     
ServletOutputStream servletOutputStream=resp.getOutputStream();
while((len=fileInputStream.read(bytes))>0) {
    servletOutputStream.write(bytes,0,len);
}
자원 닫 기
servletOutputStream.close();
        fileInputStream.close();주:8.jpg 는 제 resources 폴 더 에 놓 여 있 지만 8.jpg 가 저 장 된 위 치 를 컴 파일 해 야 합 니 다.
 구체 코드
/**
 * @Author: crush
 * @Date: 2021-05-09 19:40
 * version 1.0
 */
@WebServlet("/down")
public class ResponseDownFile extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //      
        String path=this.getServletContext().getRealPath("WEB-INF\\classes\\8.jpg");
        //    
        FileInputStream fileInputStream=new FileInputStream(path);
        //      ,            \\
        String fileName=path.substring(path.lastIndexOf("\\")+1);
        //          ,    1.png    
        //              
        //      
        resp.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
        //             
        int len=0;
        byte[] bytes=new byte[1024];
        ServletOutputStream servletOutputStream=resp.getOutputStream();
        while((len=fileInputStream.read(bytes))>0) {
            servletOutputStream.write(bytes,0,len);
        }
        //     
        servletOutputStream.close();
        fileInputStream.close();
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
HttpRequest 설명HttpServletRequest 개요
저 희 는 Servlet 을 만 들 때 service()방법 이나 doGet()/doPost()를 덮어 씁 니 다.이 방법 들 은 모두 두 개의 인자 가 있 습 니 다.하 나 는 요청 한 request 와 응답 response 를 대표 합 니 다.서비스()방법 에는 요청 방식 에 따라 doget()과 dopost()를 호출 하 는 방법 이 적 혀 있 습 니 다.
서비스 방법의 request 유형 은 ServletRequest 이 고 doGet/doPost 방법의 request 유형 은 HttpServletRequest 이 며 HttpServletRequest 는 ServletRequest 의 하위 인터페이스 로 기능 과 방법 이 더욱 강력 합 니 다.
요청 실행 절차
 요청 한 인자 가 져 오기
/**
 * @Author: crush
 * @Date: 2021-05-11 16:52
 * version 1.0
 */
@WebServlet("/request1")
public class RequestTest1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //                   
        String username = req.getParameter("username"); 
        String password = req.getParameter("password");
        PrintWriter writer = resp.getWriter();
        writer.print("<h1>"+username+":"+password+"</h1>");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
 여러 매개 변수의 값 가 져 오기
  @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //               
        req.setCharacterEncoding("utf-8");
        Enumeration<String>  names = req.getParameterNames();
        while (names.hasMoreElements()) {
            String name = (String) names.nextElement();
            String[]  values = req.getParameterValues(name);
            System.out.println(name+":"+ Arrays.toString(values));
        }
    }
요청 줄 정보 얻 기
/**
 * @Author: crush
 * @Date: 2021-05-11 16:52
 * version 1.0
 */
@WebServlet("/request3")
public class RequestTest3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //      url
        StringBuffer requestURL = req.getRequestURL();
        System.out.println("   URL===>"+requestURL);
        //      Servlet   
        String path = req.getServletPath();
        System.out.println("   Servlet   ===>"+path);
        //        HTTP     ,  GET,POST PUT
        String method = req.getMethod();
        System.out.println("        HTTP     ==>"+method);
        //                  Internet  (IP)  
        String remoteAddr = req.getRemoteAddr();
        System.out.println("remoteAddr==>"+remoteAddr);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
request 전송 실현
/**
 * @Author: crush
 * @Date: 2021-05-11 16:52
 * version 1.0
 */
@WebServlet("/request2")
public class RequestTest2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //   request2     request4 
        req.getRequestDispatcher("/request4").forward(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
request 는 도 메 인 대상 입 니 다.request 대상 도 데 이 터 를 저장 하 는 지역 대상 이기 때문에 다음 과 같은 방법 이 있 습 니 다.
setAttribute(String name, Object o) getAttribute(String name) removeAttribute(String name)ServletContext 역할 영역:생 성:웹 프로그램 을 시작 할 때 만 듭 니 다.
소각:웹 프로그램 을 닫 을 때 소각
도 메 인 역할 범위:전체 웹 응용의 시작 주기
request 역할 영역:
생 성:접근 시 request 생 성
소각:응답 종료 request 소각
도 메 인의 역할 범위:1 차 요청 중
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.