Main page
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h2>메인페이지</h2>
<c:if test="${sessionId==null }">
<h3>로그인을 해주세요</h3>
<ul>
<li><a href="login.do">로그인</a></li>
<li><a href="join.do">회원가입</a></li>
</ul>
</c:if>
<c:if test="${sessionId!=null }">
<h3> ${sessionName}님 환영합니다.</h3>
<ul>
<li><a href="logout.do">로그아웃</a></li>
<li><a href="fboardList.do">자유게시판</a></li>
<li>회원정보수정</li>
<li><a href="memberAll.do">전체회원보기</a></li>
</ul>
</c:if>
</body>
</html>
Fcontroller
package com.site.www.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
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 com.site.www.service.MDoLoginService;
import com.site.www.service.MMemberAll;
import com.site.www.service.MMemberCheckId;
import com.site.www.service.MMemberInsert;
import com.site.www.service.MService;
@WebServlet("*.do")
public class Fcontroller extends HttpServlet {
protected void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doAction");
request.setCharacterEncoding("utf-8");
String uri=request.getRequestURI();
String conPath= request.getContextPath();
String fName=uri.substring(conPath.length()+1);
String url="";
System.out.println(fName);
MService mservice=null;
switch(fName) {
case "login.do":
url="login.jsp";
break;
case "dologin.do":
mservice=new MDoLoginService();
mservice.execute(request, response);
System.out.println("결과:"+request.getAttribute("result"));
url="doLogin.jsp";
break;
case "logout.do":
url="logout.jsp";
break;
case "join.do":
url="join.jsp";
break;
case "doJoin.do":
mservice=new MMemberInsert();
mservice.execute(request, response);
if((int)request.getAttribute("result")==0)url="join.jsp";
else
url="success.jsp";
break;
case "memberAll.do":
mservice=new MMemberAll();
mservice.execute(request, response);
url="memberAll.jsp";
break;
case "CheckId.do":
mservice=new MMemberCheckId();
mservice.execute(request, response);
System.out.println("request:"+request.getAttribute("result"));
response.setContentType("text/html; charset=utf-8");
PrintWriter writer=response.getWriter();
writer.println(request.getAttribute("result"));
writer.close();
url=null;
break;
}
RequestDispatcher dispatcher=request.getRequestDispatcher(url);
dispatcher.forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet");
doAction(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost");
doAction(request, response);
}
}
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<style>
table,th,td{border:1px solid black; border-collapse: collapse;}
h2{text-align: center;}
table{width:355px; margin: 0 auto; }
th{width:150px; height:40px;}
td{width:400px; height:40px; padding-left:10px; }
div{height:60px; width: 250px; margin:12px auto 0; }
button{display: inline-block; width:120px; height:40px; }
</style>
<script>
function loginBtn(){
var idPattern=/^[a-zA-Z]{2,}$/;
var id=$("#id").val();
var pw=$("#pw").val();
if(!idPattern.test(id)){
alert("에러입니다.영문자 2자리이상 입력이 가능합니다.");
$("#id").focus();
return false;
}
loginFrm.submit();
}//
</script>
</head>
<body>
<c:if test="${sessionId!=null }"> <!-- 로그인 후 로그인 페이지 접근 방지 -->
<script>location.href="index.jsp"</script>
</c:if>
<c:if test="${sessionError!=null }">
<script>alert("아이디 또는 패스워드가 일치하지 않습니다.");</script>
<% session.removeAttribute("sessionError"); %>
</c:if>
<h2>로그인</h2>
<form action="dologin.do" name="loginFrm" method="post">
<table>
<tr>
<th>아이디</th>
<td>
<input type="text" name="id" id="id">
</td>
</tr>
<tr>
<th>패스워드</th>
<td>
<input type="text" name="pw" id="pw">
</td>
</tr>
<tr>
<td colspan="2">
<div>
<button type="button" onclick="loginBtn()">로그인</button>
<button type="button" onclick="location.href='index.jsp'">취소</button>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
MService.java /인터페이스 파일
package com.site.www.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface MService {
public void execute(HttpServletRequest request,HttpServletResponse response);
}
MDoLoginService.java
package com.site.www.service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.site.www.dao.MemberDao;
import com.site.www.dto.MemberDto;
public class MDoLoginService implements MService{
public void execute(HttpServletRequest request, HttpServletResponse response) {
MemberDao mdao=new MemberDao();
MemberDto mdto=mdao.memberLogin(request.getParameter("id"),request.getParameter("pw"));
HttpSession session=request.getSession();
int result=0;
if(mdto!=null) {
session.setAttribute("sessionId", mdto.getId());
session.setAttribute("sessionName", mdto.getName());
result=1;
}
request.setAttribute("result", result);
}
}
MemberDao
package com.site.www.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import com.site.www.dto.MemberDto;
public class MemberDao {
Connection conn= null;
PreparedStatement pstmt=null;
ResultSet rs=null;
MemberDto mdto=null;
ArrayList<MemberDto> list=null;
String id,pw,phone,name,gender,hobby="";
String[] hobbys=null;
int result=0;
String query="";
public ArrayList<MemberDto> memberSelectAll() {
list=new ArrayList<>();
try {
conn=getConnection();
query="select *from member order by id";
pstmt=conn.prepareStatement(query);
rs=pstmt.executeQuery();
while(rs.next()) {
id=rs.getString("id");
pw=rs.getString("pw");
name=rs.getString("name");
phone=rs.getString("phone");
gender=rs.getString("gender");
hobby=rs.getString("hobby");
list.add(new MemberDto(id, pw, name, phone, gender, hobby));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return list;
}
public int memberInsert(MemberDto memberDto) {
try {
conn=getConnection();
query="insert into member values(?,?,?,?,?,?)";
pstmt=conn.prepareStatement(query);
pstmt.setString(1, memberDto.getId());
pstmt.setString(2, memberDto.getPw());
pstmt.setString(3, memberDto.getName());
pstmt.setString(4, memberDto.getPhone());
pstmt.setString(5, memberDto.getGender());
pstmt.setString(6, memberDto.getHobby());
result=pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
public MemberDto memberLogin(String id2, String pw2) {
try {
conn=getConnection();
query="select * from member where id=? and pw=?";
pstmt=conn.prepareStatement(query);
pstmt.setString(1, id2);
pstmt.setString(2, pw2);
rs=pstmt.executeQuery();
while(rs.next()) {
name=rs.getString("name");
mdto=new MemberDto(id2,pw2,name);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return mdto;
}
//id 중복체크
public MemberDto memberCheckId(String id2) {
try {
conn=getConnection();
query="select * from member where id=?";
pstmt=conn.prepareStatement(query);
pstmt.setString(1, id2);
rs=pstmt.executeQuery();
while(rs.next()) {
mdto=new MemberDto(id2);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
return mdto;
}
//Connection 연결
public Connection getConnection() {
Connection connection=null;
try {
Context context=new InitialContext();
DataSource ds=(DataSource) context.lookup("java:comp/env/jdbc/Oracle18c");
connection =ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
MemberDto
package com.site.www.dto;
public class MemberDto {
public MemberDto(String id) {
this.id = id;
}
public MemberDto() {}
private String id,pw,name,phone,gender,hobby;
public MemberDto(String id, String pw) {
this.id = id;
this.pw = pw;
}
public MemberDto(String id, String pw, String name) {
this.id = id;
this.pw = pw;
this.name = name;
}
public MemberDto(String id, String pw, String name, String phone, String gender, String hobby) {
this.id = id;
this.pw = pw;
this.name = name;
this.phone = phone;
this.gender = gender;
this.hobby = hobby;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
doLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>doLogin</title>
</head>
<body>
<c:if test="${result==1}">
<script>
alert("로그인이 되었습니다.");
location.href="index.jsp";
</script>
</c:if>
<c:if test="${result==0}">
<script>
alert("아이디 또는 패스워드가 일치하지 않습니다.");
location.href="login.do";
</script>
</c:if>
</body>
</html>
main(index)에서 login 성공/실패 과정
‼로그인 과정‼
🏴index.jsp🏴
<li><a href="login.do">로그인</a></li> ✔로그인을 누르면
🏴Fcontroller.java🏴
switch문에서
case "login.do": ✔여기 case로 와서
url="login.jsp"; ✔ login.jsp 페이지로 보내준다.
🏴login.jsp🏴
<form action="dologin.do" name="loginFrm" method="post"> ✔form문으로 id와 pw를 받아오고
<button type="button" onclick="loginBtn()">로그인</button> ✔lgoinBtn()을 통해서 ID유효성 검사를 하고, dologin.do로 보내준다.
🏴Fcontroller.java🏴
case "dologin.do": ✔여기 case로 와서
mservice=new MDoLoginService(); ✔MService라는 interface를 선언한 MDoLoginService에서
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
🚩MDoLoginService🚩
MemberDao mdao=new MemberDao();
MemberDto mdto=mdao.memberLogin(request.getParameter("id"),request.getParameter("pw")); ✔MemberDao의 memberLogin() 실행해서 return값을 mdto에 넣어준다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
♦MemberDao-memberLogin♦
query="select * from member where id=? and pw=?"; ✔입력받은 id와 pw와 같은 값이 data에 있는지 확인하는 query문
while(rs.next()) { ✔있다면
name=rs.getString("name"); ✔이름까지 가져와서
mdto=new MemberDto(id2,pw2,name); ✔MemberDto에 id,pw,name까지 넣어서 가져와서
}
return mdto;✔반환해주기
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HttpSession session=request.getSession(); ✔session을 하나 선언해주고
int result=0; ✔doLogin.jsp 파일에서 회원인지 아닌지 판별하기 위해서 선언 ---- 1이면 회원임-로그인 가능/ 0이면 회원아님-로그인 불가능
if(mdto!=null) { ✔mdto가 while문을 돌아서 정보가 담겨져 있다면 session에 id와name을 넣어준다
session.setAttribute("sessionId", mdto.getId());
session.setAttribute("sessionName", mdto.getName());
result=1;
}
request.setAttribute("result", result);✔다른페이지에서도 받아올 수 있게 request에 넣어줌
mservice.execute(request, response); ✔다른페이지에서도 받아올 수 있게해주는 역할
url="doLogin.jsp"; ✔doLogin.jsp로 보내준다.
🏴doLogin.jsp🏴
<c:if test="${result==1}"> ✔ 받아온 result가 1이면 로그인 가능
alert("로그인이 되었습니다.");
location.href="index.jsp"; ✔로그인하면 index page로
<c:if test="${result==0}"> ✔ 받아온 result가 0이면 로그인 불가능
alert("아이디 또는 패스워드가 일치하지 않습니다.");
location.href="login.do"; ✔로그인 못하면 login.do로 다시 ...
❗<로그인 실패시..>❗
🏴Fcontroller.java🏴
switch문에서
case "login.do": ✔여기 case로 와서
url="login.jsp"; ✔ login.jsp 페이지로 보내준다.
🏴login.jsp🏴 ✔다시 ID와 PW 입력 시작
<form action="dologin.do" name="loginFrm" method="post">
<button type="button" onclick="loginBtn()">로그인</button> ✔lgoinBtn()을 통해서 ID유효성 검사를 하고, dologin.do로 보내준다.
파일 이름
