
템플릿 엔진(Template Engine)
- 동적으로 웹 페이지나 문서를 생성하기 위해 사용되는 도구나 소프트웨어
- 정적인 템플릿(양식)과 데이터를 결합> 동적으로 콘텐츠를 생성, 표시하는 역할
- 주로 웹 애플리케이션에서 서버 측에서 HTML을 동적으로 생성하는 데 사용
- 이름이 정해져 있음
컨버터(Converter) : 한 형식이나 시스템에서 다른 형식이나 시스템으로
데이터를 변환하는 데 사용되는 도구나 소프트웨어
자바 코드에 html 코드를 섞는게 불편….
html코드에 자바 코드를 넣을 때 자바 Servlet으로 바꿔주는 역할을 함
html 코드에 자바 코드가 섞인 걸 ⇒ 자바 코드에 html 코드가 섞인 것으로 바꿔 줌
- 템플릿 엔진 이용해서 더 쉽게 만들어보기

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>회원가입 페이지</h1>
<hr>
<form action="/join" method="">
<input type="text" placeholder="username" name="username">
<input type="text" placeholder="password" name="password">
<input type="text" placeholder="email" name="email">
<button>회원가입</button>
</form>
</body>
</html>

- 요청은 파일 명
- .jsp 파일이라서 톰캣에게 위임
톰캣은 이 파일을 Servlet으로 변환해서 실행
<% %> : %%사이에 자바 코드 입력 가능
<%= %> : 출력 가능

- 리다이렉트하면 그림이 필요 없음
get 요청만 디자인이 있음
- 자유도가 너무 높으면 같이 협업하기 힘듦 → 프레임워크 필요
디자인이 없으면 Servlet으로 해도 되지만 통일성을 주는 것
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% // 템플릿 엔진에는 이름이 정해져 있음
response.setHeader("Content-type", "text/html; charset=utf-8"); // 헤더에 바디를 설명
// 1. 파싱 쉽게 하기 -> 커퍼에 키값을 찾아줌
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
System.out.println("username : " + username);
System.out.println("password : " + password);
System.out.println("email : " + email);
// 2. 유효성 검사(1000줄 정도 됨...)
if(username.length() < 3 || username.length() > 10) { // 필터링으로 사용
response.getWriter().println("<h1>username 글자수가 3~10 사이여야 합니다.");
return;
}
// 3. DB연결 -> DAO에 연결하기 위함
// 4. DAO의 insert 메서드를 회출
// 5. 메인 페이지 그리기
// 6. 리다이렉트 : 내가 요청한 주소를 자기 안에 있는 다른 것을 응답해주는 것
//resp.sendRedirect("/main"); // 톰캣이 만들어준 메서드
response.setStatus(302);
response.setHeader("Location", "/board/main.jsp"); // 헤더에 정보 담기
response.setHeader("clock", "12pm"); // 프로토콜이 없어서 안뜸
%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>main page</h1>
<hr>
</body>
</html>


Share article