겉바속촉
[spring] 게시판 만들기 2 본문
이번에는 지난번 포스팅처럼 게시판을 만들어주려고합니다:)
2020/06/29 - [취업일기/SPRING] - [spring] 게시판 만들어보기
이제 시작해볼게요~~
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] 게시판 만들어보기
두번째를 클릭하면 이번에 만든 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개의 데이터가 되었습니다.
'IT일기(하반기) > SPRING' 카테고리의 다른 글
[spring] 입출력 연습하기 (0) | 2020.07.02 |
---|---|
[spring] 게시판만들기2-수정삭제편 (0) | 2020.07.01 |
[spring] 게시판 만들어보기 (0) | 2020.06.29 |
[spring] MyBatis 깔고 setting해주기 (2) | 2020.06.29 |
[spring] 이미지 띄우기 (0) | 2020.06.26 |