❗ 정규식 형태의 코드(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>
- javapublic 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 |