IT코딩공부!

#34 스프링(spring) 공부중~!

history. 2023. 5. 23. 16:54

오늘의 노래!!!

 
Boys And Girls (Feat. Babylon)
아티스트
지코 (ZICO)
앨범
Boys and Girls
발매일
1970.01.01

 

 

 

먼저 4개의 xml파일 확인!!!

root-context.xml 

mapper위치 확인하기!!!

	<!-- mapper 위치 확인 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="configLocation" value="classpath:/mybatis-config.xml"/>
		<property name="mapperLocations" value="classpath:com/icia/input/dao/mapper/*.xml" />
	</bean>

servlet-context.xml

context위치 확인하기!!!

	<context:component-scan base-package="com.icia.*" />
	<context:component-scan base-package="com.icia.input.controller" />

 

Mapper.xml

// namespace="이름 주의!!!"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Member">


</mapper>

 

STS 프로젝트 생성

(1) spring legacy project 생성
(2) Spring MVC Project 선택후
(3) com.팀이름.프로젝트이름 생성
(4) 프로젝트 생성 후 Build Path 설정 (JRE-11로 설정,  Compiler도 11로 변경, Dynamic webmodule 4.0, Java 11로 설정)

4가지 설정 파일 복사
(1) pom.xml  --> version 아래에서 부터 복사(properties 부터)
(2) servlet-context.xml --> 파일경로 확인 (base-package 2개 확인)
(3) root-context.xml --> 파일경로 확인(classpath 뒤) , DB ID,PW확인
(4) web.xml --> 그대로 복사

4개 패키지 생성 (controller, service, dao, dto)
1개 폴더 생성 (dao/mapper)

dto 패키지 에서 DTO(class)파일 생성
mapper 폴더에서 mapper.xml 생성(mapper 태그 namespace ="" 확인)
src/main/resources - mybatis-config.xml생성(Aliases 파일 경로 확인-->경로 끝 DTO(class파일))

Homecontroller.java

@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home() {
		
		return "home";
	}
	
}

return "/WEB-INF/views/home.jsp";  == return "home";

이제 inputcontroller사용을 위해 homecontroller를 삭제

 

inputcontroller.java 사용

// controller에서 String타입은 메소드 페이지 이동시에 사용!!!

package com.icia.input.controller;

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



//class 의미!!!

@Controller
public class InputController {
	private static final Logger logger = LoggerFactory.getLogger(InputController.class);

	// 프로젝트의 시작페이지!!!
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String index() {
		return "index";
	}

	// input 리턴 받기
	@RequestMapping(value = "/InputDB", method = RequestMethod.GET)
	public String InputDB() {
		return "InputDB";
	}

	// insertDB 리턴 받기
	@RequestMapping(value = "/insertDB", method = RequestMethod.GET)
	public String insertDB(@RequestParam("data1") String data1) {
//		String data1 = request.getParameter("data1");
		return "mav";
	}
	
	
	// controller에서 String타입은 메소드 페이지 이동시에 사용!!!

}

 

@RequestParam("data1") String data1 == String data1 = request.getParameter("data1");

이전 이클립스때 사용.. ↓

// InputService svc = new InputService();
// int result = svc.insertDB(data1);

하지만 한번만 변경

 

 

dao랑 mapper연결하는법!!!

 

 

 

성공하면 service로 이동하고 실패하면 그냥 null값이 된다!!!

 

get으로 나타내줘야 한다 post일 경우405에러 발생


Member프로젝트 만들기!!!

STS 프로젝트 생성

(1) spring legacy project 생성
(2) Spring MVC Project 선택후
(3) com.팀이름.프로젝트이름 생성
(4) 프로젝트 생성 후 Build Path 설정 (JRE-11로 설정,  Compiler도 11로 변경, Dynamic webmodule 4.0, Java 11로 설정)

4가지 설정 파일 복사
(1) pom.xml  --> version 아래에서 부터 복사(properties 부터)
(2) servlet-context.xml --> 파일경로 확인 (base-package 2개 확인)
(3) root-context.xml --> 파일경로 확인(classpath 뒤) , DB ID,PW확인
(4) web.xml --> 그대로 복사

4개 패키지 생성 (controller, service, dao, dto)
1개 폴더 생성 (dao/mapper)

