서블릿의 주요 기능
- 클라이언트로부터 요청을 받는다.
- 데이터베이스 연동과 같은 비즈니스 로직을 처리한다.
- 처리된 결과를 클라이언트에 돌려준다.
클라이언트가 서블릿에 요청을 하면 먼저 톰캣 컨테이너가 받는다. 그 다음 사용자의 요청이나 응답에 대한 HttpServletRequest 객체와 HttpServletResponse 객체를 만들고 서블릿의 doGet()이나 doPost() 메서드를 호출하면서 이 객체들을 전달한다.
톰캣이 사용자의 요청에 대한 정보를 모든 HttpServletRequest 객체의 속성으로 담아 메서드로 전달하므로 각 HttpServletRequest에서 제공하는 메서드들은 매개변수로 넘어온 객체들을 이용하여 사용자가 전송한 데이터를 받아오거
나 응답할 수 있는 것이다.
<script type="text/javascript">
function LoginForm__submit(form) {
let loginId = form.loginId.value.trim();
let loginPw = form.loginPw.value.trim();
if (loginId.length == 0) {
alert('아이디 입력해주세요');
return;
}
if (loginPw.length == 0) {
alert('비번 입력해주세요');
return;
}
form.submit();
}
</script>
<form method="POST" action="doLogin"
onsubmit="LoginForm__submit(this); return false;">
<div>
아이디 : <input autocomplete="off" type="text" placeholder="아이디 입력해주세요"
name="loginId" />
</div>
<div>
비밀번호 : <input autocomplete="off" type="text" placeholder="비밀번호 입력해주세요"
name="loginPw" />
</div>
<button type="submit">로그인</button>
</form>
<div>
<a style="color: green" href="list">리스트로 돌아가기</a>
</div>
사용자가 아이디와 비밀번호를 입력 후 로그인을 클릭하게 되면 form 태그의 action 속성은 데이터를 전송할 서블릿이나 JSP의 이름을 지정한다. 위에서는 지정된 이름이 doLogin인 서블릿으로 아이디와 비밀번호가 전송된다.
이벤트 발생과 action에 지정된 URL이 적용되는 그 사이의 시점에 처리할 동작을 onSubmit 속성을 통해 지정할 수 있는데, 연결된 함수에 true를 반환하면 form이 전송, false를 반환한다면 form이 전송되지 않는다.
false가 반환되면 이벤트 처리를 그대로 강제 종료 시키기에 action이 처리되지 않는다. 즉, 수동으로 이벤트 처리를 막아두는 것이다.
위 상황에서는 function도 포함 시켜 주었는데, 이를 해주지 않았을 경우 아이디 또는 비밀번호를 작성하지 않아도 form이 실행되어 넘어가버리는 상황이 발생하였다. 따라서 return false로 막아주고, 그 앞에 function을 넣어 아이디 또는 비밀번호가 올바르게 작성되었는지 확인해주고 function에서 submit을 수동으로 작동시켜주었다.
'JSP' 카테고리의 다른 글
서블릿(Servlet) - API, 생명주기 (0) | 2024.08.11 |
---|---|
JSP(08.07) - HTTP, HttpSession, Request, Response (0) | 2024.08.07 |
JSP(08.07) - GET, POST, TDD (0) | 2024.08.07 |
JSP(08.06) - set, get, sql Injection (0) | 2024.08.06 |
JSP(08.05) - 절대경로, 상대경로 (0) | 2024.08.05 |