자바 웹 입문: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에 따라 라이센스가 부여됩니다.