상세 컨텐츠

본문 제목

프로그래머 도전기 94일차

프로그래머가 될거야!

by Choyee 2024. 1. 3. 21:39

본문

오늘은

 

점점 컨디션이 돌아오고 있습니다

이번 감기는 정말정말 독했습니다

새로운 해가 된것도 슬슬 실감이 나고 있습니다

이제 이력서도 작성하고 취업 준비도 해야할 것 같습니다

여러모로 연초부터 바빠질 것 같네요

 

 

 

 

Spring 공부

 

필드
BoardDTO
id - 순번
boardTitle
boardWriter
boardContent
hit
createdTime
updateTime

UserDTO
id - 번호
userId - 아이디
uesrPasswd
userName
userAge

<<회원제 게시판>>
1.Jdbc 제작
2. MyBatis(마이바티스): SQL 프레임워크
   SQL을 처리하는 고급 매핑 프레임워크
   1) XML 설정방식
   2) @클래스 방식(애너테이션 방식)
(스프링 부트 -> JPA)

A. mybatis 라이브러리 - pom.xml
B. xml 설정

<?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.khit.web.mapper.UserMapper">
	<insert id="insert">
		insert into users(userid, userpasswd, username, userage)
		values(#{userId}, #{userPasswd}, #{userName}, #{userAge})
	</insert>
	
	<select id="findAll" resultType="com.khit.web.dto.UserDTO">
		select * from users
	</select>
	
	<select id="findById" resultType="com.khit.web.dto.UserDTO">
		select * from users where id = #{id}
	</select>
	
	<select id="login" resultType="com.khit.web.dto.UserDTO">
		select * from users where userid = #{userId}
		and userpasswd = #{userPasswd} 	
	</select>
	
	<select id="findByUserId" resultType="com.khit.web.dto.UserDTO">
		select * from users where userid = #{userId}
	</select>
		
	<update id="update">
		update users 
     	set userpasswd = #{userPasswd}, username = #{userName}, userage = #{userAge}
     	where id = #{id}
	</update>
	
	<delete id="delete">
		delete from users where id = #{id}
	</delete>
	
</mapper>



프로젝트 이름: SpringBoard-jdbc
컨텍스트: cohttp://m.khit.web
의존성 주입 - pom.xml
jdk: 11
spring version: 5.2.7
1. lombok
2. mysql driver
3. mybatis = sql framework
4. spring-mybatis


** 회원 **
회원가입
회원목록
회원상세보기
로그인, 로그아웃
회원 수정/삭제
유효성검사, 아이디중복검사

** 게시판 **
글쓰기
글목록
글상세보기
글 수정/삭제
댓글
페이지 처리 
파일첨부/업로드

web.xml
1. root-context : 외부 설정
2. servlet-context : 내부 설정

jdbc 테스트 - (필수 jar: spring-text)
1. 연결 테스트
2. datasource 테스트

jdbc 테스트
1. 연결 테스트: mysql 드라이버

mybatis 테스트
1. datasource 테스트(jar파일: spring-jdbc)
2. mybatis 테스트-> 1). mybatis  2). mybatis-spring
src/main/java - cohttp://m.khit.web.mapper > Mapper - 인터페이스를 사용한다
src/main/resources - com>khit>web>mapper
TimeMapper.xml - 구현클래스 역할

클라이언트 요청 -> 컨트롤러 계층(controller) -> 서비스계층(service) -> 모델계층(Mapper) -> DB

 

* controller

package com.khit.web.controller;

import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.khit.web.dto.UserDTO;
import com.khit.web.service.UserService;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RequestMapping("/user")
@Controller
public class UserController {
	
	@Autowired
	private UserService userService;
   
   // 회원 가입 페이지 요청
   @GetMapping("/join")
   public String joinForm() {
      return "/user/join";
   }
   
   // 회원 가입 처리 페이지
   @PostMapping("/join")
   public String join(@ModelAttribute UserDTO userDTO) {
	   log.info("userDTO:" + userDTO);
	   userService.insert(userDTO);
	   return "redirect:/user/login";   //http://localhost:8080
   }
   
   // 회원 목록
   @GetMapping("/")
   public String userlist(Model model) {
	   List<UserDTO> userDTOList = userService.findAll();
	   model.addAttribute("userList", userDTOList);
	   return "/user/userlist";
   }
   
   // 회원 상세 보기 - /user?id
   @GetMapping
   public String getUser(@RequestParam("id") Long id, Model model){
	   UserDTO userDTO = userService.findById(id);
	   model.addAttribute("user", userDTO);
	   return "/user/userdetail";
   }
   
