겉바속촉

[spring] 게시판 만들기 2 본문

IT일기(하반기)/SPRING

[spring] 게시판 만들기 2

겉바속촉 2020. 6. 30. 17:50
728x90
반응형

이번에는 지난번 포스팅처럼 게시판을 만들어주려고합니다:)

2020/06/29 - [취업일기/SPRING] - [spring] 게시판 만들어보기

 

[spring] 게시판 만들어보기

2020/06/29 - [취업일기/SPRING] - [spring] MyBatis 깔고 setting해주기 [spring] MyBatis 깔고 setting해주기 이번에는 MyBatis를 설치해주고 여러가지 필요한 것들을 setting 해줄게요:) 우선은 프로젝트 생성..

2-juhyun-2.tistory.com

 

 

이제 시작해볼게요~~

 

1. table person 만들어주기

 

 

 

 

2. person테이블에 값 넣어주기

 

 

 

 

 

3. 패키지 새로 생성

 

 

 

 

 

 

 

 

4. 지난 포스팅에서 만들어 두었던 SqlMapConfig.xml 에다가 추가작성

 

다음과 같이 완성해주세요:).

이 과정이 바로 dto를 등록하는 것입니다

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<typeAliases>
		<typeAlias type="board.data.BoardDto" alias="bdto"/>	
		<typeAlias type="person.data.PersonDto" alias="pdto"/>	
		
		
	</typeAliases>
	
	<mappers>
		<mapper resource="mybatis/setting/BoardSql.xml"	/>
		<mapper resource="mybatis/setting/PersonSql.xml"/>
	</mappers>
</configuration>

 

 

5. PersonSql.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">

 

 

6. PersonDaoInter.java

 

package person.data;

import java.util.List;

public interface PersonDaoInter {

	public List<PersonDto> getAllDatas();
}

 

 

7. PersonDao.java

 

package person.data;

import java.util.List;

import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
public class PersonDao extends SqlSessionDaoSupport implements PersonDaoInter{

	@Override
	public List<PersonDto> getAllDatas() {
		// TODO Auto-generated method stub
		return getSqlSession().selectList("selectAllOfPerson");
	}

	
}

 

 

8.PersonDto.java

 

package person.data;

import java.sql.Timestamp;

public class PersonDto {
	
	private String num;
	private String name;
	private String age;
	private String addr;
	private Timestamp sdate;
	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public Timestamp getSdate() {
		return sdate;
	}
	public void setSdate(Timestamp sdate) {
		this.sdate = sdate;
	}
	
	
}

 

 

 

9. PersonSql.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="person">
	<select id="selectAllOfPerson" resultType="pdto">
		select * from person order by num asc
	</select>

</mapper>

 

 

 

 

10. webapp에 person폴더 생성 후 다음과 같이 jsp파일 두개도 생성해주세요:)

 

 

 

 

 

11. PersonController.java

 

package spring.mvc.board;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

import person.data.PersonDao;
import person.data.PersonDto;

@Controller
public class PersonController {
   
   @Autowired
   PersonDao dao;
   
   @GetMapping("/person/list")
   public ModelAndView list()
   {
      ModelAndView model = new ModelAndView();
      
      //dao에서 전체데이터를 db로부터 가져온다.
      
      List<PersonDto>list=dao.getAllDatas();
      //request의 list를 추가한다.
      model.addObject("list", list);
      model.addObject("cnt", list.size());
      //포워드할 jsp를 지정한다.
      model.setViewName("person/personList");
      return model;
   }
}

 

 

 

12. 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"  %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
 <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>Insert title here</title>
</head>
<body>
<h1><%-- <c:redirect url="list"/> --%>
<a href="list">스프링 게시판 연습_Board</a><br>
<a href="person/list">스프링 2번째 게시판_Person</a></h2>
</body>
</html>

 

실행결과는 다음과 같습니다:)

 

 

 

 

첫번째를 클릭하면 지난 번 포스팅의 list가 넘어옵니다

2020/06/29 - [취업일기/SPRING] - [spring] 게시판 만들어보기

 

[spring] 게시판 만들어보기

2020/06/29 - [취업일기/SPRING] - [spring] MyBatis 깔고 setting해주기 [spring] MyBatis 깔고 setting해주기 이번에는 MyBatis를 설치해주고 여러가지 필요한 것들을 setting 해줄게요:) 우선은 프로젝트 생성..

2-juhyun-2.tistory.com

 

 

 

두번째를 클릭하면 이번에 만든 list가 뜨게 해줄게요

 

13. 그렇다면 personList.jsp를 작성해야겠쥬?

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
</head>
<body>

<h1></h1>
<b style="color: magenta">총${cnt}개의 데이터가 있습니다</b>
<hr>
<a href="">자료추가하기</a>
<div class="container">
<table class="table table-striped">
	<tr bgcolor="lightgray">
		<th width="100">번호</th>
		<th width="100">이름</th>
		<th width="100">나이</th>
		<th width="300">주소</th>
		<th width="200">작성일</th>
		<th width="150">편집</th>	
	</tr>
	
	<!-- list dto를 변수로 반복문으로 출력 -->
	<c:forEach var="dto" items="${list }" varStatus="i">
		<tr>
			<td align="center">${i.count }</td>
			<td align="center">${dto.name }</td>
			<td align="center">${dto.age }</td>
			<td align="center">${dto.addr }</td>
			<td align="center"><fmt:formatDate value="${dto.sdate }" pattern="yyyy-MM-dd HH:mm"/></td>
			<td align="center"><a href="location.href=''">수정</a>
			/<a href="location.href=''">삭제</a></td>
			
			
				
	</c:forEach>

