목차
ch09~ch10 내용넣기
ch10 끝
ch 11 시작
pom.xml 내용추가
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<!-- 라이브러리 추가 끝 -->
kr.spring.ch11.vo => PageRank
package kr.spring.ch11.vo;
public class PageRank {
private int rank;
private String page;
public PageRank() {}//기본 생성자가 있는게 좋음 (get과 set을 사용하기 위해서는)
public PageRank(int rank, String page) {
this.rank = rank;
this.page = page;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
@Override
public String toString() {
return "PageRank [rank=" + rank + ", page=" + page + "]";
}
}
kr.spring.ch11.controller => PageRanksController
package kr.spring.ch11.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import kr.spring.ch11.vo.PageRank;
@Controller
public class PageRanksController {
@RequestMapping("/pageRanksExcel.do")
public ModelAndView handle() {
List<PageRank> pageRanks = new ArrayList<PageRank>();
pageRanks.add(new PageRank(1,"/board/list.do"));
pageRanks.add(new PageRank(2,"/member/login.do"));
pageRanks.add(new PageRank(3,"/cart/list.do"));
// 뷰 이름 속성명 속성값
return new ModelAndView("pageRanks","pageRanks",pageRanks);
}
}
kr.spring.ch11.view => PageRanksView
package kr.spring.ch11.view;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.servlet.view.document.AbstractXlsView;
import kr.spring.ch11.vo.PageRank;
public class PageRanksView extends AbstractXlsView{ //AbstractXlsView는 엑셀처리 및 다운로드를 지원하는 스프링프레임워크이다.
@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
//시트 생성
HSSFSheet sheet = createFirstSheet((HSSFWorkbook)workbook);//(HSSFWorkbook)workbook라고 쓴 이유는 다운캐스팅을 한것.
//열이름 생성
createColumnLabel(sheet);
//시트에 데이터 표시하기
List<PageRank> pageRanks = (List<PageRank>)model.get("pageRanks");
int rowNum = 1; //행의 0번은 제목으로 사용했기 때문에 1부터 사용하고자 rowNum을 1로 만들어준다,
for(PageRank rank : pageRanks) {
createPageRankRow(sheet, rank, rowNum++); //rowNum ++로 지정하면서 다음 행의 값을 넣을 수 있다.
}
//파일명을 지정해주지않으면 파일명 이름이 URL링크로 인식하여 사용되기 때문에 변경이 필요하다
//HTTP 응답 메시지 헤더 설정 (헤더에 파일명을 지정해야된다.)
String fileName = "pageRanks2024.xls";
//HTTP 응답 메시지 헤더 셋팅
response.setHeader("Content-Disposition",
"attachment;filename=\""+fileName+"\";");
response.setHeader("Content-Transfer-Encoding",
"binary");
}
//시트를 생성하는 메서드
private HSSFSheet createFirstSheet(HSSFWorkbook workbook) {
HSSFSheet sheet = workbook.createSheet();
//sheet index,이름
workbook.setSheetName(0, "페이지 순위");
//특정 컬럼에 넓이 지정
//column Index,width(넓이)
sheet.setColumnWidth(1,256*20);
return sheet;
}
//열이름 생성
private void createColumnLabel(HSSFSheet sheet) {
HSSFRow firstRow = sheet.createRow(0); //첫번째 행을 만든다.
HSSFCell cell = firstRow.createCell(0); //첫번 째 셀을 만든다.
cell.setCellValue("순위");//첫번째 셀에 순위라고 값을 넣는다.
cell = firstRow.createCell(1); //두번 째 셀을 만든다
cell.setCellValue("페이지");//두번째 셀에 페이지라고 값을 넣는다.
//첫번째 행(0)의 1번,2번 셀의 순위와 페이지라는 값을 넣어줌으로써 엑셀시트에 제목을 만들어준다.
}
//표시할 데이터 생성
private void createPageRankRow(HSSFSheet sheet,PageRank rank, int rowNum) { //rowNum는 순서값을 표시하기위해
HSSFRow row = sheet.createRow(rowNum);
HSSFCell cell = row.createCell(0);
cell.setCellValue(rank.getRank()); //첫번 째 방에는 순위를 넣어준다.
cell = row.createCell(1);
cell.setCellValue(rank.getPage());//두번 째 방에는 페이지를 넣어준다.
//제목(순위,페이지) 아래에 값들을 넣어주는 역할을 한다.
}
}
servlet-context.xml 내용추가
<!-- 엑셀 다운로드 -->
<beans:bean class="kr.spring.ch11.controller.PageRanksController"/> <!-- Controller는 원래 id를 필요로 하지않음 -->
<beans:bean id="pageRanks" class="kr.spring.ch11.view.PageRanksView"/>
index.jsp 내용추가
<a href="${pageContext.request.contextPath}/pageRanksExcel.do">PageRanksController</a><br>


pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<!-- 라이브러리 추가 끝 -->
PageRanksController 내용추가
//JSON 문자열 처리
@RequestMapping("/pageJson.do")
@ResponseBody //view를 만들어주는 어노테이션이다. (Json 문자열을 반환할 떄는 list,map,자바빈을 사용하면 Json문자열을 반환해준다. 이 3개는 key와 value로 이뤄진 것들이다.)
public List<PageRank> parseJson(){
List<PageRank> pageRanks = new ArrayList<PageRank>();
pageRanks.add(new PageRank(1,"/file.do"));
pageRanks.add(new PageRank(2,"/pageRanksExcel.do"));
pageRanks.add(new PageRank(3,"/pageJson.do"));
return pageRanks; //리스트를 반환. (리스트로 반환하려면 어노테이션을 하나 써줘야된다. => @ResponseBody)
index.jsp 내용추가
<a href="${pageContext.request.contextPath}/pageJson.do">PageRanksController - pageJson.do</a><br>

'쌍용교육(JAVA) > Spring' 카테고리의 다른 글
쌍용교육 -JSP수업 82일차 - ch09_SpringJDBC(2) (0) | 2024.06.20 |
---|---|
쌍용교육 -JSP수업 81일차 - ch09_SpringJDBC(1) (0) | 2024.06.19 |
쌍용교육 -JSP수업 80일차 - ch08_SpringMVC(2) (0) | 2024.06.18 |
쌍용교육 -JSP수업 79일차 - ch08_SpringMVC(1) (0) | 2024.06.17 |
쌍용교육 -JSP수업 79일차 - ch07_SpringDI(4) (0) | 2024.06.17 |
ch09~ch10 내용넣기
ch10 끝
ch 11 시작
pom.xml 내용추가
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.13</version>
</dependency>
<!-- 라이브러리 추가 끝 -->
kr.spring.ch11.vo => PageRank
package kr.spring.ch11.vo;
public class PageRank {
private int rank;
private String page;
public PageRank() {}//기본 생성자가 있는게 좋음 (get과 set을 사용하기 위해서는)
public PageRank(int rank, String page) {
this.rank = rank;
this.page = page;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
@Override
public String toString() {
return "PageRank [rank=" + rank + ", page=" + page + "]";
}
}
kr.spring.ch11.controller => PageRanksController
package kr.spring.ch11.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import kr.spring.ch11.vo.PageRank;
@Controller
public class PageRanksController {
@RequestMapping("/pageRanksExcel.do")
public ModelAndView handle() {
List<PageRank> pageRanks = new ArrayList<PageRank>();
pageRanks.add(new PageRank(1,"/board/list.do"));
pageRanks.add(new PageRank(2,"/member/login.do"));
pageRanks.add(new PageRank(3,"/cart/list.do"));
// 뷰 이름 속성명 속성값
return new ModelAndView("pageRanks","pageRanks",pageRanks);
}
}
kr.spring.ch11.view => PageRanksView
package kr.spring.ch11.view;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.servlet.view.document.AbstractXlsView;
import kr.spring.ch11.vo.PageRank;
public class PageRanksView extends AbstractXlsView{ //AbstractXlsView는 엑셀처리 및 다운로드를 지원하는 스프링프레임워크이다.
@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
//시트 생성
HSSFSheet sheet = createFirstSheet((HSSFWorkbook)workbook);//(HSSFWorkbook)workbook라고 쓴 이유는 다운캐스팅을 한것.
//열이름 생성
createColumnLabel(sheet);
//시트에 데이터 표시하기
List<PageRank> pageRanks = (List<PageRank>)model.get("pageRanks");
int rowNum = 1; //행의 0번은 제목으로 사용했기 때문에 1부터 사용하고자 rowNum을 1로 만들어준다,
for(PageRank rank : pageRanks) {
createPageRankRow(sheet, rank, rowNum++); //rowNum ++로 지정하면서 다음 행의 값을 넣을 수 있다.
}
//파일명을 지정해주지않으면 파일명 이름이 URL링크로 인식하여 사용되기 때문에 변경이 필요하다
//HTTP 응답 메시지 헤더 설정 (헤더에 파일명을 지정해야된다.)
String fileName = "pageRanks2024.xls";
//HTTP 응답 메시지 헤더 셋팅
response.setHeader("Content-Disposition",
"attachment;filename=\""+fileName+"\";");
response.setHeader("Content-Transfer-Encoding",
"binary");
}
//시트를 생성하는 메서드
private HSSFSheet createFirstSheet(HSSFWorkbook workbook) {
HSSFSheet sheet = workbook.createSheet();
//sheet index,이름
workbook.setSheetName(0, "페이지 순위");
//특정 컬럼에 넓이 지정
//column Index,width(넓이)
sheet.setColumnWidth(1,256*20);
return sheet;
}
//열이름 생성
private void createColumnLabel(HSSFSheet sheet) {
HSSFRow firstRow = sheet.createRow(0); //첫번째 행을 만든다.
HSSFCell cell = firstRow.createCell(0); //첫번 째 셀을 만든다.
cell.setCellValue("순위");//첫번째 셀에 순위라고 값을 넣는다.
cell = firstRow.createCell(1); //두번 째 셀을 만든다
cell.setCellValue("페이지");//두번째 셀에 페이지라고 값을 넣는다.
//첫번째 행(0)의 1번,2번 셀의 순위와 페이지라는 값을 넣어줌으로써 엑셀시트에 제목을 만들어준다.
}
//표시할 데이터 생성
private void createPageRankRow(HSSFSheet sheet,PageRank rank, int rowNum) { //rowNum는 순서값을 표시하기위해
HSSFRow row = sheet.createRow(rowNum);
HSSFCell cell = row.createCell(0);
cell.setCellValue(rank.getRank()); //첫번 째 방에는 순위를 넣어준다.
cell = row.createCell(1);
cell.setCellValue(rank.getPage());//두번 째 방에는 페이지를 넣어준다.
//제목(순위,페이지) 아래에 값들을 넣어주는 역할을 한다.
}
}
servlet-context.xml 내용추가
<!-- 엑셀 다운로드 -->
<beans:bean class="kr.spring.ch11.controller.PageRanksController"/> <!-- Controller는 원래 id를 필요로 하지않음 -->
<beans:bean id="pageRanks" class="kr.spring.ch11.view.PageRanksView"/>
index.jsp 내용추가
<a href="${pageContext.request.contextPath}/pageRanksExcel.do">PageRanksController</a><br>


pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<!-- 라이브러리 추가 끝 -->
PageRanksController 내용추가
//JSON 문자열 처리
@RequestMapping("/pageJson.do")
@ResponseBody //view를 만들어주는 어노테이션이다. (Json 문자열을 반환할 떄는 list,map,자바빈을 사용하면 Json문자열을 반환해준다. 이 3개는 key와 value로 이뤄진 것들이다.)
public List<PageRank> parseJson(){
List<PageRank> pageRanks = new ArrayList<PageRank>();
pageRanks.add(new PageRank(1,"/file.do"));
pageRanks.add(new PageRank(2,"/pageRanksExcel.do"));
pageRanks.add(new PageRank(3,"/pageJson.do"));
return pageRanks; //리스트를 반환. (리스트로 반환하려면 어노테이션을 하나 써줘야된다. => @ResponseBody)
index.jsp 내용추가
<a href="${pageContext.request.contextPath}/pageJson.do">PageRanksController - pageJson.do</a><br>

'쌍용교육(JAVA) > Spring' 카테고리의 다른 글
쌍용교육 -JSP수업 82일차 - ch09_SpringJDBC(2) (0) | 2024.06.20 |
---|---|
쌍용교육 -JSP수업 81일차 - ch09_SpringJDBC(1) (0) | 2024.06.19 |
쌍용교육 -JSP수업 80일차 - ch08_SpringMVC(2) (0) | 2024.06.18 |
쌍용교육 -JSP수업 79일차 - ch08_SpringMVC(1) (0) | 2024.06.17 |
쌍용교육 -JSP수업 79일차 - ch07_SpringDI(4) (0) | 2024.06.17 |