JSP/Login MVC

Login MVC example

Soul-Learner 2014. 7. 15. 13:45

Login MVC example


WebContent/login/loginForm.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%

Object loginResult = request.getAttribute("loginResult");

boolean success = false;

if(loginResult!=null) {

success = (Boolean)loginResult;

}

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>로그인 폼</title>

<style type="text/css">

table { width:200px; background-color: lightblue;}

th { width:70px; text-align: right; padding-right:10px;}

.field { text-align: left; width:90px; padding-left:10px; }

#btnCell { text-align: center; }

fieldset { width:200px; }

</style>

<script type="text/javascript">

<%

if(loginResult!=null) { %>

var success = <%=success%>;

if(success) alert('로그인에 성공했습니다');

else alert('로그인 실패');

<%}%>

</script>

<script type="text/javascript" src="jquery-2.1.1.min.js"></script>

<script type="text/javascript">

$(document).ready(function(){

$('#loginForm').submit(function(event){

var id = $('[name=id]').val();

var pwd = $('[name=pwd]').val();

if(id=='' || pwd=='') {

alert('아이디와 비밀번호를 입력해주세요');

event.preventDefault();

}

});

$('#logOutBtn').click(function(){

if(confirm('정말로 로그아웃하시겠어요?')) {

logout();

}

});

});


function logout() {

$.ajax(

{

url:'LoginServlet',

type:'POST',

data:{'cmd':'LOGOUT'},

dataType:'text',

success :function(resData){

var jsonObj = eval('('+resData+')');

if(jsonObj.logout) alert('정상적으로 로그아웃되었습니다');

else alert('로그아웃에 실패했습니다');

}

}

);

}

</script>

</head>

<body>

<form id="loginForm" action="LoginServlet" method="post">

<input type="hidden" name="cmd" value="LOGIN">

<fieldset>

<legend>로그인 폼</legend>

<table>

<tr><th>아이디</th><td> <input class="field" type="text" name="id"></td></tr>

<tr><th>비밀번호</th><td> <input class="field" type="password" name="pwd"></td></tr>

<tr><td colspan="2" id="btnCell">

<input type="submit" value="로그인">

<input type="reset" value="취 소">

<input type="button" value="Logout" id="logOutBtn">

</td></tr>

</table>

</fieldset>

</form>

<p>

<hr width="500px">

<a href="main.jsp">메인 페이지로 이동</a>

</body>

</html>



main.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%

Object obj = session.getAttribute("ID");

boolean pass = obj==null ? false : true;

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Welcome to KDEA</title>

<script type="text/javascript">

var login = <%=pass%>;

if(!login) {

alert('이 페이지는 로그인을 거친 이용자에게만 제공되는 서비스입니다');

location.href='loginForm.jsp';

}

</script>

</head>

<body>

<p>

여기는 Main 페이지입니다

</body>

</html>



/login/LoginServlet

package org.kdea.java;


import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


@WebServlet("/login/LoginServlet")

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("euc-kr");

String cmd = request.getParameter("cmd");

if(cmd!=null && cmd.equals("LOGIN")) {

LoginService lc = new LoginService();

request.setAttribute("loginResult", lc.authenticate(request));

getServletContext().getRequestDispatcher("/login/loginForm.jsp")

.forward(request, response);

}

else if(cmd!=null && cmd.equals("LOGOUT")) {

request.getSession().invalidate();

getServletContext().getRequestDispatcher("/login/logout.jsp")

.forward(request, response);

}

}


}



WebContent/login/logout.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%="{'logout':true}"%>


LoginService.java

package org.kdea.java;


import javax.servlet.http.HttpServletRequest;


public class LoginService 

{

public boolean authenticate(HttpServletRequest request) 

{

String id = request.getParameter("id").toUpperCase();

String pwd = request.getParameter("pwd").toUpperCase();

try {

boolean success = new MemberDAO().authenticate(id, pwd);

if(success) request.getSession().setAttribute("ID", id);

return success;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

}



MemberDAO.java

package org.kdea.java;


import java.sql.*;


public class MemberDAO 

{

Connection conn;

PreparedStatement pstmt;

ResultSet rs;


String jdbc_driver = "oracle.jdbc.OracleDriver";

String db_url = "jdbc:oracle:thin:@localhost:1521:XE";

private Connection getConn() 

{

try{

     Class.forName(jdbc_driver);

    conn = DriverManager.getConnection(db_url,"scott","tiger");

    return conn;

}catch(Exception e){

     e.printStackTrace();

}

return null;

}

public boolean authenticate(String id, String pwd) 

{

String sql = "select empno, ename from emp where empno=? and ename=?";

conn = getConn();

try {

pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, Integer.valueOf(id));

pstmt.setString(2, pwd);

rs = pstmt.executeQuery();

return rs.next() ? true : false;

} catch (SQLException e) {

e.printStackTrace();

} finally {

closeAll();

}

return false;

}

private void closeAll(){

try{

if(conn!=null) conn.close();

if(pstmt!=null) pstmt.close();

if(rs!=null) rs.close();

}catch(Exception e){

e.printStackTrace();

}

}

 


}