KDT/WEB

240205 WEB(펀웹2)

001cloudid 2024. 2. 5. 17:48
728x90

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<!-- include 경로 => jsp 문법 => 상대적인 웹 경로를 적용. 현 파일을 기준으로 상대적으로 경로를 표시 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 본문메인이미지 -->
<div id="sub_img_member"></div>
<!-- 본문메인이미지 -->
<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Join us</a></li>
<li><a href="#">Privacy policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->
<!-- 본문내용 -->
<article>
<h1>Join Us</h1>
<form action="${pageContext.request.contextPath}/member/insertPro" id="join" method="post">
<!-- 비밀번호가 포함되어있으면 method를 post -->
<fieldset>
<legend>Basic Info</legend>
<label>User ID</label>
<input type="text" name="id" class="id">
<input type="button" value="dup. check" class="dup"><br>
<label>Password</label>
<input type="password" name="pw"><br>
<label>Retype Password</label>
<input type="password" name="pw2"><br>
<label>Name</label>
<input type="text" name="name"><br>
<label>E-Mail</label>
<input type="email" name="email"><br>
<label>Retype E-Mail</label>
<input type="email" name="email2"><br>
</fieldset>

<fieldset>
<legend>Optional</legend>
<label>Address</label>
<input type="text" name="address"><br>
<label>Phone Number</label>
<input type="text" name="phone"><br>
<label>Mobile Phone Number</label>
<input type="text" name="mobile"><br>
</fieldset>
<div class="clear"></div>
<div id="buttons">
<input type="submit" value="Submit" class="submit">
<input type="reset" value="Cancel" class="cancel">
</div>
</form>
</article>
<!-- 본문내용 -->
<!-- 본문들어가는 곳 -->

<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

src/main/java-com.itwillbs.domain.MemberDTO.java(springProject2에서 복사)

 

MemberController

package com.itwillbs.controller;

import javax.inject.Inject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;

@Controller
@RequestMapping("/member/*")
public class MemberController {
	
	//MemberService 파일 만들고 MemberService 객체 생성 => 멤버변수 자동으로 주입
	@Inject
	private MemberService memberService; 
	
	// 가상주소 http://localhost:8080/funweb/member/insert
	@GetMapping("/insert")
	public String insert() {
		System.out.println("MemberController insert()");
		// src/main/webapp/resources 폴더에 이미지, CSS, JS, JQuery 넣기
		// src/main/webapp/views 나머지 넣기
		//member/join.jsp 화면으로 주소변경없이 이동
		return "member/join";
	}

	// 가상주소 http://localhost:8080/funweb/member/login
	// => member/login.jsp 화면으로 주소변경없이 이동
	@GetMapping("/login")
	public String login() {
		System.out.println("MemberController login()");
		return "/member/login";
	}
	
	// 가상주소 http://localhost:8080/funweb/member/insertPro, post방식
	// join.jsp에서 입력한 데이터 => request => MemberDTO memberDTO 변수에 전달
	// DB 작업
	// /member/login 주소가 변경되면서 이동
	@PostMapping("/insertPro")
	public String insertPro(MemberDTO memberDTO) {
		System.out.println("MemberController insertPro()");
		System.out.println(memberDTO);
		memberService.insertMember(memberDTO);
		return "redirect:/member/login";
	}
	
}

 

root-context

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<!-- 데이터베이스 연결 객체생성 
     프로그램 설치 => 자동으로 프로그램 설치 Maven 의존 
     => Maven 서버에 프로그램이 저장되어있고 다운받는 프로그램이름을 적으면 
     => 자동으로 다운받아서 사용 
     => 프로그램 맨아래 pom.xml(다운받고 싶은 프로그램 목록 적음=> 자동으로 다운 받음)
     => maven repository 검색
     => https://mvnrepository.com/ 
     => mysql 검색  => MySQL Connector/J » 8.0.33
     => spring-jdbc 검색 => spring-jdbc -> ${org.springframework-version}
     => pom.xml 코드 넣기-->
     
     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
     	<property name="url" value="jdbc:mysql://localhost:3306/jspdb?serverTimezone=Asia/Seoul"></property>
     	<property name="username" value="root"></property>
     	<property name="password" value="1234"></property>
     </bean>	
		
