D+34::도서 쇼핑몰 사이트 만들기(로그인,로그아웃,상품목록)

Am.Vinch·2022년 8월 16일
0

D+34::도서 쇼핑몰 사이트 만들기(로그인,로그아웃,상품목록)

20220811_Thu

실습내용1)

  • 로그인 화면
  • 로그인 기능
  • 로그인이 되면 세션에 로그인한 사람의 아이디,이름,관리자여부를 등록
  • 로그인 성공하면 상품목록페이지로 다시 이동
  • 만약 로그인시 관리자가 로그인을 했다면,
    메뉴에 관리자메뉴 라는 메뉴가 보일 수 있도록 수정한다.
  • 로그아웃 기능 만들기
  • 로그인 안했을 때 LOGIN JOIN 보이도록하기.
  • 로그인 안했을 때는 이름님 반갑습니다.회원정보변경 장바구니 구매이력 로그아웃 보이도록 만든다.

프로젝트명 : shop_0810

  • 1.memberDTO

주의) DB에서 만든 테이블의 컬럼명 그대로 만들기(복붙)

package dto;

public class MemberDTO {

private String memId;
private String memPw;
private String memName;
private String gender;
private String memTell;
private String memAddr;
private String addrDetail;
private String isAdmin;

public MemberDTO() {}

public MemberDTO(String memId, String memPw, String memName, String gender, String memTell, String memAddr,
		String addrDetail, String isAdmin) {
	super();
	this.memId = memId;
	this.memPw = memPw;
	this.memName = memName;
	this.gender = gender;
	this.memTell = memTell;
	this.memAddr = memAddr;
	this.addrDetail = addrDetail;
	this.isAdmin = isAdmin;
}
public String getMemId() {
	return memId;
}
public void setMemId(String memId) {
	this.memId = memId;
}
public String getMemPw() {
	return memPw;
}
public void setMemPw(String memPw) {
	this.memPw = memPw;
}
public String getMemName() {
	return memName;
}
public void setMemName(String memName) {
	this.memName = memName;
}
public String getGender() {
	return gender;
}
public void setGender(String gender) {
	this.gender = gender;
}
public String getMemTell() {
	return memTell;
}
public void setMemTell(String memTell) {
	this.memTell = memTell;
}
public String getMemAddr() {
	return memAddr;
}
public void setMemAddr(String memAddr) {
	this.memAddr = memAddr;
}
public String getAddrDetail() {
	return addrDetail;
}
public void setAddrDetail(String addrDetail) {
	this.addrDetail = addrDetail;
}
public String getIsAdmin() {
	return isAdmin;
}
public void setIsAdmin(String isAdmin) {
	this.isAdmin = isAdmin;
}



}
  • 2.member-Mapper
<!-- 회원가입 -->
<insert id="insertMember">
	INSERT INTO SHOP_MEMBER (
		MEM_ID
		, MEM_PW
		, MEM_NAME
		, GENDER
		, MEM_TELL
		, MEM_ADDR
		, ADDR_DETAIL
	) VALUES (
		#{memId}
		, #{memPw}
		, #{memName}
		, #{gender}
		, #{memTell}
		, #{memAddr}
		, #{addrDetail}
	)
</insert>
<!-- 로그인 -->
<select id="login" resultMap="board">
	SELECT MEM_ID
		, MEM_NAME
		, IS_ADMIN
	FROM SHOP_MEMBER
	WHERE MEM_ID = #{memId}
	AND MEM_PW = #{memPw}
</select>
  • 3.memberService
    package service;
    //인터페이스
    //(mapper에서 만든 쿼리문)메소드 기능 정의하는 곳이다!!!
    import java.util.List;

import dto.MemberDTO;

public interface MemberService {
//회원가입
void insertMember(MemberDTO memberDTO);
//로그인
MemberDTO login(MemberDTO memberDTO);
}

  • 4.memberServiceImple
    package service;

import java.lang.reflect.Member;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import dto.MemberDTO;
import sqlmap.SqlSessionManager;

//쿼리작업하는 곳

public class MemberServiceImpl implements MemberService{//서비스를 구현하겠다.
//쿼리 실행하는 객체
SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession();
SqlSession sqlSession = sqlSessionFactory.openSession();
@Override
public void insertMember(MemberDTO memberDTO) {
sqlSession.insert("memberMapper.insertMember",memberDTO);
sqlSession.commit();
}
@Override
public MemberDTO login(MemberDTO memberDTO) {
MemberDTO result = sqlSession.selectOne("memberMapper.login", memberDTO);
sqlSession.commit();
return result;
}

}

  • 5.memberController

package controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 javax.servlet.http.HttpSession;

import org.apache.catalina.startup.SetAllPropertiesRule;

import dto.MemberDTO;
import service.MemberService;
import service.MemberServiceImpl;

@WebServlet("*.me")
public class MemberController extends HttpServlet {
private static final long serialVersionUID = 1L;
private MemberService memberService = new MemberServiceImpl();

public MemberController() {
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doProcess(request, response);
}

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

protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//한글 인코딩 처리
	request.setCharacterEncoding("UTF-8");
	response.setContentType("text/html;charset=UTF-8");

	String requestURI = request.getRequestURI();
	String contextPath = request.getContextPath();
	String command = requestURI.substring(contextPath.length());
	System.out.println("command = " + command);
	
    //(주의!!)
    //page는 항상 최종적으로 보이는 화면이기때문에 템플릿화면이다.
    //만약 빈값으로 설정하면 index 파일과 연결되어있는 itemList.it 로 간다.
	String page="jsp/template/template.jsp";
	String contentPage="";
	boolean isRediect = false;
	
    
    //공통사항들은 앞뒤로 미리 빼준다. 
    //page는 위에 템플릿으로!
    //contentPage는 
    // request.setAttribute("contentPage", contentPage)로  
    // if/else if문 가장 마지막 바깥으로!       

	//회원가입양식페이지
	if(command.equals("/joinForm.me")) {
		contentPage="member/join.jsp";
		
	}
	
	//로그인 양식
	else if(command.equals("/loginForm.me")) {
		contentPage="member/login.jsp";
	}
	
	
	
	//회원가입
	else if(command.equals("/join.me")) {
		 String memId =request.getParameter("memId");
		 String memPw =request.getParameter("memPw");
		 String memName=request.getParameter("memName");
		 String gender=request.getParameter("gender");
		 String memTell=request.getParameter("memTell");
		 String memAddr=request.getParameter("memAddr");
		 String addrDetail=request.getParameter("addrDetail");
		 
		 MemberDTO memberDTO = new MemberDTO();
		 memberDTO.setAddrDetail(addrDetail);
		 memberDTO.setGender(gender);
		 memberDTO.setMemAddr(memAddr);
		 memberDTO.setMemId(memId);
		 memberDTO.setMemName(memName);
		 memberDTO.setMemPw(memPw);
		 memberDTO.setMemTell(memTell);
		 
		 memberService.insertMember(memberDTO);
		 //회원가입 이후에는 템플레이트가 아닌 팝업창으로가기때문에 'page'로 이동(contentPage x)
		 page="jsp/member/join_result.jsp";
	}
	
	
	
	//로그인
	else if(command.equals("/login.me")) {
		 String memId =request.getParameter("memId");
		 String memPw =request.getParameter("memPw");
		 String isAdmin = request.getParameter("isAdmin");
		 MemberDTO memberDTO = new MemberDTO();
		 memberDTO.setMemId(memId);
		 memberDTO.setMemPw(memPw);
		 memberDTO.setIsAdmin(isAdmin);
		 
		 MemberDTO loginInfo = memberService.login(memberDTO);
		 if(loginInfo != null) {
			 HttpSession session = request.getSession();
			 session.setAttribute("loginInfo", loginInfo);
		 }
		 page="jsp/member/login_result.jsp";
	}
	
	//로그아웃
	else if(command.equals("/logout.me")) {
		HttpSession session = request.getSession();
		session.removeAttribute("loginInfo");
		page="itemList.it";
		
	}
	
	request.setAttribute("contentPage", contentPage);
    
	//페이지이동에 사용되는 if문
	if(isRediect) {
		response.sendRedirect(page);
	}
	else {
		RequestDispatcher dispatcher = request.getRequestDispatcher(page);
		dispatcher.forward(request, response);
	}
}

}

6.jsp화면...

  • index(프로젝트생성 후 가장 먼저)
  • template

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

Insert title here
  • menu

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>

Insert title here

B O O K

  • login

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

Insert title here
아이디:
비밀번호:
- login_result

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>

Insert title here - join

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

Insert title here

}

아이디:
비밀번호:
이름:
연락처:
성별:
male female
주소:
상세주소:
-join_result

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

Insert title here

