반응형
- 요청 (request)
- form 태그 이용
webapp 폴더에 html 만듬
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 로그인</title>
</head>
<body>
<!-- form 먼저 만들고 서블릿 만듬 -->
<form action="login" name="frmLogin" method="get">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="text" name="user_pw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
아이디 비번 입력후 로그인 눌러보면
get방식으로 주소창에 아이디 비번이 그대로 보임
pro07/login?... 서블릿에 login으로 매핑하면된다
- 서블릿 만들기
src/main/java에 패키지와 클래스 만듬
package sec01.ex01;
import java.io.IOException;
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{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("로그인 서블릿 : doGet");
// 모든 요청정보는 HttpServletRequest req 여기 담김
String userId = req.getParameter("user_id");
String userPw = req.getParameter("user_pw");
System.out.println("아이디 : " + userId);
System.out.println("비밀번호 : " + userPw);
}
}
이제 다시 webapp 폴더안에 member 폴더 만들고 거기에 login.html로 옮긴다.
이렇게 경로가 바뀌면 아이디 비번 이메일 요청에 오류난다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 로그인</title>
</head>
<body>
<form action="/pro07/login" name="frmLogin" method="get">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="text" name="user_pw"><br>
이메일 : <input type="text" name="user_email"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
html에 form 태그 action="login"을 /pro07/login으로 바꾼다.
그리고 다시 로그인하고 콘솔창 확인해본다.
- webapp폴더에 input.html 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="input" name="frmInput" method="get">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="text" name="user_pw"><br>
<input type="checkbox" name="subject" value="자바"><br>
<input type="checkbox" name="subject" value="C언어"><br>
<input type="checkbox" name="subject" value="JSP"><br>
<input type="checkbox" name="subject" value="안드로이드"><br>
</form>
</body>
</html>
- src/main/java에 InputServlet을 servlet으로 생성
package sec01.ex01;
import java.io.IOException;
import java.util.Arrays;
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("/input")
public class InputServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("user_id");
String pw = request.getParameter("user_pw");
System.out.println("아이디 : " + id);
System.out.println("비밀번호 : " + pw);
String[] subject = request.getParameterValues("subject");
System.out.println("선택과목 : " );
System.out.println(Arrays.toString(subject));
}
}
주의! @WebServlet("/input") 에 /Input 으로 대문자가 되어있을경우 소문자로 바꾸기
- webapp에 input2.html 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="input2">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="text" name="user_pw"><br>
이름 : <input type="text" name="user_name"><br>
이메일 : <input type="text" name="user_email"><br>
주소 : <input type="text" name="user_addr"><br>
기타사항 : <input type="text" name="etc"><br>
<button>전송</button>
</form>
</body>
</html>
- src/main/java에 InputServlet을 복사해서 InputServlet2로 이름 바꿈
package sec01.ex01;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
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("/input2")
public class InputServlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// String id = request.getParameter("user_id");
// String pw = request.getParameter("user_pw");
// String name = request.getParameter("user_name");
// String addr = request.getParameter("user_addr");
// String etc = request.getParameter("etc");
//
// System.out.println("아이디 : " + id);
// System.out.println("비밀번호 : " + pw);
// System.out.println("이름 : " + name);
// System.out.println("주소 : " + addr);
// System.out.println("기타사항 : " + etc);
Enumeration<String> enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = enu.nextElement();
String value = request.getParameter(name);
System.out.println(name + " : " + value);
}
}
}
Enumeration 이용하면 위의 내용과 동일하게 다 받을수 있다.
콘솔 확인.
- 응답(response)
- src/main/java에 패키지 sec01.ex02 에 LoginServlet2 클래스 만들어줌
package sec01.ex02;
import java.io.IOException;
import java.io.PrintWriter;
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("/login2")
public class LoginServlet2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String testId = "admin";
String testPw = "1234";
String id = req.getParameter("user_id").trim(); // trim() 공백제거
String pw = req.getParameter("user_pw").trim();
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
out.print("<html>");
out.print("<body>");
if(id != null && pw != null && id.equals(testId) && pw.equals(testPw)) {
// 로그인에 성공한 경우
out.print("<p>");
out.print("관리자(" + id + ")님 반갑습니다");
out.print("</p>");
} else {
// 로그인에 실패한 경우
out.print("<p>");
out.print("아이디 또는 비밀번호가 일치하지 않습니다.<br>");
out.print("<a href='/pro07/login2.html'>로그인 페이지로 가기</a>");
out.print("</p>");
}
out.print("</body>");
out.print("</html>");
}
}
- webapp에 login2.html 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login2">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="text" name="user_pw"><br>
<button>로그인</button>
</form>
</body>
</html>
아이디와 비밀번호가 admin // 1234 일치할 경우 :
아닐경우 :
이렇게 나오면 된다.
- 환율 계산기
package sec01.ex02;
import java.io.IOException;
import java.io.PrintWriter;
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("/calc")
public class CalcServlet extends HttpServlet {
private static float USD_RATE = 1124.70f;
private static float JPY_RATE = 10.113f;
private static float CNY_RATE = 163.30f;
private static float GBP_RATE = 1444.35f;
private static float EUR_RATE = 1295.97f;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8"); // 마임타입 결정 - 여기서는 HTML문서 결정
PrintWriter out = response.getWriter(); // 출력 객체를 얻어옴
String command = request.getParameter("command"); // 수행할 요청
String won = request.getParameter("won"); // 원화 값
String operator = request.getParameter("operator"); // 외화종류
if(command != null && command.equals("calculate")) {
String result = calculate(Float.parseFloat(won), operator);
out.print("<html><title>환율계산기</title><body>");
out.print("<h2>환율계산기</h2>");
out.print("<div>변환값 : " + result + "</div>");
out.print("<a href='/pro07/calc'>환율 계산기</a>");
return;
}
out.print("<html><head><title>환율 계산기</title></head>");
out.print("<body><form action='/pro07/calc'>");
out.print("<input type='text' name='won'>");
out.print("<select name='operator'>");
out.print("<option value='dollor'>달러</option>");
out.print("<option value='en'>엔화</option>");
out.print("<option value='wian'>위안</option>");
out.print("<option value='pound'>파운드</option>");
out.print("<option value='euro'>유로</option>");
out.print("</select><input type='hidden' name='command' value='calculate'>");
out.print("<button>변환</button></form></body></html>");
out.close();
}
private String calculate(float won, String operator) {
String result = null;
if(operator.equals("dollor")) {
result = String.format("%.3f", won/USD_RATE);
} else if (operator.equals("en")) {
result = String.format("%.3f", won/JPY_RATE);
} else if (operator.equals("wian")) {
result = String.format("%.3f", won/CNY_RATE);
} else if (operator.equals("pound")) {
result = String.format("%.3f", won/GBP_RATE);
} else if (operator.equals("euro")) {
result = String.format("%.3f", won/EUR_RATE);
}
return result;
}
}
반응형
'학습 > JSP' 카테고리의 다른 글
6. 서블릿 (서블릿으로 요청 시 구구단 출력하기) (0) | 2022.11.02 |
---|---|
5. 서블릿 (POST 방식, 자바스크립트로 서블릿에 요청, 로그인 요청시 유효성 검사하기) (0) | 2022.11.02 |
3. 서블릿 (서블릿 만들기, 애너테이션 이용한 서블릿 매핑) (0) | 2022.11.01 |
2. 서블릿 (0) | 2022.10.31 |
1. JSP (톰캣 설치 및 설정, 서버 시작, 웹에 나타내기, httpServlet ) (0) | 2022.10.31 |
댓글