<!-- 	pom.xml 에서  mybatis, mybatis spring 프로그램 설치 
        => mybatis 설정 , 객체생성
        => https://blog.mybatis.org/ 
        => https://mybatis.org/mybatis-3/ 
        => https://mybatis.org/mybatis-3/getting-started.html 
        => src/main/resources 폴더 - 오른쪽버튼 - New - other - XML - XML File
        => mybatis-config.xml 파일 만들기
        => src/main/resources 폴더 - mappers 폴더 만들기 
        => memberMapper.xml 파일 만들기 -->
        
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       		<property name="dataSource" ref="dataSource"></property>
       		<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
       		<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
       </bean> 
        
<!--    => mybatis 사용(연결정보) 객체생성 
		=> destroy-method="clearCache" 기억장소 삭제 
		=> MemberDAO에서 자동객체생성	
		   @Inject
	       private SqlSession sqlSession;
		-->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        	<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
        </bean>

</beans>

 

MemberService

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

@Service
public class MemberService {

	//MemberDAO 파일 만들기
	//MemberDAO 객체 생성 => 멤버 변수 자동으로 주입	
	@Inject
	private MemberDAO memberDAO;
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberService insertMember()");
		//시스템의 날짜 => 가입날짜 설정
		memberDTO.setDate(new Timestamp(System.currentTimeMillis()));
		
		memberDAO.insertMember(memberDTO);
	}
	
}

 

MemberDAO

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 객체생성 => 멤버변수 정의 자동으로 주입
	@Inject
	private SqlSession sqlSession;
	//sql 구문 전체 이름
	private static final String namespace = "com.itwillbs.mappers.memberMapper";
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		sqlSession.insert(namespace+".insertMember",memberDTO);
							//sql구문이름,memberDTO
	}

}

 

