본문 바로가기

프로그래밍/JAVA & SPRING

[LifeSoft] spring 10강 관리자 로그인/로그아웃 기능, 상품 등록/수정/삭제

반응형

바. 상품등록, 수정, 삭제 실습 예제

 

1) 상품관리_관리자 테이블
drop table admin cascade constraints;
create table admin (
userid varchar2(50) not null,
passwd varchar2(50) not null,
name varchar2(50) not null,
email varchar2(100),
join_date date default sysdate,
primary key(userid)
);

 

계정을 추가한다.
insert into admin (userid, passwd, name
) values ( 'admin', '1234', '관리자' );

 

commit;

 

회원과 관리자를 같이 또는 다른 테이블로 관리하는 경우가 있다
권한을 줄때 1~9까지를 줘서 9면 최고관리자 1이면 일반관리자 이렇게 할 수 있다.
지금은 따로 admin 테이블을 만들어서 관리한다.

 

 

2) model.admin.AdminDAO.java

public interface AdminDAO {
 public String loginCheck(MemberDTO dto);
}

 

3) model.admin.AdminDAOImpl.java

@Repository
public class AdminDAOImpl implements AdminDAO {

 @Inject
 SqlSession sqlSession;
 
 @Override
 public String loginCheck(MemberDTO dto) { 
  return sqlSession.selectOne("admin.login_check", dto);
 }

}

 

4) mappers/mapper/adminMapper.xml

<mapper namespace="admin">
 <select id="login_check" resultType="String">
  select name from admin
  where userid=#{userid} and passwd=#{passwd}
 </select>

 

5) service.admin.AdminService.java

public interface AdminService {
 public String loginCheck(MemberDTO dto);
}

 

6) service.admin.AdminServiceImpl.java

@Service
public class AdminServiceImpl implements AdminService {

 @Inject
 AdminDAO adminDAO;
 @Override
 public String loginCheck(MemberDTO dto) { 
  return adminDAO.loginCheck(dto);
 }

}

 

menu.jsp에서 관리자 로그인을 만든다.

원래는 따로 페이지를 만들어야 한다.

일반 사용자 옆에 임시로 만든다. (/admin/login.do 호출)

 

7) controller.admin.AdminController.java

@Controller
@RequestMapping("/admin/*")
public class AdminController {

 @Inject
 AdminService adminService;
 
 @RequestMapping("login.do")
 public String login() {
  
  return "admin/login";
 }
 
 @RequestMapping("login_check.do")
 public ModelAndView login_check(MemberDTO dto, HttpSession session, ModelAndView mav) {
  String name = adminService.loginCheck(dto);
  if(name != null) {
   session.setAttribute("admin_userid", dto.getUserid());
   session.setAttribute("admin_name", name);
   session.setAttribute("userid", dto.getUserid());
   session.setAttribute("name", name);
   mav.setViewName("admin/admin");
   mav.addObject("message", "success");
  } else {
   mav.setViewName("admin/login");
   mav.addObject("message", "error");
  }
  return mav;
 }
}

 

/vies/admin/login.jsp페이지를 만든다. (/admin/login_check.do 호출)

/vies/admin/admin.jsp페이지를 만든다.

로그아웃은 기존 로직을 그대로 쓴다.

 

10) views/include/admin_menu.jsp

관리자 메뉴페이지는 따로 만든다.

 

관리자 로그인 후 상품 등록

상품등록시 이미지 처리 문제 - 바로 반영이 안되고 새로고침해야 됨.

 

개발서버디렉토리

D:\workspace-softlife\spring02

 

배포 디렉토리

D:\workspace-softlife\.metadata\.plugins\org.eclipse.wst.server.core\tmp5\wtpwebapps\spring02\

 

D:\workspace-softlife\spring02에 있는 내용을 배포 디렉토리에 옮겨서 배포를 할 수 있다.

이미지를 개발서버 디렉토리에 올리는 것이 아니라

배포 디렉토리에 올리면 새로고침하지 않아도 화면에 바로 반영된다.

배포 디렉토리로 이미지가 바로 올라간다 (개발디렉토리에는 올라가지 않음)

 

 

상품명 밑에 편집버튼 추가

편집버튼을 누르면 아래와 같이 호출한다.

http://localhost:8080/spring02/shop/product/edit/6

컨트롤러에서 받을때는 

@PathVariable("edit/{product_id}")로 받는다.