클라이언트 웹 브라우저에서 서블릿으로 요청
pro06/WebContent/login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 창</title>
</head>
<body>
<form name="frmLogin" method="get" action="login" encType="UTF-8"> <!-- login 서블릿 매핑명으로 데이터 전송 -->
아이디 :<input type="text" name="user_id"><br>
비밀번호:<input type="password" name="user_pw"><br>
<input type="submit" value="로그인"> <input type="reset" value="다시입력">
</form>
</body>
</html>
pro06/src/sec01/ex01/LoginServlet.java
package sec01.ex01;
...
@WebServlet("/login") // 서블릿 매핑명
public class LoginServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("init 메서드 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/* 전송된 데이터 받아오기 */
request.setCharacterEncoding("utf-8"); //전송된 데이터 인코딩
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
System.out.println("아이디:" + user_id);
System.out.println("비밀번호:" + user_pw);
}
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
pro06/WebContent/input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>여러 가지 input 타입 표시 창</title>
</head>
<body>
<form name="frmInput" method="get" action="input"> <!-- input 서블릿 매핑명으로 데이터 전송 -->
아이디 :<input type="text" name="user_id"><br>
비밀번호:<input type="password" name="user_pw"><br>
<!-- 동일 name 값으로 전송 -->
<input type="checkbox" name="subject" value="java" checked>자바
<input type="checkbox" name="subject" value="C언어">C언어
<input type="checkbox" name="subject" value="JSP">JSP
<input type="checkbox" name="subject" value="안드로이드">안드로이드
<br><br>
<input type="submit" value="전송">
<input type="reset" value="초기화">
</form>
</body>
</html>
pro06/src/sec01/ex01/InputServlet.java
package sec01.ex01;
...
@WebServlet("/input")
public class InputServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("init 메서드 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
// 개별 name 값을 가진 데이터 추출
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
System.out.println("아이디:" + user_id);
System.out.println("비밀번호:" + user_pw);
// 동일 name 값을 가진 데이터 추출
String[] subject = request.getParameterValues("subject");
for (String str : subject) {
System.out.println("선택한 과목:" + str);
}
}
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
pro06/WebContent/input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>여러 가지 input 타입 표시 창</title>
</head>
<body>
<form name="frmInput" method="get" action="input"> <!-- input 서블릿 매핑명으로 데이터 전송 -->
아이디 :<input type="text" name="user_id"><br>
비밀번호:<input type="password" name="user_pw"><br>
<!-- 동일 name 값으로 전송 -->
<input type="checkbox" name="subject" value="java" checked>자바
<input type="checkbox" name="subject" value="C언어">C언어
<input type="checkbox" name="subject" value="JSP">JSP
<input type="checkbox" name="subject" value="안드로이드">안드로이드
<br><br>
<input type="submit" value="전송">
<input type="reset" value="초기화">
</form>
</body>
</html>
pro06/src/sec01/ex01/InputServlet.java
package sec01.ex01;
...
@WebServlet("/input")
public class InputServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("init 메서드 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
/* 전송된 모든 name 순회 */
Enumeration enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
// 해당 name에 대한 데이터 추출
String[] values = request.getParameterValues(name);
for (String value : values) { System.out.println("name=" + name + ",value=" + value); }
}
}
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
pro06/WebContent/login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function fn_validate() {
var frmLogin = document.frmLogin; // <form> 태그 name
var user_id = frmLogin.user_id.value;
var user_pw = frmLogin.user_pw.value;
// 유효성 검사
if ((user_id.length == 0 || user_id == "") || (user_pw.length == 0 || user_pw == "")) {
alert("아이디와 비밀번호는 필수입니다.");
} else {
frmLogin.method = "post";
frmLogin.action = "login";
frmLogin.submit(); // 서블릿으로 전송
}
}
</script>
<title>로그인창</title>
</head>
<body>
<form name="frmLogin" 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>
pro06/src/sec03/ex03/LoginServlet.java
package sec03.ex03;
...
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
public void init() {
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 address = 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 += "주소 : " + address;
data += "</body>";
data += "</html>";
out.print(data);
}
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
*자바 웹을 다루는 기술