mappers-memberMapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itwillbs.mappers.memberMapper">

	<insert id="insertMember">
		insert into members(id,pw,name,date) 
		values(#{id},#{pw},#{name},#{date})
	</insert>
	
<!-- 	select 구문에서 결과값이 있고 resultType에 결과 형을 지정 
       디비에 열이름 id,pw,name,date => MemberDTO 멤버변수 이름 일치하면 자동으로 저장 -->
	<select id="userCheck" resultType="com.itwillbs.domain.MemberDTO">
		select * from members
		where id = #{id} and pw = #{pw}
	</select>

	<select id="getMember" resultType="com.itwillbs.domain.MemberDTO">
		select * from members
		where id = #{id}
	</select>
	
	<update id="updateMember">
		update members set name = #{name}
		where id = #{id}
	</update>
	
	<delete id="deleteMember">
		delete from members
		where id = #{id}
	</delete>
	
	<select id="getMemberList" resultType="com.itwillbs.domain.MemberDTO">
		select * from members
	</select>
	
</mapper>

 

login

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 본문메인이미지 -->
<div id="sub_img_member"></div>
<!-- 본문메인이미지 -->
<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Join us</a></li>
<li><a href="#">Privacy policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->
<!-- 본문내용 -->
<article>
<h1>Login</h1>
<form action="${pageContext.request.contextPath}/member/loginPro" id="join" method="post">
<fieldset>
<legend>Login Info</legend>
<label>User ID</label>
<input type="text" name="id"><br>
<label>Password</label>
<input type="password" name="pw"><br>
</fieldset>
<div class="clear"></div>
<div id="buttons">
<input type="submit" value="Submit" class="submit">
<input type="reset" value="Cancel" class="cancel">
</div>
</form>
</article>
<!-- 본문내용 -->
<!-- 본문들어가는 곳 -->

<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

package com.itwillbs.controller;

import javax.inject.Inject;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;

@Controller
@RequestMapping("/member/*")
public class MemberController {
	
	//MemberService 파일 만들고 MemberService 객체 생성 => 멤버변수 자동으로 주입
	@Inject
	private MemberService memberService; 
	
	// 가상주소 http://localhost:8080/funweb/member/insert
	@GetMapping("/insert")
	public String insert() {
		System.out.println("MemberController insert()");
		// src/main/webapp/resources 폴더에 이미지, CSS, JS, JQuery 넣기
		// src/main/webapp/views 나머지 넣기
		
		//member/join.jsp 화면으로 주소변경없이 이동
		return "member/join";
	}

	// 가상주소 http://localhost:8080/funweb/member/login
	// => member/login.jsp 화면으로 주소변경없이 이동
	@GetMapping("/login")
	public String login() {
		System.out.println("MemberController login()");
		return "/member/login";
	}
	
	// 가상주소 http://localhost:8080/funweb/member/insertPro, post방식
	// join.jsp에서 입력한 데이터 => request => MemberDTO memberDTO 변수에 전달
	// DB 작업
	// /member/login 주소가 변경되면서 이동
	@PostMapping("/insertPro")
	public String insertPro(MemberDTO memberDTO) {
		System.out.println("MemberController insertPro()");
		System.out.println(memberDTO);
		
		memberService.insertMember(memberDTO);
		
		return "redirect:/member/login";
	}
	
	// 가상주소 http://localhost:8080/funweb/member/loginPro, post방식
	// login.jsp에서 입력한 데이터 => request => MemberDTO memberDTO 변수에 전달
	// DB 작업 : MemberDTO memberDTO2 = userCheck(memberDTO)
	// memberDTO2 null이 아니면 아이디, 비밀번호가 일치 => 로그인 표시 세션값을 "id",값 => /memeber/main 주소가 변경되면서 이동
	//		      null이면 아이디, 비밀번호가 틀림 => /memeber/login 주소 변경되면서 이동
	@PostMapping("/loginPro")
	public String loginPro(MemberDTO memberDTO, HttpSession session) {
		System.out.println("MemberController loginPro()");
		MemberDTO memberDTO2 = memberService.userCheck(memberDTO);
		
		if(memberDTO2 != null) {
			session.setAttribute("id",memberDTO.getId());
			return "redirect:/member/main";
		} else {
			
			return "redirect:/member/login";
		}
	}
	
	// 가상주소 http://localhost:8080/funweb/member/main
	// => main/main.jsp 화면으로 주소 변경 없이 이동
	@GetMapping("/member/main")
	public String main(MemberDTO memberDTO) {
		System.out.println("MemberController main()");
		
		return "/main/main";
	}
	
}

 

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

@Service
public class MemberService {

	//MemberDAO 파일 만들기
	//MemberDAO 객체 생성 => 멤버 변수 자동으로 주입	
	@Inject
	private MemberDAO memberDAO;
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberService insertMember()");
		//시스템의 날짜 => 가입날짜 설정
		memberDTO.setDate(new Timestamp(System.currentTimeMillis()));
		
		memberDAO.insertMember(memberDTO);
	}

	public MemberDTO userCheck(MemberDTO memberDTO) {
		System.out.println("MemberService userCheck()");
		
		return memberDAO.userCheck(memberDTO);
	}
	
}

 

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 객체생성 => 멤버변수 정의 자동으로 주입
	@Inject
	private SqlSession sqlSession;
	//sql 구문 전체 이름
	private static final String namespace = "com.itwillbs.mappers.memberMapper";
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		sqlSession.insert(namespace+".insertMember",memberDTO);
							//sql구문이름,memberDTO
	}

	public MemberDTO userCheck(MemberDTO memberDTO) {
		System.out.println("MemberDAO userCheck()");
		return sqlSession.selectOne(namespace+".userCheck", memberDTO);
		
	}

}

 

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

<!-- 로그인 유무 표시값 세션에서 가져와서 => 있으면 로그인이 됨, 없으면 로그인이 되지 않음 -->