dto 패키지 에서 DTO(class)파일 생성
mapper 폴더에서 mapper.xml 생성(mapper 태그 namespace ="" 확인)
src/main/resources - mybatis-config.xml생성(Aliases 파일 경로 확인-->경로 끝 DTO(class파일))

 

 

[1] 먼저 controller, dao, service에 org페이지 작성해준다

 

controller 예를 들어 ↓

@Controller
public class MemberController {

@Autowired
private MemberSerivce msvc = new MemberSerivce();

 

private static final Logger logger = LoggerFactory.getLogger(MemberController .class);

@RequestMapping(value = "/", method = RequestMethod.GET)
public String index() {

return "index";
}

 

}

 

dao 예를 들어 ↓

@Repository
public class MemberDAO {
@Autowired
private SqlSessionTemplate sql;

public int memberJoin(MemberDTO member) {

return sql.insert("Member.memberJoin", member);

}

}

 

service 예를 들어 ↓

@Service
public class MemberSerivce {

private ModelAndView mav = new ModelAndView();

@Autowired
private MemberDAO mdao;

}

controller, dao, service org페이지 작성

 

 

//mybatis-config.xml 중요!!!

경로 설정 잘 확인하기!!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

	<typeAliases>
		<typeAlias type="com.icia.member.dto.MemberDTO" alias="member"/>
	</typeAliases>

</configuration>

//memberMapper.xml 중요!!!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Member">
	<insert id="memberJoin" parameterType="member">
	
		INSERT INTO MEMBERDTO VALUES(#{memId},#{memPw},#{memName},#{memBirth},#{memGender},#{memEmail},#{memPhone})
	
	</insert>
	
</mapper>

 

// index.jsp 작성 (버튼을 누르면 화면 이동)

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

	<!-- 회원가입 버튼을 만들어서 클릭햇을경우 회원가입(MemerJoin.jsp)로 이동 -->
	<!-- 주소는 joinForm  -->

	<button onclick="location.href='joinForm'">회원가입1</button>
	<button id="join">회원가입2</button>

<script src="https://code.jquery.com/jquery-3.6.4.js"
integrity="sha256-a9jBBRygX1Bh5lt8GZjXDzyOB+bWve9EiO7tROUtj/E="
crossorigin="anonymous">
</script>
<script>

	$('#join').click(function(){
		
		location.href="joinForm";
		
	});
</script>

</body>
</html>

// MemberJoin.jsp 작성 (회원가입 화면 나타내기)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MEMBER_Join</title>
<style>
	table, td, th{
		border : 1px solid black;
		border-collapse : collapse;
	}
	
	td, th{
		padding : 10px;
	}
	
	caption {
		margin-bottom : 10px;
		font-size : 20px;
		font-weight : bold;
	}
	
	table{
		width : 400px;
	}
	
</style>
</head>
<body>

<form action="memberJoin" method="post">
	<table>
		<caption>회원가입 페이지</caption>
		
			<tr>
				<th colspan="2">인천일보 아카데미 가입 신청서</th>
			</tr>
			
			<tr>
				<th>항목</th>
				<th>내용</th>
			</tr>
			
			<tr>
				<th>아이디</th>
				<td><input type="text" name="memId"/></td>
			</tr>
			
			<tr>
				<th>비밀번호</th>
				<td><input type="password" name="memPw"/></td>
			</tr>
			
			<tr>
				<th>이름</th>
				<td><input type="text" name="memName"/></td>
			</tr>
			
			<tr>
				<th>성별</th>
				<td>
					남자 <input type="radio" name="memGender" value="남자"/>
					여자 <input type="radio" name="memGender" value="여자"/>
				</td>
			</tr>
			
			<tr>
				<th>생년월일</th>
				<td><input type="date" name="memBirth"/></td>
			</tr>
			
			<tr>
				<th>이메일</th>
				<td><input type="email" name="memEmail"/></td>
			</tr>
			
			<tr>
				<th>연락처</th>
				<td><input type="text" name="memPhone"/></td>
				
			</tr>
			
			<tr>
				<th colspan="2">
					<input type="submit" value="가입"/>
					<input type="reset" value="다시작성"/>
				</th>
			</tr>
			
			
	
	</table>
</form>

</body>
</html>

최종본!!! 정리