본문 바로가기
메모

tomcat, servlet, jsp

by 식빵ee 2024. 3. 15.

jsp : 기존의 html에서 java 언어를 사용할 수 있도록 만들어진 웹 페이지

 

tomcat : jsp와 servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.

아파치서버와는 다르게 db연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을 사용할 수 있다. 

200 : 전송 완료

404 : 페이지를 찾을 수 없음 -> 보통 클라이언트의 문제

405 : 요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다.

500 : 서버에서의 문제지만 정확한 원인은 알 수 없음

 

HttpServlet : GenericServlet을 상속받아서 만들어진 http 프로토콜 전용 서블릿이다. 따라서 다른 프로토콜을 사용하는 경우 genericServlet를 상속받아서 사용할 수 있다. 

servlet의 라이프 사이클

init() -> doGet() || doPost -> destory()

 

 

프론트 : html or jsp

form action에서 / 는 따로 쓸 필요없지만 get/post 만 주의할 것

프론트에서 .do .html 뭘 사용하던 마음대로지만 백엔드에서는 프론트를 따라간다.

 

백엔드 : java

HttpServlet 상속 또는 GenericServlet 상속받아서 사용

get 방식으로 요청을 받는 경우 doGet() && post 방식으로 요청을 받는 경우 doPost 오버라이드 후에 사용

어노테이션은 @WebServlet(@RequestMapping+@GetMapping)

 

서블릿을 사용하는 경우 html action 태그 쪽에서 .do를 사용하기도 한다. 이는 .html이 아니라 다른 값을 보여줌으로써 보안을 높일 수 있다.

이때 html 쪽에서는 action 태그에서는 기본적으로 /는 안 붙이는게 편하고, 붙이지 않고 붙이는 경우 ./를 사용한다 => 그냥 / 만 쓰면 에러 발생한다. 단 자바쪽에서는 반드시 /를 붙여서 받아야한다. jsp에서 보내는 요청 url과 응답 url은 일치해야 한다. 예를 들어 .do를 사용하는 경우 java 쪽에서도 마찬가지로 .do로 받아야 한다.

 

요청방식에 따라서 doGet과 doPost를 적절히 오버라이드하여 사용하며 사용자의 요청은 req 서버에서의 응답은 resp로 처리한다. 

get과 post 모두 getParameter를 사용해서 값을 가져오고, 이때 기준은 html 에서 name 속성의 값이다. (ajax는 data의 값을 가져오게 된다.) checkbox처럼 하나의 name 속성에서 2개 이상의 값이 넘어오는 경우 req.getParameterValue()를 사용하면 된다. 이때 return은 String[]

req : HttpRequest 사용자 요청을 객체로 만든 것

resp : HttpResponse 서버의 응답을 객체로 만든 것

 

한글 처리를 위해서는 resp 응답객체에 UTF-8을 명시해서 보내야 한다.

req.setCharacterEncoding("UTF-8"); => request 로 넘어오는 값들에 대해서 한글처리

req.setContentType("text/html;charset=UTF-8") => response로 넘기는 값들에 대해서 한글 처리

 

서버에서 웹으로 데이터를 전달, 즉 네트워크에서의 I/O 에서는 printWriter 를 사용한다. 단순히 텍스트전달이 아닌 json 형태로 데이터를 전달할대도 동일하게 사용된다.

 

댓글


post image post image post image post image post image post image post image post image