<!-- 로그인 되지 않았을 때 나타내야할 정보(login, join) -->
<c:if test="${empty sessionScope.id }">
<div id="login"><a href="${pageContext.request.contextPath}/member/login">login</a> | <a href="${pageContext.request.contextPath}/member/insert">join</a></div>
</c:if>

<!-- 로그인 되었을 때 나타나야할 정보(logout, update) -->
<c:if test="${!empty sessionScope.id }">
<div id="login">${sessionScope.id}님 | <a href="${pageContext.request.contextPath}/member/logout">logout</a> | <a href="${pageContext.request.contextPath}/member/update">update</a></div>
</c:if>

<div class="clear"></div>
<!-- 로고들어가는 곳 -->
<div id="logo"><img src="${pageContext.request.contextPath}/resources/images/logo.gif" width="265" height="62" alt="Fun Web"></div>
<!-- 로고들어가는 곳 -->
<nav id="top_menu">
<ul>
	<li><a href="../main/main.html">HOME</a></li>
	<li><a href="../company/welcome.html">COMPANY</a></li>
	<li><a href="#">SOLUTIONS</a></li>
	<li><a href="${pageContext.request.contextPath}/resource/center/notice.html">CUSTOMER CENTER</a></li>
	<li><a href="#">CONTACT US</a></li>
</ul>
</nav>
</header>

 

HomeController

package com.itwillbs.funweb;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
//		logger.info("Welcome home! The client locale is {}.", locale);
//		
//		Date date = new Date();
//		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
//		
//		String formattedDate = dateFormat.format(date);
//		
//		model.addAttribute("serverTime", formattedDate );
		
		//주소가 변경되면서 /member/main 이동
		return "redirect:/member/main";
	}
	
}

 

logout처리

package com.itwillbs.controller;
(...생략...)
	// 가상주소 http://localhost:8080/funweb/member/logout get방식
	@GetMapping("/member/logout")
	public String logout(HttpSession session) {
		System.out.println("MemberController logout");
		session.invalidate();
		return "redirect:/member/main";
	}

 

update 처리

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member/update.jsp</title>
<link href="${pageContext.request.contextPath}/resources/css/default.css" rel="stylesheet" type="text/css">
<link href="${pageContext.request.contextPath}/resources/css/subpage.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js" type="text/javascript"></script>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/ie7-squish.js" type="text/javascript"></script>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
<![endif]-->
<!--[if IE 6]>
 <script src="../script/DD_belatedPNG_0.0.8a.js"></script>
 <script>
   /* EXAMPLE */
   DD_belatedPNG.fix('#wrap');
   DD_belatedPNG.fix('#main_img');   

 </script>
 <![endif]-->
</head>
<body>
<div id="wrap">
<!-- 헤더들어가는 곳 -->
<!-- include 경로 => jsp 문법 => 상대적인 웹 경로를 적용. 현 파일을 기준으로 상대적으로 경로를 표시 -->
<jsp:include page="../inc/top.jsp" />
<!-- 헤더들어가는 곳 -->

<!-- 본문들어가는 곳 -->
<!-- 본문메인이미지 -->
<div id="sub_img_member"></div>
<!-- 본문메인이미지 -->
<!-- 왼쪽메뉴 -->
<nav id="sub_menu">
<ul>
<li><a href="#">Join us</a></li>
<li><a href="#">Privacy policy</a></li>
</ul>
</nav>
<!-- 왼쪽메뉴 -->
<!-- 본문내용 -->
<article>
<h1>Update</h1>
<form action="${pageContext.request.contextPath}/member/updatePro" id="join" method="post">
<fieldset>
<legend>Basic Info</legend>
<label>User ID</label>
<input type="text" name="id" class="id" value="${memberDTO.id}" readonly><br>
<label>Password</label>
<input type="password" name="pw"><br>
<label>Name</label>
<input type="text" name="name" value="${memberDTO.name}"><br>
<label>E-Mail</label>
<input type="email" name="email"><br>
</fieldset>