   // 로그인 페이지
   @GetMapping("/login")
   public String loginForm() {
	   return "/user/login";
   }
   
   // 로그인 처리
   // 세션 발급
   @PostMapping("/login")
   public String login(@ModelAttribute UserDTO userDTO,
		   HttpSession session) {
	   // 로그인 성공, 실패
	   UserDTO loginUser = userService.login(userDTO);
	   if(loginUser != null) {
		   session.setAttribute("sessionId", userDTO.getUserId());
		   return "redirect:/";
	   }else {
		   return "/user/login";
	   }
   }
   
   // 로그아웃 처리
   @GetMapping("/logout")
   public String logout(HttpSession session) {
	   session.invalidate();  // 세션 삭제
	   return "redirect:/";
   }
   
   // 회원정보 수정
   @GetMapping("/update")
   public String update(Model model, HttpSession session) {
	   // 수정할 회원 가져오기(세션 이름으로 가져오기)
	   String userId = (String)session.getAttribute("sessionId");
	   UserDTO userDTO = userService.findByUserId(userId);
	   model.addAttribute("userdetail", userDTO);
	   return "/user/userupdate";
   }
   
   @PostMapping("/update")
   public String update(@ModelAttribute UserDTO userDTO) {
	   userService.update(userDTO);
	   return "redirect:/user/update?id=" + userDTO.getId();
   }
   
   // 회원정보 삭제
   @GetMapping("/delete")
   public String delete(@RequestParam("id") Long id) {
	   userService.delete(id);
	   return "redirect:/user/";
   }
   
}

 

 

* service

package com.khit.web.service;

import java.util.List;

import com.khit.web.dto.UserDTO;

public interface UserService {

	void insert(UserDTO userDTO);

	List<UserDTO> findAll();

	UserDTO findById(Long id);

	UserDTO login(UserDTO userDTO);

	UserDTO findByUserId(String userId);

	void update(UserDTO userDTO);

	void delete(Long id);
	
}

 

 

* serviceImple

package com.khit.web.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.khit.web.dto.UserDTO;
import com.khit.web.mapper.UserMapper;

@Service
public class UserServiceImpl implements UserService{
	
	@Autowired
	private UserMapper userMapper;
	
	@Override
	public void insert(UserDTO userDTO) {
		userMapper.insert(userDTO);
	}

	@Override
	public List<UserDTO> findAll() {
		return userMapper.findAll();
	}

	@Override
	public UserDTO findById(Long id) {
		return userMapper.findById(id);
	}

	@Override
	public UserDTO login(UserDTO userDTO) {
		return userMapper.login(userDTO);
	}

	@Override
	public UserDTO findByUserId(String userId) {
		return userMapper.findByUserId(userId);
	}

	@Override
	public void update(UserDTO userDTO) {
		userMapper.update(userDTO);
	}

	@Override
	public void delete(Long id) {
		userMapper.delete(id);
	}

}

 

 



회원 - 게시판
관계(기본키-외래키)

layout - header.jsp, footer.jsp

회원 상세보기
- 회원번호(id)로 상세보기
- 세션아이디(userId)로 상세보기

회원가입, 회원목록, 회원 상세보기, 로그인,
회원 정보의 수정, 삭제
- 비밀번호, 기타 정보

수정(update)해서 다시 저장(save)
where절 기본키일치
=> update users 
     set userpasswd ={userPasswd}, username = #{userName}, userage=#{userAge}
     where id = #{id}

삭제
=> delete from users where id = #{id}

게시글 수정
댓글 수정

 

 


<<피그마>> - 웹 디자인 툴
1. ui 디자인 - 주요 페이지 화면 캡쳐
2. ui 구현 - 기능 상세

와이어 프레임 - 사이트 제작전에 미리 설계화면을 작성
선, 면, 무채색으로 만듬

*.fig
Tool
이동툴
프레임
손툴 - spacebar+드래그

컴포넌트(component)
- a. Layers탭 -> 객체 만들기 -> 밖으로 끌어다 놓기
- b. 컴포넌트로 등록(상단 다이아 아이콘)
- c. Assets 탭 -> 객체를 끌어서 사용함

프로토타입(핑)
- a. 프레임 제작(프로토타입)
- b. interaction(인터렉션) -> 네비게이션 -> 애니메이션
- c. 실행버튼 클릭

 

 

 

 

 

 

 

 

 

2023. 01. 03 (수)

관련글 더보기