오늘은
점점 컨디션이 돌아오고 있습니다
이번 감기는 정말정말 독했습니다
새로운 해가 된것도 슬슬 실감이 나고 있습니다
이제 이력서도 작성하고 취업 준비도 해야할 것 같습니다
여러모로 연초부터 바빠질 것 같네요
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 (수)
프로그래머 도전기 96일차 (2) | 2024.01.05 |
---|---|
프로그래머 도전기 95일차 (1) | 2024.01.04 |
프로그래머 도전기 93일차 (0) | 2024.01.01 |
프로그래머 도전기 92일차 (0) | 2023.12.31 |
프로그래머 도전기 91일차 (2) | 2023.12.28 |