java 학습 노트 - HttpServletResponse 및 HttpServletRequest(14)
개발자가 사용자의 요청에 응답할 필요가 있으면 HttpServletResponse 인터페이스의 대상을 사용하십시오.
HttpServletResponse 인터페이스
인터페이스는 기본적으로 서브렛Response 인터페이스를 상속합니다.이 인터페이스의 주요 임무는 응답 헤드 정보와 클라이언트가 요청한 응답체 데이터, 쿠키의 데이터 전송을 처리하는 것이다.
서브렛Response 인터페이스에서 자주 사용하는 방법
핵심적인 방법은 Response 객체에 데이터를 출력하는 것입니다.
ServletOutputStream getOutputStream()
PrintWriter getWriter()
setContentType(String type)
setCharacterEncoding(String charset)
HttpServletResponse 인터페이스에서 자주 사용하는 방법
setStatus(int sc)
setHeader(String name, String value)
sendRedirect(String location)
Cookie
void addCookie(Cookie cookie)
URL ReWritting
String encodeURL(String url)
String encodeRedirectURL(String url)
응답 상태 코드 및 응답 헤드 제어
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//
response.setStatus(302); //
//
response.setHeader("location", "/day06/index.jsp");
}
문제: HTTP 프로토콜을 모르는 사람에게 위의 코드는 쓸 수 없습니다.
다음 문을 사용하여 대체할 수 있습니다.
response.sendRedirect("/day06/index.jsp");
바이트 흐름은 응답체의 출력을 한다
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
// UTF-8
response.setHeader("content-type", "text/html;charset=utf-8");
//
ServletOutputStream out = response.getOutputStream();
//
String data = "hello<br/>";
//
out.write(data.getBytes());
data = "<font color=\"blue\">this is a blue color!</font><br/>";
out.write(data.getBytes());
//
data = " ";
// UTF-8
out.write(data.getBytes("UTF-8")); // UTF-8
}
위의 코드에서 프로토콜을 사용하는 문은 다음 코드를 사용하여 단순화할 수 있습니다.
response.setContentType("text/html;charset=utf-8");
위의 코드는 아날로그 HTTP 프로토콜의 meta 태그를 사용하여 단순화할 수 있습니다.
out.write("".getBytes());
바이트 흐름을 사용하여 숫자를 직접 출력하면 어떻게 됩니까?
// int
int num = 65;
out.write(num);
브라우저는 텍스트 소프트웨어이기 때문에 숫자를 해석할 때 기본적으로 문자의 변환을 진행하기 때문에 위의 코드는 A를 나타낸다.65를 강제로 출력하려면 out을 사용해야 합니다.write(“65”.getBytes());
1 바이트 흐름으로 그림 출력
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
//
ServletContext context = this.getServletContext();
//
String path = context.getRealPath("/imgs/ .jpg");
File file = new File(path);
System.out.println(file);
//
response.setHeader("content-disposition",
"attachment;filename="+
URLEncoder.encode(file.getName(),"utf-8")); //
//
FileInputStream in = new FileInputStream(file);
//
ServletOutputStream out = response.getOutputStream();
//
byte [] b = new byte[1024];
int len = 0;
while((len = in.read(b)) != -1){
out.write(b, 0, len);
}
//
in.close();
}
만약 한 사이트에 그림과 텍스트가 있다면 어떤 흐름을 사용해야 합니까?
Repsonse는 바이트 흐름과 문자 흐름을 동시에 가져올 수 없으며, 이상의 문제는 HTTP 통신 원리를 제대로 파악하지 못했기 때문이다.브라우저가 요청을 보내는 처리는 반드시 페이지이지만 페이지의 그림 표현 형식은 바이트 흐름이 아니라
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.