Controller
ServiceController.java
package com.simple.controller;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.simple.command.ScoreVO;
import com.simple.score.service.ScoreService;
@Controller
@RequestMapping("service")
public class ServiceController {
//1st
//ScoreServiceImpl service =new ScoreServiceImpl();
//2nd-service를 bean으로 생성한다. 의존객체자동주입
//3rd -@Service로 빈으로 생성하고, 의존객체 자동주입
@Autowired
@Qualifier("service")
private ScoreService service; //인터페이스 타입 선언
//화면출력
@RequestMapping("/scoreRegist")
public void rigistView() {}
//폼요청
@PostMapping("/regist")
public String regist(ScoreVO vo) {
//System.out.println(vo.toString()) 넘어오는지 확인용;
service.regist(vo);
return "service/scoreResult";
}
//목록화면
@RequestMapping("/scoreList")
public String scoreList(Model model) {
//데이터조회
ArrayList<ScoreVO> list=service.getList();
model.addAttribute("list",list);
return "service/scoreList";
}
//삭제요청
@RequestMapping("/delete")
public String delete(@RequestParam("num")int num) {
service.delete(num);
return "redirect:/service/scoreList";//삭제후에 목록으로
}
}
ScoreVO.java
package com.simple.command;
public class ScoreVO { //DTO
private String name;
private String kor;
private String eng;
public ScoreVO() {}
public ScoreVO(String name, String kor, String eng) {
super();
this.name = name;
this.kor = kor;
this.eng = eng;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKor() {
return kor;
}
public void setKor(String kor) {
this.kor = kor;
}
public String getEng() {
return eng;
}
public void setEng(String eng) {
this.eng = eng;
}
@Override
public String toString() {
return "ScoreVO [name=" + name + ", kor=" + kor + ", eng=" + eng + "]";
}
}
Service
더보기
ScoreService.java
package com.simple.score.service;
import java.util.ArrayList;
import com.simple.command.ScoreVO;
public interface ScoreService {
//service구현체에서 사용할 추상메서드의 모형을 선언
public void regist(ScoreVO vo);
public ArrayList<ScoreVO> getList();
public void delete(int num);
}
ScoreServiceImp.java
package com.simple.score.service;
import java.util.ArrayList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.simple.command.ScoreVO;
import com.simple.score.dao.ScoreDAO;
//@Controller
//@Repository
//@Component
@Service("service") //빈의 이름명시
public class ScoreServiceImpl implements ScoreService {
@Autowired
@Qualifier("scoreDAO")
private ScoreDAO scoreDAO;
public void regist(ScoreVO vo) {
scoreDAO.regist(vo);
}
public ArrayList<ScoreVO> getList() {
//ArrayList<ScoreVO> list=scoreDAO.getList();
return scoreDAO.getList();
}
@Override
public void delete(int num) {
scoreDAO.delete(num);
}
}
DAO
더보기
ScoreDAO.java
package com.simple.score.dao;
import java.util.ArrayList;
import com.simple.command.ScoreVO;
public interface ScoreDAO {
public void regist(ScoreVO vo);
public ArrayList<ScoreVO> getList();
public void delete(int num);
}
ScoreDAOImpl.java
package com.simple.score.dao;
import java.util.ArrayList;
import org.springframework.stereotype.Repository;
import com.simple.command.ScoreVO;
@Repository("scoreDAO")
public class ScoreDAOImpl implements ScoreDAO{
//데이터베이스
ArrayList<ScoreVO> list=new ArrayList<>();
@Override
public void regist(ScoreVO vo) {
//System.out.println("DAO영역:"+vo.toString());
list.add(vo); //insert역할
System.out.println(list.toString());
}
@Override
public ArrayList<ScoreVO> getList() {
//데이터조회...
return list;
}
@Override
public void delete(int num) {
//삭제작업
list.remove(num);
}
}
화면
더보기
scoreRegist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="regist" method="post">
이름 : <input type="text" name="name"/>
국어 : <input type="number" name="kor"/>
영어 : <input type="number" name="eng"/>
<input type="submit" value="등록"/>
</form>
</body>
</html>
scoreResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>등록 되었습니다.</h3>
<a href="scoreList">목록화면으로..</a>
<a href="scoreRegist">다시등록하기..</a>
</body>
</html>
scoreList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>목록화면</h3>
<c:forEach var="article" items="${list }" varStatus="num">
${num.index }
${article.name }
${article.kor }
${article.eng }
<a href="delete?num=${num.index }">삭제</a>
<hr/>
</c:forEach>
</body>
</html>
jstl은 home.jsp에 자동으로 생성된다. 필요하면 가져오면 됨.
삭제는 get방식이 아닌 post방식이어야 하나, 여기서는 이해를 위해 get방식으로.
리다이렉트는 컨트롤러를 태운다.
위의 컨트롤러를 보면, delete경로를 타면 redirect를 타고 다시 scorelist로 가서 화면을 그린다.
리다이렉트는 값을 넘기지 않고 컨트롤러를 태운다. list는(데이터베이스) DAO에서 선언했으므로
DAO-Service-Controller를 타고 화면을 다시 그리는 것이다.
'Spring' 카테고리의 다른 글
230203 Spring Service, DAO 예제 DB연결 (0) | 2023.02.03 |
---|---|
230203 Spring과 MySQL 연결환경 구축과 테스트 (0) | 2023.02.03 |
230202 Spring Service, DAO 사용어노테이션 (0) | 2023.02.02 |
230202 Spring response 실습 (0) | 2023.02.02 |
230202 Spring 화면보내기2 @ModelAttribute, RedirectAttributes (0) | 2023.02.02 |