BackEnd/JSP & Servlet

1. request 객체 설정 웹 브라우저를 통해 post 방식으로 한글값을 받는 경우 어떤 일이 발생하는지 확인해보자. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getParameter("name")); // 결과: ãã´ãã¹ } 위 코드의 결과를 보면 매우 이상한 문자가 발생하는 것을 확인할 수 있다. 이는 우리는 UTF-8이라는 인코딩 방식을 사용하지만 브라우저는 요청을 보낼 때 해당 encoding 방식을 보장하지 않기 때문에 발생하는 문제다. 따라서 우리는 request 객체의 ..
1. Servlet 버전에 따른 작성방법 Servlet은 버전에 따라 작성방법이 아래와 같이 2가지로 나뉜다. Servlet 3.0 spec 이상 web.xml 파일 사용 x, 자바 어노테이션 사용 해당 방식의 예시 코드는 다음과 같다. @WebServlet("/exam") public class ExamServlet extends HttpServlet {...} Servlet 3.0 spec 미만 Servlet 등록 시 web.xml 파일에 등 해당 방식의 web.xml 파일 예시 코드는 다음과 같다. ExamServlet ExamServlet exam.ExamServlet ExamServlet exam 이 글에서는 3.0 버전 이상의 방식에 대해서 살펴본다. 2. Servlet 3.0 spec 이상 ..
1. 자바 웹 어플리케이션이란? 웹 어플리케이션은 정적/동적 서비스를 모두 제공하는 어플리케이션이다. 즉, 기존 정적 서비스를 제공하는 HTML, CSS, 자바스크립트 등도 사용 가능하며 동적 서비스를 위한 JSP, 서블릿 등을 사용할 수 있다. 이때 자바 웹 어플리케이션은 WAS에 설치되어 동작한다. 즉, 웹 어플리케이션은 Tomcat과 같은 WAS를 통해 동작된다. 자바 웹 어플리케이션은 아래의 폴더 구조를 지켜야 한다. Application ├── WEB-INF 폴더 │ ├── classes 폴더 (java 패키지 등 실제 클래스가 들어감) │ ├── lib 폴더 (library의 약자로 각종 자료 파일을 넣을 수 있음) │ └── web.xml (servlet 3.0 미만은 필수, 3.0 이상은 ..
1. JSTL이란? JSTL(JSP Standard Tag Library)은 JSP 페이지에서 조건문 처리, 반복문 처리 등을 html tag 형태로 작성할 수 있게 도와준다. JSTL을 사용하려면 먼저 아래 URL로 접속하여 세 개의 jar 파일을 다운 받아야 한다. https://tomcat.apache.org/download-taglibs.cgi 위 URL에 접속하면 몇 개의 jar 파일이 존재하는데 아래 세 가지를 다운받으면 된다. 그리고 다운받은 jar 파일은 아래와 같이 WEB-INF/lib 폴더 아래에 넣어주면 된다. JSTL은 다음과 같은 태그를 제공한다. 라이브러리 하위 기능 접두어 코어 변수 지원 흐름 제어 URL 처리 c XML XML 코어 흐름 제어 XML 변환 x 국제화 지역 메시..
1. EL(Expression Language)란? EL(Expression Language)는 값을 표현하는 데 사용되는 스크립트 언어로 JSP의 기본 문법을 보완하는데 사용한다. JSP에 자바 언어를 작성하게 되면 디자이너나 프론트를 담당하는 사람들에게는 이질감이 들 수 있다. 이러한 단점을 보완하기위해 EL이 등장하게 된다. EL을 사용하면 application scope, session scope 등의 변수들을 쉽게 출력할 수 있으며 수치 연산, 관계 연산, 논리 연산자도 제공한다. 또한 자바 클래스에서 메소드를 호출하는 기능도 제공하며 EL만의 기본 객체도 제공한다. EL은 "${expr}"과 같이 "${}"를 사용하여 표현한다. 2. EL의 기본 객체 EL에서 제공하는 기본 객체는 다음과 같다..
1. Servlet과 JSP의 연동이란? Servlet은 java 파일이기 때문에 프로그램 로직이 수행되기에 유리한 구조를 가진다. 하지만 Servlet은 HTML 페이지를 만들기 위해서는 out.prinln에 문자열로 html 태그들을 다 넣어줘야 하는 불편함이 있다. 반면 JSP는 자바 코드를 사용하기 위해 Scriptlet, Expression등을 사용해야 했지만 html 태그를 그냥 작성하면 되기 때문에 결과를 출력하기 쉽다. 이런 Servlet과 JSP의 장단점을 해결하기 위해 Servlet은 프로그램 로직을 수행하게 하고, 이후 JSP로 포워딩을 하는 방식을 사용한다. 이런 방식은 "Servlet과 JSP의 연동"이라고 부른다. 2. 예제 코드 아래 코드들은 1~100 사이의 두 난수값을 생성..
1. Forward란? 위처럼 client가 servlet1에 어떠한 요청을 보냈다고 하자. 이때 servlet1이 요청의 일정 부분만 처리하고 나머지를 다른 servlet에 넘겨주었다. 이렇게 넘겨주는 작업을 Forward라고 부른다. 나머지 작업을 넘겨받은 servlet은 작업을 모두 마치고 응답을 만들어서 client에게 보내주게 된다. 2. 예제 코드 // Servlet01.java의 service 메서드 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int randValue = (int)(Math.random()*10)+1; re..
1. Redirect란? Redirect란 HTTP 프로토콜로 정해진 규칙이다. 서버는 클라이언트로 요청을 받고, 클라이언트에게 특정 URL로 이동하라고 요청할 수 있다. 이를 Redirect라고 말한다. 서버는 클라이언트에게 응답으로 상태코드를 302와 함께 이동할 URL정보를 Location 헤더에 담아 전송한다. 클라이언트는 서버에게 받은 상태값이 302라면 Location 헤더값으로 재요청을 보낸다. 이후 브라우저의 주소창은 전송받은 URL로 바뀐다. Servlet과 JSP는 Redirect를 위해 HttpServletResponse가 가지고 있는 sendRedirect()메소드를 사용한다. 2. 사용 예제 redirect를 사용하기 위해서는 JSP를 다음과 같이 작성하면 된다. 위와 같이 작성하..
코딩마루
'BackEnd/JSP & Servlet' 카테고리의 글 목록