본문 바로가기
CLASS/SERVLET

#4-1 / html에서 java class로 값 전달,로그인 예제

by hingu 2024. 5. 31.

❗ 정규식 형태의 코드(replace,replaceAll 등)를 사용시 intern() 메소드를 로드하지 않을 경우 equals 사용해야함

//공백 제거 replace 
String no = request.getParameter("no").intern();
String word = no.replaceAll(" ", "").intern();
System.out.println(word);

if(word =="") {
    System.out.println("값을 입력하세요");	
}else{
    System.out.println("입력완료");
}

 

⚡ 로그인 예제 - 정보 java로 전달 (step 형식) 

▶ 2가지 형식이 있음

1. html -> backend -> html -> backend  : 한개의 do file만 사용하는 경우

2. html -> backend -> html -> backend  : 각각의 do file만 사용하는 경우 (이 예제는 이거)

쿠키 => 스토리지 기술
localStorage.setItem('mid','" + mid + "'); 
- localStorage에 저장됨 (개발자도구로 확인 가능)
- 파라미터에 해당 값이 노출되지 않음

- 아이디 입력 페이지(html)

<body>
	<form action="./test3.do" id="frm" method="post" onsubmit="return gopage()">
		<input type="hidden" name="part" value="1">
		아이디 : <input type="text" name="mid"><br>
		<input type="submit" value="다음">
	</form> 
</body>
<script type="text/javascript">
	function gopage(){
		if(frm.mid.value ==""){
			alert("아이디를 입력하세요")
			return false;
		}else{
			frm.submit();
		}
			
	}
</script>


- 비밀번호 입력 페이지 (html)

<body>
	<form action="./test3.do" id="frm" method="post">
		<input type="hidden" name="part" value="2">
		<input type="hidden" name="mid" value="">
		비밀번호 : <input type="password" name="mpass"><br>
		<input type="submit" value="로그인">
	</form> 
</body>
<script type="text/javascript">
	var userid =localStorage.getItem("mid");
	frm.mid.value = userid;
</script>


-데이터 전달 java 파일

public class test3 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	PrintWriter pw = null;
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		this.pw = response.getWriter();
		
		String part = request.getParameter("part");
		String mid = "";
		String mpass = "";
		if(part.equals("1")) {
			mid = request.getParameter("mid");
			this.pw.write("<script>"
					+ "localStorage.setItem('mid','"+mid+"');"
					+ "location.href='./test4.html'" 
					+ "</script>");
		}else {
			mid = request.getParameter("mid");
			mpass = request.getParameter("mpass");
			if(mid.equals("apink") && mpass.equals("1004") ) {
				this.pw.print("로그인 하셨습니다.");
			}else {
				this.pw.write("<script>"
						+ "localStorage.clear();"
						+ "alert('아이디 및 패스워드를 다시 확인하세요');"
						+ "location.href='./test3.html';"
						+ "</script>");
			}
		}
	}

}

 

 

 

⚡ html에서 java class로 값 전달 응용문제 1
(내가 좀더 갖구 놀아서 지저분) - 날짜 체크

- html
<!-- 사용자가 결제금액을 입력합니다. 
	총 3개의 쿠폰이 존재하며 해당 쿠폰은 한가지만 선택 가능 
	해당 쿠폰에 맞게 결제금액에 할인이 적용되어 최종 결제금액을 출력합니다. 
	
	결제하기 버튼 클릭시 back-end로 전달 
	단, 쿠폰 적용된 금액은 back-end에서 출력되어야 함. 
	
	결제금액 : 50000
	10% 할인쿠폰 적용 후 결제하기 버튼 클릭
	back : 50000에 대한 10% 할인 쿠폰이 적용되어야 함 => 45000출력
-->

<body>
<form action="./test2.do" method="post" id="frm">
    결제 금액 : <input type="text" name="price"><br><br>
    <label><input type="radio" name="coupon" value="0,20240101,20251231" checked>쿠폰 미적용</label>
    <label><input type="radio" name="coupon" value="10,20240101,20251231">신규회원 10% 할인쿠폰</label>
    <label><input type="radio" name="coupon" value="20,20240101,20251231">이벤트 할인 20% 할인쿠폰</label>
    <label><input type="radio" name="coupon" value="30,20240606,20241231">6월6일 하루이벤트 30% 쿠폰</label>
    <input type="button" value="결제하기" onclick="gopay()">
</form>
</body>

<script type="text/javascript">
	function gopay(){
		if(frm.price.value == ""){
			alert("결제 금액을 입력해주세요")
		}else{
			frm.submit();	
		}
	}
</script>



- java

public class test2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	private String price = null;
	private String ck = null;
	private String s_date = null;
	private String e_date = null;
	PrintWriter pw = null;
		
	protected test2_part t2p = null;
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.t2p = new test2_part();
		
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html");
		
		this.pw = response.getWriter();
		
		price = request.getParameter("price").intern();
		ck = request.getParameter("coupon").split(",")[0];
		s_date = request.getParameter("coupon").split(",")[1];
		e_date = request.getParameter("coupon").split(",")[2];
		
		String price_ra = price.replaceAll(" ", "").intern();
		
		String total_result = this.t2p.result_money(price_ra, ck, s_date, e_date);
		System.out.println(total_result);
		this.pw.write("<script>"
				+ "alert('"+ total_result +"');"
				+ "history.go(-1);"
				+ "</script>");
	}

}


🔼

public class test2_part {

	Date day = null;
	private int price_int = 0;
	int ck_int = 0;
	int start_day = 0;
	int end_day = 0;
	
	boolean dateck = false;
	
	String msg = "";
	
	public String result_money(String p, String c , String s , String e) {
		price_int = Integer.parseInt(p);
		ck_int = Integer.parseInt(c);
		
		int result = price_int - (price_int/100*ck_int);
	
		boolean cd = this.ck_date(s, e);
		if( cd == true ) {
			DecimalFormat df = new DecimalFormat("###,###");
			String moneys = df.format(result);
			msg = "총판매 금액 : "+ moneys + "원";
		}else {
			msg = "현재 사용할 수 있는 쿠폰이 아닙니다.";
		}
		
		return msg;
	}	
	
	
	public boolean ck_date(String s , String e) {
		start_day = Integer.parseInt(s);
		end_day = Integer.parseInt(e);
		
		day = new Date();
		SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
		String today[] = sim.format(day).split("-");
		String today_split = "";
		
		int f;
		for(f=0; f<today.length; f++) {
			today_split += today[f];
		}
		int today_int = Integer.parseInt(today_split);
		
		if(start_day<today_int && end_day>today_int) {
			dateck = true;
		}else {
			dateck = false;
		}
		
		return dateck;
	}

}

'CLASS > SERVLET' 카테고리의 다른 글

#5 / 🌺 MVC? / excute,statement정리  (0) 2024.06.17
#4-2 / 동의 체크박스 Map 배열로 받기  (0) 2024.05.31
#3-3 / html-> html 값 전달  (0) 2024.05.30
#3-2 / 암호화(security)  (0) 2024.05.30
#3-1 / form 예제  (0) 2024.05.30