</table>
</div>

</body>

</html>

 

그래서 실행시킨 후에 두번째를 눌렀더니

아까 퀀텀 db에서 넣어준 값들이 출력되고 있네요?!

 

 

14. 이제는 자료추가하기를 눌렀을 때 폼이 뜨게 하고 싶어요

     그렇다면 personForm.jsp 작성합시다

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
 <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>Insert title here</title>
</head>
<body>
<div class="container">
	<form action="insert">
		<table class="table table-hover" style="width: 350px;">
			<tr>
				<th>이름</th>
				<td>
					<input type="text" name="name" size="7" class="control-form">
				</td>
			</tr>
			<tr>
				<th>나이</th>
				<td>
					<input type="text" name="name" size="5" class="control-form">
				</td>
			</tr>
			<tr>
				<th>주소</th>
				<td>
					<input type="text" name="name" size="10" class="control-form">
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<input type="submit" value="저장" class="btn btn-danger">
					<input type="button" value="목록" onclick="location.href='list'"
					class="btn btn-danger">
				</td>
			</tr>
		
		
		</table>	
	</form>
</div>
<h1></h1>
</body>
</html>

 

 

 

 

 

 

15. 그리고 할일은 list에 있는 자료추가하기를 눌렀을 때의 매핑 주소 적어주기

 자료추가하기를 눌렀을 때 무엇이 떠야할지 생각해주세요:)

당연히 입력폼이 떠야겠쥬?! personform을 넣어주시는 거에요

 

 

personList.jsp 완성본

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
</head>
<body>

<h1></h1>
<b style="color: magenta">총${cnt}개의 데이터가 있습니다</b>
<hr>
<a href="personform">자료추가하기</a>
<div class="container">
<table class="table table-striped">
	<tr bgcolor="lightgray">
		<th width="100">번호</th>
		<th width="100">이름</th>
		<th width="100">나이</th>
		<th width="300">주소</th>
		<th width="200">작성일</th>
		<th width="150">편집</th>	
	</tr>
	
	<!-- list dto를 변수로 반복문으로 출력 -->
	<c:forEach var="dto" items="${list }" varStatus="i">
		<tr>
			<td align="center">${i.count }</td>
			<td align="center">${dto.name }</td>
			<td align="center">${dto.age }</td>
			<td align="center">${dto.addr }</td>
			<td align="center"><fmt:formatDate value="${dto.sdate }" pattern="yyyy-MM-dd HH:mm"/></td>
			<td align="center"><a href="location.href=''">수정</a>
			/<a href="location.href=''">삭제</a></td>
			
			
				
	</c:forEach>

</table>
</div>

</body>

</html>

 

 

 

15. 그리고 이것들을 작동시킬 PersonController.java로 가셔야겠쥬?

다음과 같은 코드를 추가해주시면 okay!

 //자료입력하기 버튼을 누르면 폼이 나오게
   @GetMapping("/person/personform")
   public String inputform()
   {
	   return "person/personForm";
   }

 

 

 

전체 PersonController.java

 

package spring.mvc.board;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.servlet.ModelAndView;

import person.data.PersonDao;
import person.data.PersonDto;

@Controller
public class PersonController {
   
   @Autowired
   PersonDao dao;
   
   @GetMapping("/person/list")
   public ModelAndView list()
   {
      ModelAndView model = new ModelAndView();
      
      //dao에서 전체데이터를 db로부터 가져온다.
      
      List<PersonDto>list=dao.getAllDatas();
      //request의 list를 추가한다.
      model.addObject("list", list);
      model.addObject("cnt", list.size());
      //포워드할 jsp를 지정한다.
      model.setViewName("person/personList");
      return model;
   }
   
   //자료입력하기 버튼을 누르면 폼이 나오게
   @GetMapping("/person/personform")
   public String inputform()
   {
	   return "person/personForm";
   }
   }

 

 

이제 자료추가하기 클릭해볼까요?

다음과 같이 form이 잘 뜨고 있습니다:)

 

 


 

16. 이번에는 form에다가 우리가 값을 입력하고 저장을 누르면 실행되면 좋겠쥬??

 

insert를 작성하러 가봅시다

 

[기본적인 순서]

1. daoInter

2. sql

3. dao

4. controller

 

 

 

1. PersonDaoInter

 

 

 

2. PersonSql.xml

 

 

 

3. PersonDao.java  --> 빨간 줄 있으므로 마우스 올리면 뜨는 add...클릭 후 오버라이딩 받기

 

 

 

4. PersonController

 

우리가 폼을 입력 후 저장버튼을 누르면 그 값이 저장되야하기 때문에

insert라는 메서드를 만들어놓고

return값은 "redirect: person/personList" 라고 해주셔야 list로 돌아갈 수 있습니다

 

 

요렇게 자료 추가가 가능합니다

 

 

 

원래는 총 3개의 데이터가 있었는데 

보라돌이를 추가해서 총 4개의 데이터가 되었습니다.

 

728x90
반응형