[ 기본 셋팅 ]
1) home_user 테이블 생성
CREATE TABLE home_user( id VARCHAR2(300) NOT NULL, pwd VARCHAR2(200) NOT NULL, name VARCHAR2(200) NOT NULL, email VARCHAR2(300), gender VARCHAR2(200) NOT NULL, birthday DATE, phone VARCHAR2(300) NOT NULL, address VARCHAR2(500) NOT NULL, hit NUMBER, // 추천 운동 카테고리 home_level VARCHAR2(300), admin CHAR(1) CHECK(admin IN('y','n')), CONSTRAINT PK_home_user PRIMARY KEY(id) );INSERT INTO home_user VALUES('hong','1234','홍길동','','male', '2000-01-01','010-0000-0000','서울특별시 강남구 역삼동','0','상','y'); // 일단 테스트로 값을 넣었음 , 나중엔 UPDATE로 사용자 입력 값 넣을 예정2) 폴더 및 JSP 생성하기
webcontent안에 user폴더 만들기
user폴더 안에 login.jsp / login_ok.jsp / logout.jsp / logout_ok.jsp 만들기
3) UserVO 만들기
package com.sist.dao; import java.util.*; public class UserVO { private String id; private String pwd; private String name; private String email; private String gender; private Date birthday; private String phone; private String address; private int hit; private String home_level; private String admin; private String msg; // db엔 없음 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } 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 getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getHit() { return hit; } public void setHit(int hit) { this.hit = hit; } public String getHome_level() { return home_level; } public void setHome_level(String home_level) { this.home_level = home_level; } public String getAdmin() { return admin; } public void setAdmin(String admin) { this.admin = admin; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }[ 로그인 처리 ]
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% // 로그인 처리 String id=(String)session.getAttribute("id"); // 로그인 화면 변환 String log_jsp=""; if(id==null) // 로그인이 안된 상태 log_jsp="../user/login.jsp"; else // 로그인이 된 상태 log_jsp="../user/logout.jsp"; %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>로그인 구현</title> </head> <body> <div class="container"> <!-- log_jsp 화면 include --> <jsp:include page="<%=log_jsp %>"></jsp:include> </div> </body> </html>login.jsp
method → get / post (감춰서 보내기 / 그냥 보내기) action → 데이터를 받을 파일명 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>로그인 화면구현</title> </head> <body> <div class="login"> <form method=post action="../user/login_ok.jsp"> <h2>로그인</h2> <div class="id_area"> <input type=text name=id placeholder="아이디"> </div> <div class="pwd_area"> <input type=text name=pwd placeholder="비밀번호"> </div> <input type=submit value="로그인" class="login_btn"> </form> </div> </body> </html>login_ok.jsp
UserDAO.java
package com.sist.dao; import java.io.*; import java.util.*; import org.apache.ibatis.io.*; import org.apache.ibatis.session.*; public class UserDAO { // XML을 읽어서 데이터를 저장하는 객체 => 공통모듈 private static SqlSessionFactory ssf; static { try { Reader reader=Resources.getResourceAsReader("Config.xml"); ssf=new SqlSessionFactoryBuilder().build(reader); // getConnection,disConnection 대체 }catch (Exception ex) { ex.printStackTrace(); } } // 로그인 처리가 되면 session에 저장해야함 (id,name,admin) public static UserVO userLogin(String id,String pwd) { UserVO vo=new UserVO(); // 연결 SqlSession session=null; try { // 연결 session=ssf.openSession(); // id가 몇개 존재하는지 확인하기 int count=session.selectOne("userIdCheck",id); // id가 없다면 NOID 메세지 보내기 if(count==0) { vo.setMsg("NOID"); } // id가 존재한다면 else { // id가 존재하면 user정보 가져오기 vo=session.selectOne("userGetInfoData",id); // user정보의 pwd와 사용자가 입력한 pwd 비교하기 if(pwd.equals(vo.getPwd())) { vo.setMsg("OK"); } // 비밀번호가 틀리면 else { vo.setMsg("NOPWD"); } } }catch (Exception ex) { ex.printStackTrace(); }finally { if(session!=null) session.close(); } return vo; } }[ DB 처리 ]
user-mapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "//mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.sist.dao.user-mapper"> <!-- Login --> <!-- id 체크하기 --> <select id="userIdCheck" resultType="int" parameterType="String"> SELECT COUNT(*) FROM home_user WHERE id=#{id} <!-- 0 = id가 없다 / 1 => id가 존재 --> </select> <!-- 비밀번호 확인 --> <select id="userGetInfoData" resultType="com.sist.dao.UserVO" parameterType="String"> SELECT pwd,id,name,admin FROM home_user WHERE id=#{id} </select> <!-- 회원가입 , 아이디중복체크 , 우편번호--> <!-- 회원수정 --> <!-- 회원탈퇴 --> <!-- 아이디찾기 --> <!-- 비밀번호찾기 --> <!-- 비밀번호 변경 --> <!-- Admin 회원관리 --> </mapper>db.properties
driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost:1521:XE username=hr password=happyConfig.xml
[ 로그아웃 처리 ]
logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>로그아웃</title> </head> <body> <div class=logout> <div> <%= session.getAttribute("name") %>님이 로그인 되었습니다. </div> <div> <% String admin=(String)session.getAttribute("admin"); // 관리자와 일반유저로 분리 if(admin.equals("y")) { %> <span>관리자</span> <% } else{ %> <span>일반유저</span> <% } %> </div> <div class="logout_btn"> <form method=post action="../user/logout_ok.jsp"> <input type=submint value="로그아웃" class="btn"> </form> </div> </div> </body> </html>logout_ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% // session에 등록된 데이터 전체 삭제 session.invalidate(); // main.jsp로 이동 response.sendRedirect("../main/main.jsp"); %>