공지사항 관리자 페이지 준비
관리자를 위한 list나 leg 페이지 만들기
www.newlecture.com/customer/notice/1026
Tiles 설정해주기
리턴 경로 바꿔주기
NoticeController.java
공지사항과 타 기능들 tiles 처리하는 설정하기
tiles.xml
이벤트 같은 기능 여러 개 까지 같이 처리하는 설정 추가 -> 한 번에 패턴으로 설정 가능
패턴을 이용한 파일 설정
tiles.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
<definition name="root.*" template="/WEB-INF/view/inc/layout.jsp">
<put-attribute name="title" value="공지사항" />
<put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
<put-attribute name="body" value="/WEB-INF/view/{1}.jsp" />
<put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
</definition>
<definition name="admin.board.*.*" template="/WEB-INF/view/admin/inc/layout.jsp">
<put-attribute name="title" value="공지사항" />
<put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
<put-attribute name="visual" value="/WEB-INF/view/admin/inc/visual.jsp" />
<put-attribute name="aside" value="/WEB-INF/view/admin/inc/aside.jsp" />
<put-attribute name="body" value="/WEB-INF/view/admin/board/{1}/{2}.jsp" />
<put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
</definition>
<definition name="notice.*" template="/WEB-INF/view/customer/inc/layout.jsp">
<put-attribute name="title" value="공지사항" />
<put-attribute name="header" value="/WEB-INF/view/inc/header.jsp" />
<put-attribute name="visual" value="/WEB-INF/view/customer/inc/visual.jsp" />
<put-attribute name="aside" value="/WEB-INF/view/customer/inc/aside.jsp" />
<put-attribute name="body" value="/WEB-INF/view/customer/notice/{1}.jsp" />
<put-attribute name="footer" value="/WEB-INF/view/inc/footer.jsp" />
</definition>
</tiles-definitions>
서버 실행해보기
POST Mapping과 Redirection
reg 요청을 GET 요청과 POST 요청으로 구분할 수 있어야 한다.
reg를 POST 요청에만 사용할 수 있게끔 하기
GET 요청에서는 이러한 인자가 필요하지 않다. -> POST 요청에서만 필요
Spring Ver 3.X
GET 요청은 forward 방식
POST 요청은 redirect 방식
Spring Ver 4.X
@GetMapping("reg")
@PostMapping("reg")
NoticeController.java
package com.newlecture.web.controller.admin.board;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller("adminNoticeController")
@RequestMapping("/admin/board/notice/")
public class NoticeController {
@Autowired
private ServletContext ctx;
@RequestMapping("list")
public String list() {
return "admin.board.notice.list";
}
@GetMapping("reg")
public String reg() {
return "admin.board.notice.reg";
}
@PostMapping("reg")
public String reg(String title, String content, MultipartFile[] files,
String category, String[] foods, String food, HttpServletRequest request) throws IllegalStateException, IOException {
for(MultipartFile file : files) {
long size = file.getSize();
String fileName = file.getOriginalFilename();
System.out.printf("fileName:%s, fileSize: %d\n", fileName, size);
//ServletContext cts = request.getServletContext();
String webPath = "/static/upload";
String realPath = ctx.getRealPath(webPath);
System.out.printf("realPath : %s\n",realPath);
File savePath = new File(realPath); //realPath경로에 파일업로드하기위한 폴더가 있는지 없는지 확인
if(!savePath.exists())
savePath.mkdirs();//사이에 있는 경로에 폴더가 없으면 폴더를 만들어줌
realPath += File.separator + fileName; // "//" 시스템에 맞는 구분자 출력됨
File saveFile = new File(realPath);
file.transferTo(saveFile); //저장시키기
}
System.out.println(category);
for(String f : foods)
System.out.println(f);
System.out.println(food);
return "admin.board.notice.reg";
//return String.format("title:%s<br>content:%s<br>category:%s", title, content, category);
}
@RequestMapping("adit")
public String adit() {
return "admin.board.notice.edit";
}
@RequestMapping("del")
public String del() {
return "";
}
}
서버 실행 하기
프로젝트 다운로드 링크
drive.google.com/file/d/1QgAZ3bHltKkmfRiSdDOwLUhEvCcDKbk3/view?usp=sharing