- 환율 계산기
- webapp/calc.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>환율 계산기</title>
</head>
<body>
<h2>환율 계산기</h2>
<form action="rate" name="formCalc" method="get">
원화 : <input type="text" name="won">
<select name="operator">
<option value="dollar">달러</option>
<option value="yen">엔화</option>
<option value="wian">위안</option>
<option value="pound">파운드</option>
<option value="euro">유로</option>
</select>
<input type="hidden" name="command" value="cal">
<input type="submit" value="변환하기">
</form>
</body>
</html>
- RateServlet.java
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/rate")
public class RateServlet extends HttpServlet {
private static float USD_RATE = 1411.30F;
private static float JPY_RATE = 972.50F;
private static float CNY_RATE = 198.72F;
private static float GBP_RATE = 1584.06F;
private static float EUR_RATE = 1385.18F;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter(); //응답 문자로 반환
String command = request.getParameter("command");
String won = request.getParameter("won");
String operator = request.getParameter("operator");
if(command.equals("cal")) { //hidden input 생성한 이유
String result = cal(Float.parseFloat(won),operator);
out.print("<html><body>");
out.print("<h2>변환 결과 = " + result + "</h2>");
out.print("<a href='/servlet01/calc.html'>환율 계산기</a>");
out.print("</body></html>");
}
}
//환율 계산 메소드
private static String cal(float won, String operator) {
String result = null;
if (operator.equals("dollar")) {
result = String.format("$%.6f", won/USD_RATE);
} else if (operator.equals("yen")) {
result = String.format("¥%.6f", won/JPY_RATE);
} else if (operator.equals("wian")) {
result = String.format("¥%.6f", won/CNY_RATE);
} else if (operator.equals("pound")) {
result = String.format("£%.6f", won/GBP_RATE);
} else {
result = String.format("€%.6f", won/EUR_RATE);
}
return result;
}
}
=>http://localhost:8080/servlet01/calc.html
- 로그인 (post)
- login3.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<h2>로그인 창</h2>
<form action="login3" method="post" name="formLogin">
<label for="user_id">아이디</label>
<input type="text" id="user_id" name="user_id"><br>
<label for="user_pw">비밀번호</label>
<input type="text" id="user_pw" name="user_pw"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html>
- LoginServlet3.java
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/login3")
public class LoginServlet3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("user_id");
String pw = request.getParameter("user_pw");
System.out.println("아이디 : "+id);
System.out.println("비밀번호 : "+pw);
}
}
- 로그인 (get&post 모두 받는 서블릿 생성)
- login4.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<h2>로그인 창</h2>
<form action="login4" method="post" name="formLogin">
<!--method: 전송방식-->
<label for="user_id">아이디</label>
<input type="text" id="user_id" name="user_id"><br>
<label for="user_pw">비밀번호</label>
<input type="text" id="user_pw" name="user_pw"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html>
- LoginServlet4.java
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/login4")
public class LoginServlet4 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request,response);
}
protected void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String id = request.getParameter("user_id");
String pw = request.getParameter("user_pw");
System.out.println("아이디 : "+id);
System.out.println("비밀번호 : "+pw);
}
}
- 로그인 (기존html + 자스에서 서블릿 요청)
- login5.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
<script type="text/javascript">
function fn_validate(){
let form = document.formLogin;
let id = form.user_id.value;
let pw = form.user_pw.value;
if (id.length==0||id==""){
alert('아이디를 입력해주세요');
} else if (pw.length==0||pw==""){
alert('비밀번호를 입력해주세요');
} else {
form.method="post";
form.action="login5";
form.submit();
}
}
</script>
</head>
<body>
<h2>로그인 창</h2>
<form name="formLogin">
<label for="user_id">아이디</label>
<input type="text" id="user_id" name="user_id"><br>
<label for="user_pw">비밀번호</label>
<input type="password" id="user_pw" name="user_pw"><br>
<input type="hidden" name="address" value="서울시 종로구"> <!--정보를 서버에만 전달-->
<input type="button" value="로그인" onclick="fn_validate()">
<input type="reset" value="다시입력">
</form>
</body>
</html>
- LoginServlet5.java
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/login5")
public class LoginServlet5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request,response);
}
protected void doHandle(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("address");
out.print("<html><body>");
out.print("<p>"+id+"님 환영합니다!</p>");
out.print("<p>주소 : "+address+"</p>");
out.print("</body></html>");
}
}
- 로그인 (조건 추가)
- LoginTestServlet.java
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/loginTest")
public class LoginTestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request,response);
}
protected void doHandle(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");
if(id != null && id.length() != 0) {
out.print("<html><body>");
out.print(id+"님이 로그인했습니다.");
out.print("</body></html>");
} else {
out.print("<html><body>");
out.print("아이디를 입력해주세요<br>");
out.print("<a href='http://localhost:8080/servlet01/login6.html'>로그인 창으로 이동</a>");
out.print("</body></html>");
}
}
}
- 구구단 출력
- gugu.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구구단</title>
</head>
<body>
<h2>구구단</h2>
<form action="gugu" method="get" name="form">
<label for="dan">단 입력</label>
<input type="text" id="dan" name="dan"><br>
<input type="submit" value="구구단 출력">
</form>
</body>
</html>
- guguServlet.java
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/gugu")
public class guguServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
int dan = Integer.parseInt(request.getParameter("dan"));
out.print("<html><body>"); //
out.print("** "+dan+" **<br>");
for (int i=1;i<10;i++) {
out.print(dan+" X "+i+" = "+(dan*i)+"<br>");
}
out.print("<a href='gugu.html'>구구단 입력창으로 이동</a>"); //
out.print("</body></html>");
}
}
=> 표로 정리
package servlet01.ex02;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/gugu")
public class guguServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
int dan = Integer.parseInt(request.getParameter("dan"));
out.print("<html><body>");
out.print("<table border=1 width=200 align=center>");
out.print("<tr><th colspan=2 bgcolor='azure'>"+dan+"단</th></tr>");
for (int i=1;i<10;i++) {
if (i%2==0) {
out.print("<tr align=center bgcolor='beige'>");
}else {
out.print("<tr align=center bgcolor='whitesmoke'>");
}
out.print("<td width=100>"+dan+" X "+i+"</td>");
out.print("<td width=100>"+(dan*i)+"</td>");
out.print("</tr>");
}
out.print("</table>");
out.print("<p align=center><a href='gugu.html'>구구단 입력창으로 이동</a></p>");
out.print("</body></html>");
}
}
- 서블릿 요청, 응답 과정
클라이언트 - 톰캣 컨테이너 (내부에 서블릿) - DB
1. 클라이언트가 서블릿에 요청 전송
2. 서블릿은 데이터베이스 연동, 자료 탐색
3. 서블릿은 처리 결과를 클라이언트에 전송
- 서블릿 통한 회원정보 테이블 내 회원정보 조회
클라이언트 - MemberServlet - MemberDAO - MemberVO
1. 클라이언트가 MemberServlet에 회원정보 요청
2. MemberServlet은 listMembers() 메소드로 MemberDAO 접근
3. MemberDAO는 DB 접근, 연동 / MemberVO에 데이터 세팅
4. 조회된 데이터는 클라이언트에 HTML로 전송
'Programming > 국비학원' 카테고리의 다른 글
220926 - 서블릿 -커넥션 풀, 서블릿 확장 API (포워드 / 바인딩) (0) | 2022.09.27 |
---|---|
220923 - 서블릿 - DB 연결, 커넥션풀 (0) | 2022.09.24 |
220921 - 서버 - 서블릿 매핑, 응답 및 요청 처리 (0) | 2022.09.22 |
220920 - 서버 - 웹 애플리케이션 개발 환경 구축 (0) | 2022.09.21 |
220919 - 오라클 - 무결성 (0) | 2022.09.20 |