2017-08-02 9 views
1

私はAjaxを勉強したばかりの学生です。Ajaxでログインを確認するには?

私は常に心配していますが、私は問題を解決することができませんでした。

私はあなたからいくつかのアドバイスを受けたいと思います。

まず、loginPage.jspコードとMemberController.javaコードとMemberService.javaコードを示します。

loginPage.jspコードです。

<%@ page language="java" contentType="text/html; charset=EUC-KR" 
    pageEncoding="EUC-KR"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> 
<link rel="stylesheet" href="css/normalize.css"> 
<link rel="stylesheet" href="css/swiper.min.css"> 
<link rel="stylesheet" href="css/loginPage.css"> 
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script> 
<script type="text/javascript" src="js/swiper.jquery.min.js"></script> 
<title>Insert title here</title> 
</head> 
<body> 
<jsp:include page="header.jsp" /> 
<div class="loginPage_main"> 
    <div class="pageName"> 
     <img class="pageName_image" src="images/greeting_title.jpg"> 
     <div class="pageName_explanation"> 
      <p>로그인</p> 
     </div> 
    </div> 
    <div class="location"> 
    </div> 
    <div class="loginForm_area"> 
     <div class="hidden_area"> 
      <div class="img_lock_area"> 
       <img src="images/lock.png" class="img_lock"> 
      </div> 
      <form action="loginOK.do" id="login_frm" name="frm" method="post" onsubmit="return checkValue()"> 
       <div class="input_zone"> 
        <div class="input_id"> 
         <span>&nbsp;&nbsp;ID</span><input type="text" placeholder="아이디를 입력하세요" style="width:280px;margin-left: 10px;" name="id"> 
        </div> 
        <div class="input_pw"> 
         <span>PW</span><input type="password" placeholder="비밀번호를 입력하세요" style="width:280px;margin-left: 10px;" name="pw"> 
        </div> 
       </div> 
      </form>  
       <div class="loginBtn" onclick="document.getElementById('login_frm').onsubmit();"> 
        <div style="margin-top: 22px;"> 
         <span class="loginOK">Login</span> 
        </div> 
       </div> 
     </div> 
    </div> 
</div> 
<script type="text/javascript"> 
    function checkValue() 
    { 
     var form = document.frm; 

     if(!form.id.value || !form.pw.value) 
     { 
      alert('아이디 혹은 비밀번호를 입력하세요.'); 
      return false; 
     } 

     $.ajax 
     ({ 
      type: 'POST', 
      url: 'loginOK.do', 
      success: function() 
      { 
       alert('success'); 
      }, 
      error: function() 
      { 
       alert('error'); 
      } 
     }) 
    }  
</script> 
</body> 
</html> 

MemberController.javaコードです。

package controller; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.HashMap; 

import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.mvc.support.RedirectAttributes; 

import service.MemberService; 

@Controller 
public class MemberController 
{ 
    @Autowired 
    public MemberService mService; 


    // 로그인 
    // 전송된 ID,PW값과 DB에 있는 ID,PW값 비교 
    // 맞으면 alert 창으로 " 로그인 성공 " 메세지 표출 + mainPage 이동 
    // 틀리다면 alert 창으로 " 로그인 실패 " 메세지 표출 + loginPage로 리다이렉트 
    @RequestMapping("loginOK.do") 
    public String login(String id, String pw,HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException 
    { 
     HashMap<String, Object> loginIdentify = mService.login(id,pw); 

     System.out.println("ID is : " + id + "/" + "PW is : " + pw); 

     if(loginIdentify != null) 
     { 
      System.out.println("loginIdentify is true : " + loginIdentify); 

      session.setAttribute("id", id); 
      session.setAttribute("pw", pw); 

      /* 
      - 오류로 인한 일시 보류 -    
      response.setCharacterEncoding("UTF-8"); 
      PrintWriter writer = response.getWriter(); 

      writer.println("<script type='text/javascript'>"); 
      writer.println("alert('로그인 성공!');"); 
      writer.println("</script>"); 
      writer.flush(); 
      */ 
     } 
     else 
     { 
      System.out.println("loginIdentify is false : " + loginIdentify); 

      /*  
      - 오류로 인한 일시 보류 -   
      response.setCharacterEncoding("UTF-8"); 
      PrintWriter writer = response.getWriter(); 

      writer.println("<script type='text/javascript'>"); 
      writer.println("alert('로그인 실패!');"); 
      writer.println("</script>"); 
      writer.flush(); 
      */ 

      return "redirect:move_loginPage.do"; 
     } 
     return "redirect:main.do"; 
    } 


    // 로그아웃 
    // 세션과 쿠키 제거 + mainPage로 리다이렉트 
    @RequestMapping("logout.do") 
    public String logout(HttpSession session, HttpServletResponse response) 
    { 
     session.removeAttribute("id"); 

     Cookie cookie = new Cookie("id", null); 
     cookie.setMaxAge(0); 
     response.addCookie(cookie); 

     // 세션 삭제 확인 
     System.out.println("session is delete It's really? : " + session.getAttribute("id")); 

     return "redirect:main.do"; 
    } 
} 

これはMemberService.javaコードです。

package service; 

import java.util.HashMap; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 
import org.springframework.stereotype.Service; 


import dao.IMemberDAO; 
import model.Member; 

@Service 
public class MemberService 
{ 
    @Autowired 
    private IMemberDAO memberDao; 

    public HashMap<String, Object> login(String id,String pw) 
    { 
     HashMap<String, Object> result = memberDao.selectOne(id); 

     System.out.println(result); 

     if(result != null) 
     { 
      String opwd = (String) result.get("pw"); 

      if(opwd.equals(pw)) 
      { 
       return result; 
      } 
      else 
      { 
       return null; 
      } 
     } 
     else 
     { 
      return null; 
     } 
    } 
} 

フォームタグを実行すると、入力されたID値とPW値が、DBに格納されているID値とPW値と比較されます。

値が一致する場合は、メインページに移動します。

値が一致しない場合は、ページを再読み込みせずにログインすることはできません。私はメッセージを印刷したい。私はそれを私が望むように働かせるにはどうすればいいですか?

私はどこから始めるべきかわかりません...私はあなたの助けを激しく必要としています。 あなたの計画を私に教えてください。

答えて

0

ほとんどあなたがいます。

MemberController.javaのコードのコメントを外してresponseを使用して、クライアントJavaScriptにデータを戻します。何かのような -

- と同様に失敗の場合。

その後、loginPage.jspに、戻って同じデータを取得するために$.ajaxsuccess関数の最初の引数をお読みください。

$.ajax 
    ({ 
     type: 'POST', 
     url: 'loginOK.do', 
     success: function(returnData) 
     { 
      console.log(returnData); // <--- 
     }, 
     error: function() 
     { 
      alert('error'); 
     } 
    }) 

そのように、クライアントはログインが成功したかどうか知っているだろう、とのことができます適切なJavaScript関数を呼び出して、別のページを開く、エラーを表示する、パスワードボックスをクリアする、または何をしたいかを指定します。


接線アプリケーションセキュリティ批判:

  • 私はあなたがHTTPSを使用している願っています。そうでない場合、攻撃者がユーザーの資格情報を簡単に盗むことができます。
  • データベースのプレーンテキストでユーザーのパスワードを保管しているようです。データベースが侵害された場合に備えて、それらを保護するためにsaltingと考えてください。
+1

非常に多くの混乱する部分があります。私に助言を与えてください。 –

+1

@最善源どの部分が混乱していますか? – Anko

+1

私はほとんどそこにいます。現在私はコードを書いています。お待ち下さい。 –

関連する問題