실습내용2)

  • 만약,로그인시 관리자가 로그인을 했다면,
    메뉴가 상품등록,상품정보변경,회원정보변경,매출관리
  • 내용 페이지는 상품등록 " jsp/admin/reg_item_form.jsp "페이지로 만든다.(관리자만 가능)
  • 관리자만 가능한 페이지는 AdminController 로 만들면 된다.

실습내용3)

  • <상품등록화면 개발>
  • 상품등록시 상품코드는 ITEM_001,ITEM_002...로 만들기
  • 상품이름,가격,상품설명(textarea),재고(기본값있기때문에 입력x),상품카테고리(셀렉트박스:실제아이템카테고리안에 조회된 목록이 떠야한다!!!)
  • menu.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>

    Insert title here

    B O O K

0.login_result.jsp 에서 먼저 관리자 로그인 시 메뉴 화면 변경 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>

Insert title here
  1. admin_template.jsp
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> Insert title here

2.admin_menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>

Insert title here

B O O K

  • 5.reg_item_form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>

Insert title here

상품등록

상품이름
가격
상품설명
재고
상품카테고리
${category.cateName}

  1. 카테고리 DTO 만들기(DB 카테고리 테이블 컬럼명대로 만들기!!!)
    package dto;

public class CategoryDTO {

private String cateCode;
private String cateName;
public String getCateCode() {
	return cateCode;
}
public void setCateCode(String cateCode) {
	this.cateCode = cateCode;
}
public String getCateName() {
	return cateName;
}
public void setCateName(String cateName) {
	this.cateName = cateName;
}

}

  1. item-mapper 만들기
SELECT CATE_CODE , CATE_NAME FROM ITEM_CATEGORY

2.itemService 만들기
package service;
//인터페이스
//(mapper에서 만든 쿼리문)메소드 기능 정의하는 곳이다!!!
import java.util.List;

import dto.CategoryDTO;

public interface ItemService {
//상품카테고리 목록 조회
List selectCategoryList();
}

3.itemServiceImple 만들기

package service;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import dto.CategoryDTO;
import sqlmap.SqlSessionManager;

//쿼리작업하는 곳

public class ItemServiceImpl implements ItemService{//서비스를 구현하겠다.
//쿼리 실행하는 객체
SqlSessionFactory sqlSessionFactory = SqlSessionManager.getSqlSession();
SqlSession sqlSession = sqlSessionFactory.openSession();

   //카테고리 목록 조회
   @Override
public List<CategoryDTO> selectCategoryList() {
   List<CategoryDTO> result = sqlSession.selectList("itemMapper.selectCategoryList");
   sqlSession.commit();
   return result;
}

}

4.Admincontroller 파일 생성

   package controller;

import java.awt.ItemSelectable;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 javax.servlet.http.HttpSession;

import org.apache.catalina.startup.SetAllPropertiesRule;

import dto.CategoryDTO;
import dto.ItemDTO;
import dto.MemberDTO;
import service.MemberService;
import service.MemberServiceImpl;
import service.ItemService;
import service.ItemServiceImpl;

@WebServlet("*.ad")
public class AdminController extends HttpServlet {
private static final long serialVersionUID = 1L;
private ItemServiceImpl itemService = new ItemServiceImpl();

public AdminController() {
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	doProcess(request, response);
}

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

protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	//한글 인코딩 처리
	request.setCharacterEncoding("UTF-8");
	response.setContentType("text/html;charset=UTF-8");

	String requestURI = request.getRequestURI();
	String contextPath = request.getContextPath();
	String command = requestURI.substring(contextPath.length());
	System.out.println("command = " + command);
	
	String page="jsp/template/admin_template.jsp";
	String contentPage="";
	boolean isRediect = false;
	
	//관리자 상품등록  페이지
	if(command.equals("/regItemForm.ad")) {
		//카테고리 목록조회(이전 맵퍼에서 미리 만든다)
		List<CategoryDTO> categoryList =itemService.selectCategoryList();
		request.setAttribute("categoryList", categoryList);
		contentPage="admin/reg_item_form.jsp";
		
	}
	
	//
	else if(command.equals("/regItem.ad")) {
	
		
		contentPage=".ad";
	}
	
	request.setAttribute("contentPage", contentPage);
	
	//페이지이동에 사용되는 if문
	if(isRediect) {
		response.sendRedirect(page);
	}
	else {
		RequestDispatcher dispatcher = request.getRequestDispatcher(page);
		dispatcher.forward(request, response);
	}
}

}

profile
Dev.Vinch

0개의 댓글