니은니은니은
10
2019-05-21 00:55:40 작성 2019-05-21 00:58:50 수정됨
7
1789

Spring 회원가입 폼 id 중복체크 관련 질문입니다 (bootstrapValidator사용)



회원가입 폼을 통해서 DB에 값을 전달하는 방식입니다

여기서 id중복체크를 구현하기위해서 bootstrapvalidator의 remote기능을 사용하기로 했는데요(..아래 소스참고)                                        

                                                      <resistration.jsp>

                              id : {
					validators : {
						stringLength : {
							min : 2,
						},
						notEmpty : {
							message : 'Please enter your id'
 						},
 						remote: {
 							 url: 'check.do',
 							 type:'POST',
 	                        delay:2000,
 	                        data:function(validator) {
 	                            return {
 	                                id: validator.getFieldElements('id').val()
 	                            };
 	                        },
 	                        message: 'The id is not available'
 						   } 
 						}
					},

이 부분이 회원가입폼에서 bootstrapvalidator의 유효성검사가 실행되는 코드부분입니다

문제는 Id값을 check.jsp로 전달은 하지만...

                                                                <check.jsp>

<%
String id=request.getParameter("id");

	Class.forName("com.mysql.jdbc.Driver");
	String url = "jdbc:mysql://localhost:3306/spring"
			+ "?serverTimezone=Asia/Seoul&useSSL=true";
	
		String user= "spring";
		String pass= "spring";
		Connection conn =DriverManager.getConnection(url, user, pass);
		Statement st=conn.createStatement();
		
		 			
					 ResultSet rs=null;
	    		    JSONObject json = new JSONObject(); 
	    		    PrintWriter out1=response.getWriter();
	    		    response.setContentType("application/json");
	    		    rs = st.executeQuery("select * from USER where id = '" + id + "'");
	    		    if (rs.next()){	    		 
	    		    	try{
	    		        json.put("valid",false);  } catch (JSONException e) {
	    		            // TODO Auto-generated catch block
	    		            e.printStackTrace();
	    		        }

	    		    } 
	    		    else {
	    		    	try{
	    		        json.put("valid",true); }  catch (JSONException e) {
	    		            // TODO Auto-generated catch block
	    		            e.printStackTrace();
	    		        }
 
	    		        
	    		    }
	    		    System.out.print(json);
	    		    try{
	    		       out1.print(json);
	    		       out1.flush();}catch (JSONException e) {
	    		            // TODO Auto-generated catch block
	    		            e.printStackTrace();
	    		        }
	    		    
	    		   
%>

 그 값을 sql문을 통해서 중복된 아이디에 대한 유효성검사 코드를 작성했는데요(json으로 보내야지

반응을 한다고 해서..) 현재 DB에 2462라는 ID가 저장되어 있는 상태에서

 json데이터가 {"valid":true} 또는 {"valid":false}로 콘솔창에 출력은 되는데

그 값을 bootstrapvalidator에 전달을 하지 못하는지 계속해서 refresh 아이콘만 뜹니다 ㅠㅠ 

혹시 해결법을 알려주실수 있을까요..스프링으로는 PHP파일 안되는걸로 알고있어서 PHP코드는 있어도 사용을 못하겠고 어떤 방식으로 풀어나가야할지 모르겠습니다


0
0
  • 답변 7

  • tou
    370
    2019-05-21 12:23:05

     bootstrapvalidator를 잘몰라서... json객체에 put한 값을 resistration.jsp에서 못받아오는 상황인가요?

    1
  • 니은니은니은
    10
    2019-05-21 17:19:18

    네..아마도 다른 방식으로 해봐야 될 것 같네요 ㅠㅠ

    0
  • tou
    370
    2019-05-21 17:25:16

    굳이 bootstrapvalidator안쓰시고 그냥 단순ajax쓰셔도 될듯한데...  동일하게 json값넣어주고 리턴해주신다음에 받아오는 값에따라서 처리해주시면 될거같습니다.

    0
  • tou
    370
    2019-05-21 17:25:54

    resistration.jsp 에서 return값에 따라 처리하는 로직은  어디에있나요?

    0
  • 니은니은니은
    10
    2019-05-21 19:41:20 작성 2019-05-21 19:42:27 수정됨


    $(document).ready(function() {		      
    	$('#contact_form').bootstrapValidator({    	            
        	  submitHandler: function(form) {  //submitHandler: form이 submit될때 마지막으로 뭔가 할 수 있도록 핸들을 넘겨준다
        	      $.ajax({
        	          type: form.method,
         	          url: form.action,
        	          data: //val값 DB에 저장
        	          {	
        			name:$('#name').val(),
        			department:$('#department').val(),
        			id:$('#id').val(),
        			pw:$('#pw').val(),
        			email:$('#email').val(),
        			contactNo:$('#contactNo').val(),
        	          success: function() {
        	        	  swal("Congrats!", " Your account is created!", "success"); 
        	        	  console.log($('#id').val());
        	          }
        	         }    	     
        	      });
        	   },   	      
            // To use feedback icons, ensure that you use Bootstrap v3.1.0 or later
            feedbackIcons: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
      	},
    	fields : {
    				name : {
    					validators : {
    						stringLength : {
    							min : 2,
    						},
    						notEmpty : {
    							message : 'Please enter your Name'
    						}
    					}
    				},		id : {
    					validators : {
    						stringLength : {
    							min : 2,
    						},
    						notEmpty : {
    							message : 'Please enter your id'
     						},
     						remote: {
     							 url: 'check.do',
     							 type:'POST',
     	                        delay:2000,
     	                        data:function(validator) {
     	                            return {
     	                                id: validator.getFieldElements('id').val()
     	                                };                          
     	                        },
     	                        message: 'The id is not available'
     						   } 
     						}
    					},			
    				pw : {
    					validators : {
    						stringLength : {
    							min : 4,
    						},						 
    						notEmpty : {
    							message : 'Please enter your Password'
    						}						
    					}
    				},
    				confirm_pw : {
    					validators : {
    						stringLength : {
    							min : 4,
    						},
    						notEmpty : {
    							message : 'Please confirm your Password'
    						},
    						identical: {
    	                        field: 'pw',
    	                        message: 'The password and its confirm are not the same'
    	                    }
    					}
    				},
    				email : {
    					validators : {
    						notEmpty : {
    							message : 'Please enter your Email Address'
    						},
    						emailAddress : {
    							message : 'Please enter a valid Email Address'
    						}
    					}
    				},
    				contact_no : {
    					validators : {
    						stringLength : {
    							min : 10,
    							max : 12,
    							notEmpty : {
    								message : 'Please enter your Contact No.'
    							}
    						}
    					}
    				},
    				department : {
    					validators : {
    						notEmpty : {
    							message : 'Please select your Department/Office'
    						}
    					}
    				}
    			}
    		})
    });


    resistration.jsp의 자바스크립트 코드는 이렇습니다..

    다른 필드 부분들은 bootstrapvalidator의 단순 옵션으로 처리됩니다..


    0
  • 니은니은니은
    10
    2019-05-21 19:45:02
    0
  • tou
    370
    2019-05-22 09:11:55

    리턴로직이 어디있는지 못찾겠네요... 리턴값으로 받아와서 처리하는로직이 

    하단 부분이라면 리턴부분은 잘타고들어오는지 alert띄워보시고

    그다음 잘타고들어온다면 json객체값을 읽어올수있는지 테스트해보셔야할거같아요

    
     	                        data:function(validator) {
     	                            return {
     	                                id: validator.getFieldElements('id').val()
     	                                };                          
     	                        },
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.