웹사이트에서 로그인을 할 때 전송 데이터에 대해 유효성 검사를 하는 경우가 많다.
이런 기능은 자바스크립트로 구현한다.
서블릿에 요청할 때 <form>태그에서 직접 요청하는 것이 아니라 자바스크립트 함수르 호출하고 유효성 검사를 한 후 자바스크립트 함수에서 서블릿에 요청하는 예제 실습을 했다
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function fn_validate() {
//<form> 태그의 name 속성으로 <form>태그 객체를 받아온다.
var formLogin = document.formLogin;
//<form>태그 내 <input>태그의 속성으로 입력한 ID와 비밀번호를 받아온다
var user_id = formLogin.user_id.value;
var user_pw = formLogin.user_pw.value;
if((user_id=="" || user_pw =="") || (user_id.length == 0 || user_pw.length == 0)){
alert("아이디와 비밀번호를 입력해주세요.");
}
else{
formLogin.method = "post"; //전송방식 post
formLogin.action = "login"; //action 속성을 서블릿 매핑 이름으로
formLogin.submit(); //자바스크립트에서 서블릿으로 전송
}
}
</script>
<title>로그인</title>
</head>
<body>
<form name="formLogin" method="post" action="login" enctype="UTF-8">
아이디: <input type="text" name="user_id"> <br>
비밀번호: <input type="password" name="user_pw"> <br>
<input type="button" onclick="fn_validate()" value="로그인">
<input type="reset" value="다시입력">
<!--화면에는 보이지 않게 값을 서블릿으로 전송 -->
<input type="hidden" name="user_address" value="수원시 권선구"/>
</form>
</body>
</html>
LoginServlet.java
package sec01.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
//초기화
public void init(ServletConfig config) throws ServletException {
System.out.println("init 메소드 호출");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=\"UTF-8\"");
PrintWriter out = response.getWriter();
String id = request.getParameter("user_id");
String pw = request.getParameter("user_pw");
String add = request.getParameter("user_address");
System.out.println("아이디: " + id);
System.out.println("비밀번호: " + pw);
String data = "<html>";
data += "<body>";
data += "아이디: " + id;
data += "<br>";
data += "패스워드: " + pw;
data += "<br>";
data += "주소: " + add;
data += "</body>";
data += "</html>";
out.print(data);
}
public void destroy() {
System.out.println("destroy 메소드 호출");
}
}
ID와 비밀번호를 입력하기 않고 로그인 버튼을 클릭하면 오류 창이 나타난다.
ID와 비밀번호를 정상적으로 입력한 경우에는 웹 브라우저로 입력값을 출력한다.
'Back > JSP' 카테고리의 다른 글
서블릿의 비즈니스 로직 처리 방법 (0) | 2022.01.31 |
---|---|
Port 8080 required by Tomcat v9.0 Server at localhost is already in use. 오류 (0) | 2022.01.31 |
서블릿의 응답 처리 방법 (0) | 2022.01.31 |
이클립스 Run On Server [Choose an existing server] 비활성화 돼있을 때 (0) | 2022.01.31 |
Servlet의 세가지 기능 (0) | 2022.01.31 |