<fieldset>
<legend>Optional</legend>
<label>Address</label>
<input type="text" name="address"><br>
<label>Phone Number</label>
<input type="text" name="phone"><br>
<label>Mobile Phone Number</label>
<input type="text" name="mobile"><br>
<label>가입한 날짜</label>
<input type="text" name="join_date" value="${memberDTO.date}" readonly><br>
</fieldset>
<div class="clear"></div>
<div id="buttons">
<input type="submit" value="수정" class="submit">
<input type="reset" value="취소" class="cancel">
</div>
</form>
</article>
<!-- 본문내용 -->
<!-- 본문들어가는 곳 -->

<div class="clear"></div>
<!-- 푸터들어가는 곳 -->
<jsp:include page="../inc/bottom.jsp" />
<!-- 푸터들어가는 곳 -->
</div>
</body>
</html>

 

MemberController

package com.itwillbs.controller;

import javax.inject.Inject;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.itwillbs.domain.MemberDTO;
import com.itwillbs.service.MemberService;

@Controller
@RequestMapping("/member/*")
public class MemberController {

	(...생략...)
	
	// 가상주소 http://localhost:8080/funweb/member/update get방식
	// 세션 "id"값을 가져와서 => 변수에 저장 String id에 저장
	// MemberDTO memberDTO = getMember(id) 메소드 호출
	// Model model에 담아서 "memberDTO",memberDTO 이동
	// member/update.jsp로 주소 변경 없이 이동
	@GetMapping("/update")
	public String update(HttpSession session, Model model) {
		System.out.println("MemberController update()");
		String id = (String)session.getAttribute("id");
		MemberDTO memberDTO = memberService.getMember(id);
		model.addAttribute("memberDTO", memberDTO);
		return "/member/update";
	}
	
}

 

package com.itwillbs.service;

import java.sql.Timestamp;

import javax.inject.Inject;

import org.springframework.stereotype.Service;

import com.itwillbs.dao.MemberDAO;
import com.itwillbs.domain.MemberDTO;

@Service
public class MemberService {

	//MemberDAO 파일 만들기
	//MemberDAO 객체 생성 => 멤버 변수 자동으로 주입	
	@Inject
	private MemberDAO memberDAO;
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberService insertMember()");
		//시스템의 날짜 => 가입날짜 설정
		memberDTO.setDate(new Timestamp(System.currentTimeMillis()));
		memberDAO.insertMember(memberDTO);
	}

	public MemberDTO userCheck(MemberDTO memberDTO) {
		System.out.println("MemberService userCheck()");
		return memberDAO.userCheck(memberDTO);
	}

	public MemberDTO getMember(String id) {
		System.out.println("MemberService getMember()");
		return memberDAO.getMember(id);
	}
	
}

 

package com.itwillbs.dao;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import com.itwillbs.domain.MemberDTO;

@Repository
public class MemberDAO {
	
	//마이바티스 객체생성 => 멤버변수 정의 자동으로 주입
	@Inject
	private SqlSession sqlSession;
	//sql 구문 전체 이름
	private static final String namespace = "com.itwillbs.mappers.memberMapper";
	
	public void insertMember(MemberDTO memberDTO) {
		System.out.println("MemberDAO insertMember()");
		
		sqlSession.insert(namespace+".insertMember",memberDTO);
							//sql구문이름,memberDTO
	}

	public MemberDTO userCheck(MemberDTO memberDTO) {
		System.out.println("MemberDAO userCheck()");
		return sqlSession.selectOne(namespace+".userCheck", memberDTO);
	}

	public MemberDTO getMember(String id) {
		System.out.println("MemberDAO getMember()");
		return sqlSession.selectOne(namespace+".getMember", id);
	}

}

 

 

728x90

'KDT > WEB' 카테고리의 다른 글

240208 WEB(펀웹4(board))  (0) 2024.02.08
240206 WEB(펍웹3, GitHub)  (0) 2024.02.06
240201 WEB(조회, 펀웹1)  (0) 2024.02.01
240130 WEB(회원수정,삭제)  (0) 2024.01.30
240129 WEB(마이바티스)  (0) 2024.01.29