fcontroller

easyliving·2023년 1월 26일

FRONT_END (JAVA_SCRIPT)

목록 보기
26/55

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로 보내준다.

파일 이름

인터페이스 설명

profile
가끔져요

0개의 댓글