공지사항 관리자 페이지 준비

    관리자를 위한 list나 leg 페이지 만들기

    www.newlecture.com/customer/notice/1026

     

    스프링 MVC 공지사항 관리자 view 페이지

    공지사항 관리자 페이지를 위한 jsp 파일입니다. 다운로드

    www.newlecture.com

    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

     

    Google Drive - 모든 파일을 한 곳에서

    하나의 계정으로 모든 Google 서비스를 Google Drive로 이동하려면 로그인하세요.

    accounts.google.com

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading