<%@page contentType="text/html;charset=utf-8"
import="java.util.ArrayList, mvc.domain.Member"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<meta charset="utf-8">
<script src="../js/trim.js"></script>
<script type="text/javascript">
function check(){
var emailval = f.email.value;
emailval = trim(emailval);
if(emailval.length == 0){
alert("이메일을 넣어주세요");
f.email.value = "";
f.email.focus();
return false;
}else{
pass = checkByteLen(emailval, 50);
if(!pass){
alert("이메일이 너무 길어요");
f.email.focus();
return false;
}
}
var pwdval = f.pwd.value;
pwdval = trim(pwdval);
if(pwdval.length == 0){
alert("비번을 넣어주세요");
f.pwd.value = "";
f.pwd.focus();
return false;
}else{
pass = checkByteLen(pwdval, 30);
if(!pass){
alert("비번이 너무 길어요");
f.pwd.focus();
return false;
}
}
f.submit();
}
function checkByteLen(str, size){
var byteLen = getByteLen(str);
if(byteLen <= size){
return true;
}else{
return false;
}
}
function getByteLen(str){
return str.replace(/[\0-\x7f]|([0-\u07ff]|(.))/g,"$&$1$2").length;
}
function enterCheck(elm){
if(event.keyCode == 13){
if(elm == f.email){
f.pwd.focus();
}else{
check();
}
}
}
</script>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 5px;
}
a { text-decoration:none }
</style>
<body onload="document.f.email.focus()">
<h1 style="width:300px;margin:0 auto;text-align:center;">로그인</h1>
<form name="f" action="login.do?m=check" method="post">
<table style="width:300px;height:200px;margin:0 auto;">
<tr>
<td colspan="2" style="width:30%;text-align:center;"><h2>입력폼</h2></td>
</tr>
<tr>
<th style="width:30%;">이메일</th>
<td><input name="email" type="email" onkeydown="enterCheck(this)"></td>
</tr>
<tr>
<th style="width:30%;">비번</th>
<td><input name="pwd" type="password" onkeydown="enterCheck(this)"></td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<input type="button" value="전송" onclick="check()"/>
<input type="reset" value="취소"/>
</td>
</tr>
</table>
</form>
</body>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>MvcPj Index</title>
</head>
<body>
<div style="text-align:center">
<h1>MvcPj Index</h1>
<c:if test="${!empty loginPassUser}">
${loginPassUser.name} 님 환영해요*^^*
</c:if>
<p>
<c:choose>
<c:when test="${empty loginPassUser}">
<a href="login/login.do?m=form">로그인</a>
</c:when>
<c:otherwise>
<a href="login/login.do?m=out">로그아웃</a>
</c:otherwise>
</c:choose>
</p>
</div>
</body>
</html>
package login.mvc.model;
class LoginSQL {
final static String MEMBER = "select * from MEMBER where EMAIL=?"; //인증된사람을 전부 세션에 넣기 위해 pwd가 아니라 *로 한다.
}
package mvc.domain;
import java.sql.*;
public class Member {
private long seq;
private String name;
private String email;
private String pwd;
private String phone;
private Date rdate;
private Date update;
public Member() {}
public Member(long seq, String name, String email, String pwd, String phone, Date rdate, Date update) {
this.seq = seq;
this.name = name;
this.email = email;
this.pwd = pwd;
this.phone = phone;
this.rdate = rdate;
this.update = update;
}
public long getSeq() {
return seq;
}
public void setSeq(long seq) {
this.seq = seq;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getRdate() {
return rdate;
}
public void setRdate(Date rdate) {
this.rdate = rdate;
}
public Date getUpdate() {
return update;
}
public void setUpdate(Date update) {
this.update = update;
}
}
package login.mvc.model;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import mvc.domain.Member;
import static login.mvc.model.LoginSQL.MEMBER;
class LoginDAO {
private DataSource ds;
LoginDAO(){
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("jdbc/myoracle");
}catch(NamingException ne) {
}
}
Member getMember(String email){
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = MEMBER;
try {
con = ds.getConnection();
pstmt = con.prepareStatement(sql);
pstmt.setString(1, email);
rs = pstmt.executeQuery();
if(rs.next()) {
long seq = rs.getLong(1);
String name = rs.getString(2);
//String email = rs.getString(3);
String pwd = rs.getString(4);
String phone = rs.getString(5);
Date rdate = rs.getDate(6);
Date udate = rs.getDate(7);
return new Member(seq, name, email, pwd, phone, rdate, udate);
}else {
return null;
}
}catch(SQLException se) {
return null;
}finally {
try {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
if(con != null) con.close();
}catch(SQLException se) {}
}
}
}
package login.mvc.model;
public class LoginCase {
public static final int NO_ID = 1;
public static final int NO_PWD = 2;
public static final int PASS = 3;
}
package login.mvc.model;
import static login.mvc.model.LoginCase.*;
import mvc.domain.Member;
public class LoginService {
private LoginDAO dao;
private static final LoginService instance = new LoginService();
private LoginService() {
dao = new LoginDAO();
}
public static LoginService getInstance() {
return instance;
}
public int checkMember(String email, String pwd) {
Member m = dao.getMember(email);
if(m == null) {
return NO_ID;
}else {
String pwdDb = m.getPwd();
if(pwdDb != null) pwdDb = pwdDb.trim();
if(!pwd.equals(pwdDb)) {
return NO_PWD;
}else {
return PASS;
}
}
}
public Member getMemberS(String email) {
Member m = dao.getMember(email);
m.setPwd(""); // for 보안성
return m;
}
}
package login.mvc.control;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import board.mvc.model.BoardService;
import board.mvc.vo.ListResult;
import login.mvc.model.LoginCase;
import login.mvc.model.LoginService;
import mvc.domain.Board;
import mvc.domain.Member;
import oracle.net.ano.Service;
@WebServlet("/login/login.do")
public class LoginController extends HttpServlet {
private static final long serialVersionUID = 1L;
private String m = "";
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
m = request.getParameter("m");
if(m != null) {
m = m.trim();
if(m.equals("form")) {
form(request, response);
}else if(m.equals("check")) {
check(request, response);
}else if(m.equals("out")){
out(request, response);
}else {
response.sendRedirect("../index.do");
}
}else {
response.sendRedirect("../index.do");
}
}
private void form(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String view = "login_form.jsp";
response.sendRedirect(view);
}
private void check(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String email = request.getParameter("email");
String pwd = request.getParameter("pwd");
if(email != null) email = email.trim();
if(pwd != null) pwd = pwd.trim();
LoginService service = LoginService.getInstance();
int rCode = service.checkMember(email, pwd);
request.setAttribute("rCode", rCode);
if(rCode == LoginCase.PASS) {
HttpSession session = request.getSession();
Member m = service.getMemberS(email);
session.setAttribute("loginPassUser", m);
}
String view = "login_msg.jsp";
RequestDispatcher rd = request.getRequestDispatcher(view);
rd.forward(request, response);
}
private void out(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
//session.removeAttribute("loginPassUser");
session.invalidate();
String view = "../index.do";
response.sendRedirect(view);
}
}
<%@page import="login.mvc.model.LoginCase"%>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<script>
if(${rCode} == <%=LoginCase.NO_ID%>){
alert("로긴 실패( 없는 아이디 )");
}else if(${rCode} == <%=LoginCase.NO_PWD%>){
alert("로긴 실패( 틀린 비번 )");
}else{
alert("로긴 성공");
}
location.href="../index.do";
</script>
<jsp:include page="/jsp/common/uppermenu.jsp" flush="true"> </jsp:include>
<%@include file="/jsp/common/session.jsp"%>