반응형

파일 업로드 글을 보고 와주세요!! 내용이 이어집니다!!

파일 업로드 보러가기↓↓↓↓↓

https://maxtime1004.tistory.com/86

 

[JSP] Spring 다중 파일 업로드 하기

CommonMultipartResolver 클래스를 이용하면 여러개의 파일을 한꺼번에 업로드 할 수 있습니다. CommonMultipartResolver 클래스 속성 속성 설명 maxUploadSize 최대로 업로드가 가능한 파일의 크기 설정 maxInMem..

maxtime1004.tistory.com

 

 

 

 

 

pom.xml 추가

 

1
2
3
4
5
6
<!-- 썸네일 이미지 -->
<dependency>
    <groupId>net.coobird</groupId> 
    <artifactId>thumbnailator</artifactId> 
    <version>0.4.8</version> 
</dependency>
cs

 

 

 

FileDownController.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.myspring.pro28_test.ex02;
 
import java.io.File;
import java.io.OutputStream;
 
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
 
import net.coobird.thumbnailator.Thumbnails;
 
@Controller
public class FileDownloadController {
    private static String CURR_IMAGE_REPO_PATH = 
                "D:\\A_TeachingMaterial\\6.JspSpring\\other\\images";
    @RequestMapping("/download")
    protected void download(@RequestParam("imageFileName"String imageFileName,
                            HttpServletResponse response) throws Exception{
        
        OutputStream out = response.getOutputStream();
        String filePath = CURR_IMAGE_REPO_PATH + "\\" + imageFileName;
        File image = new File(filePath);
        int lastIndex = imageFileName.lastIndexOf(".");
        String fileName = imageFileName.substring(0,lastIndex);
        File thumbnail = new File(CURR_IMAGE_REPO_PATH + 
                                    "\\" + "thumbnail" + "\\" + fileName + ".png");
        if(image.exists()) {
            Thumbnails.of(image).size(5050).outputFormat("png").toOutputStream(out);
        }else {
            return;
        }
        
        byte[] buffer = new byte[1024 * 8];
        out.write(buffer);
        out.close();
    }
    
    
}
 
cs

 

그 전에 작성했던 ex01의 FileDownController는 주석 처리 해주세요!

 

 

 

 실행결과 

 

 

 

반응형
반응형

CommonMultipartResolver 클래스를 이용하면 여러개의 파일을 한꺼번에 업로드 할 수 있습니다.

 

 

CommonMultipartResolver 클래스 속성

속성 설명
maxUploadSize 최대로 업로드가 가능한 파일의 크기 설정
maxInMemorySize 디스크에 임시 파일을 생성하기 전 메모리에 보관할 수 있는 최대 바이트 크기를 설정
defaultEncoding 전달되는 매개변수의 인코딩 설정

 

 

 

 

pom.xml 추가

 

1
2
3
4
5
6
7
8
9
10
11
<!-- 다중 파일 업로드  -->
<dependency>
<
groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.1</version>
</dependency>
    
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>  
cs

 

 

servlet-context.xml 추가

 

1
2
3
4
5
<beans:bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <beans:property name="maxUploadSize" value="52428800" />
    <beans:property name="maxInMemorySize" value="1000000" />
    <beans:property name="defaultEncoding" value="utf-8" />
</beans:bean>
cs

 

 

FileDownloadController.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.myspring.pro28_test.ex01;
 
import java.io.File;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class FileUploadController {
    private static final String CURR_IMAGE_REPO_PATH = 
                "D:\\A_TeachingMaterial\\6.JspSpring\\other\\images";
    @RequestMapping(value="/form")
    public String form() {
        return "uploadForm";
    }
    
    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public ModelAndView upload(MultipartHttpServletRequest multipartRequest,
                    HttpServletResponse response) throws Exception{
        multipartRequest.setCharacterEncoding("utf-8");
        Map map = new HashMap();
        Enumeration enu = multipartRequest.getParameterNames();
        
        while(enu.hasMoreElements()) {
            String name = (String)enu.nextElement();
            String value = multipartRequest.getParameter(name);
            map.put(name, value);
        }
        
        List fileList = fileProcess(multipartRequest);
        map.put("fileList", fileList);
        
        ModelAndView mav = new ModelAndView();
        mav.addObject("map", map);
        mav.setViewName("result");
        return mav;
    }
    
    private List<String> fileProcess(MultipartHttpServletRequest multipartRequest) 
        throws Exception{
        List<String> fileList = new ArrayList<String>();
        Iterator<String> fileNames = multipartRequest.getFileNames();
        
        while(fileNames.hasNext()) {
            String fileName = fileNames.next();
            MultipartFile mFile = multipartRequest.getFile(fileName);
            String originalFileName = mFile.getOriginalFilename();
            fileList.add(originalFileName);
            File file = new File(CURR_IMAGE_REPO_PATH + "\\" + fileName);
            if(mFile.getSize() != 0) {
                if(!file.exists()) {
                    if(file.getParentFile().mkdir()) {
                        file.createNewFile();
                    }
                }
                mFile.transferTo(new File(CURR_IMAGE_REPO_PATH + "\\" + originalFileName));
            }
        }
        return fileList;
    }
}
cs

 

파일 저장 위치를 지정합니다.

다운로드 할 이미지 파일 이름을 전달합니다.

다운로드 할 패일 객체를 생성합니다.

헤더에 파일 이름을 설정합니다.

버퍼를 이용해 한번에 8K byte씩 브라우저로 전송합니다.

 

 

 

FileUploadController.java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.myspring.pro28.ex01;
 
import java.io.File;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class FileUploadController {
    private static final String CURR_IMAGE_REPO_PATH = 
                "D:\\A_TeachingMaterial\\6.JspSpring\\other\\images";
    @RequestMapping(value="/form")
    public String form() {
        return "uploadForm";
    }
    
    @RequestMapping(value="/upload", method=RequestMethod.POST)
    public ModelAndView upload(MultipartHttpServletRequest multipartRequest,
                    HttpServletResponse response) throws Exception{
        multipartRequest.setCharacterEncoding("utf-8");
        Map map = new HashMap();
        Enumeration enu = multipartRequest.getParameterNames();
        
        while(enu.hasMoreElements()) {
            String name = (String)enu.nextElement();
            String value = multipartRequest.getParameter(name);
            map.put(name, value);
        }
        
        List fileList = fileProcess(multipartRequest);
        map.put("fileList", fileList);
        
        ModelAndView mav = new ModelAndView();
        mav.addObject("map", map);
        mav.setViewName("result");
        return mav;
    }
    
    private List<String> fileProcess(MultipartHttpServletRequest multipartRequest) 
        throws Exception{
        List<String> fileList = new ArrayList<String>();
        Iterator<String> fileNames = multipartRequest.getFileNames();
        
        while(fileNames.hasNext()) {
            String fileName = fileNames.next();
            MultipartFile mFile = multipartRequest.getFile(fileName);
            String originalFileName = mFile.getOriginalFilename();
            fileList.add(originalFileName);
            File file = new File(CURR_IMAGE_REPO_PATH + "\\" + fileName);
            if(mFile.getSize() != 0) {
                if(!file.exists()) {
                    if(file.getParentFile().mkdir()) {
                        file.createNewFile();
                    }
                }
                mFile.transferTo(new File(CURR_IMAGE_REPO_PATH + "\\" + originalFileName));
            }
        }
        return fileList;
    }
}
 
cs

 

업로드 창인 uploadForm.jsp를 반환합니다.

매개변수 정보와 파일 정보를 저장할 Map을 생성합니다.

전송된 매개변수 값을 key/value로 map에 저장합니다.

파일을 업로드한 후 반환된 파일 이름이 저장된 fileList를 다시 map에 저장합니다.

map을 결과창으로 포워딩 합니다.

첨부된 파일 이름을 가져옵니다.

파일 이름에 대한 MultipartFile객체를 가져옵니다.

실제 파일 이름을 가져옵니다.

파일 이름을 하나씩 fileList에 저장합니다.

첨부된 파일이 있는지 체크합니다.

경로에 파일이 없으면 그 경로에 해당하는 디렉터리를 만든 후 파일을 생성합니다.

임시로 저장된 multipartFile을 실제 파일로 전송합니다.

첨부한 파일 이름이 저장된 fileList를 반환합니다.

 

 

 

uploadForm.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파일 업로드 하기</title>
<script src = "http://code.jquery.com/jquery-latest.js"></script>
<script>
    var cnt = 1;
    function fn_addFile(){
        $("#d_file").append("<br>" + "<input type='file' name='file" + cnt + "' />");
        cnt++;
    }
</script>
 
</head>
<body>
    <h1>파일 업로드 하기</h1>
    <form method="post" 
          action=${pageContext.request.contextPath}/upload enctype="multipart/form-data">
        <label>아이디 : </label>
            <input type="text" name="id"><br>
        <label>이름 : </label>
            <input type="text" name="name"><br>
            <input type="button" value="파일 추가" onClick="fn_addFile()"><br>
            
            <div id="d_file">
            
            </div>
            <input type="submit" value="업로드">
    </form>
</body>
</html>
cs

 

파일 추가를 클릭하면 동적으로 파일 업로드를 추가합니다.

name 속성의 값으로 'file' + cnt를 성정함으로써 값을 다르게 해줍니다.

파일 업로드 시 encType은 반드시 multipart/form-data로 설정해야 합니다.

텍스트 박스에 ID를 입력 받아 전송합니다.

텍스트 박스에 이름을 입력 받아 전송합니다.

파일 추가를 클릭하면 동적으로 파일 업로드를 추가합니다.

자바스크립트를 이용해 <div> 태그 안에 파일 업로드를 추가합니다.

 

 

 

result.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과창</title>
</head>
<body>
<h1>업로드가 완료되었습니다.</h1>
<label>아이디 : </label>
<input type="text" name="id" value="${map.id}" readonly><br>
<label>이름 : </label>
<input type="text" name="name" value="${map.name}" readonly><br>
 
<div class="result-images">
    <c:forEach var="imageFileName" items="${map.fileList}">
        <img src=
        "${pageContext.request.contextPath}/download?imageFileName=${imageFileName}">
        <br><br>
    </c:forEach>
</div>
<a href="${pageContext.request.contextPath}/form">다시 업로드 하기</a>
</body>
</html>
cs

 

map으로 넘어온 매개변수 값을 표시합니다.

업로드한 파일들을 forEach문을 이용해 <img> 태그에 표시됩니다.

 

 

 실행결과 

 

아이디와 이름을 입력하고 파일을 선택해 업로드 버튼을 클릭합니다.

 

 

입력한 아이디와 이름이 나오고 첨부했던 사진도 출력됩니다.

 

 

썸네일 사용하기↓

https://maxtime1004.tistory.com/87

 

[JSP] 썸네일 사용하기

파일 업로드 글을 보고 와주세요!! 내용이 이어집니다!! 파일 업로드 보러가기↓↓↓↓↓ https://maxtime1004.tistory.com/86 [JSP] Spring 다중 파일 업로드 하기 CommonMultipartResolver 클래스를 이용하면 여..

maxtime1004.tistory.com

 

반응형
반응형

@RestController는 별도의 View를 제공하지 않은 채 데이터를 전달하므로 전달 과정에서 예외가 발생할 수 있습니다.

예외에 대해 좀 더 세밀한 제어가 필요한 경우 ResponseEntity 클래스를 사용하면 됩니다.

 

예를 들어 모바일 쇼핑몰 앱에 주문자가 몰리면서 서버에 부하가 걸렸습니다.

일정 시간이 지나도 주문이 처리되지 않으면 서버에서 ResponseEntity 클래스에 HTTP 상태 코드를 설정하여 앱으로 전송하도록 합니다.

그러면 앱에서 HTTP 상태 코드를 인식할 수 있는 기능을 이용해 주문 상태나 예외 발생을 알려줍니다.

 

 * 예제를 보고싶으신 분들은 표 밑을 확인하세요 

 

 

HTTP 상태 코드 표

그룹 코드 상수 설명
정보 응답 100 CONTINUE 상태가 괜찮으며 클라이언트가 계속해서
요청하거나 요청이 완료된 경우에는 무시해도
된다는 정보를 알려줌
101 SWITCHING_PROTOCOL 클라이언트가 보낸 upgrade 요청 헤더에 대한
응답으로, 서버에서 프로토콜을 변경할 것임을
알려줌
성공 응답 200 OK 요청이 성공적으로 완료되었다는 의미
201 CREATED 요청이 성공적이였으며 그 결과로 새로운
리소스가 생성되었다는 의미
202 ACCEPTED 요청을 수신했지만 그에 응하여 행동할 수
없다는 의미
리다이렉션 메시지 300 MULTIPLE_CHOICE 요청에 대해 하나 이상의 응답이 가능하다는 의미
301 MOVED_PERMANENTY 요청한 리소스의 URI가 변경되었다는 의미
302 FOUND 요청한 리소스의 URI가 일시적으로
변경되었다는 의미
303 SEE_OTHER 클라이언트가 요청한 리소스를 다른 URI에서
GET 요청을 통해 얻어야 할 경우
서버가 클라이언트로 직접 보내는 응답
클라이언트 오류 응답 400 BAD_REQUEST 이 응답은 잘못된 문법으로 인해 서버가
요청을 이해할 수 없다는 뜻
401 UNAUTHORIZED 인증되지 않았다는 의미
403 FORBIDDEN 클라이언트가 콘텐츠에 접근할 권리를 가지고
있지 않다는 의미
404 NOT_FOUND 서버는 요청 받은 리소스를 찾을 수 없다는 의미
서버 오류 응답 500 INTERNAL_SERVER_ERROR 처리할 수 없는 내부 오류가 발생했다는 의미
501 NOT_IMPLEMENTED 요청 메서드는 서버가 지원하지 않거나
처리할 수 없다는 의미
503 SERVICE_UNAVAILABLE 서버는 요청을 처리할 준비가 되지 않았다는 의미

 

 

MemberVO

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.myspring.pro29.ex01;
 
public class MemberVO {
    private String id;
    private String pwd;
    private String name;
    private String email;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "MemberVO [id=" + id + ", pwd=" + pwd + 
               ", name=" + name + ", email=" + email + "]";
    }
    
    
    
    
}
 
cs

 

 

TestController

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.myspring.pro29.ex01;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/test/*")
public class TestController {
    
    static Logger logeer = LoggerFactory.getLogger(TestController.class);
    
    @RequestMapping("/membersList2")
    public ResponseEntity<List<MemberVO>> listMembers2(){
        List<MemberVO> list = new ArrayList<MemberVO>();
        for(int i=0; i<10; i++){
            MemberVO vo = new MemberVO();
            vo.setId("lee" + i);
            vo.setPwd("123" + i);
            vo.setName("이순신" + i);
            vo.setEmail("lee" + i + "@test.com");
            list.add(vo);
        }
        return new ResponseEntity<List<MemberVO>>(list,HttpStatus.INTERNAL_SERVER_ERROR);
    }
    
    
    
}
 
cs

 

 

실행결과

 

 

F12를 눌러 확인해 보면 코드에서 Status Code가 우리가 보냈던 500 임을 확인할 수 있다.

반응형
반응형

 @RequestBody 

 

@RequestBody를 사용하면 브라우저에서 전달되는 JSON 데이터를 객체로 자동 변환 해줍니다.

 

 

 

JSONTest.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HOME</title>
<script src = "http://code.jquery.com/jquery-latest.js"></script>
<script>
 
$(function(){
    $("#checkJson").click(function(){ 
        var member = { 
                        id:"park",
                         name:"박하나",
                         pwd:"1234",
                         email:"park@test.com"
                     };
        $.ajax({
            type:"post",
            url:"${pageContext.request.contextPath}/test/info",
            contentType:"application/json",
            data:JSON.stringify(member),
            success:function(data, textStatus){
                alert("전송 성공");
            },
            error:function(data, textStatus){
                alert("전송 실패");
            },
            complete:function(data, textStatus){
                
            }
        });
    });
});
 
</script>
</head>
<body>
    <input type="button" id="checkJson" value="회원 정보 보내기"><br><br>
    <div id="output"></div>
</body>
</html>
cs

 

 

TestController

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.myspring.pro29.ex01;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/test/*")
public class TestController {
    
    static Logger logeer = LoggerFactory.getLogger(TestController.class);
    
    @RequestMapping(value="/info", method = RequestMethod.POST)
    public void modify(@RequestBody MemberVO vo) {
        System.out.println("vo : " + vo.toString());
        logeer.info(vo.toString());
    }
    
}
 
cs

 

 

HomeController

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.myspring.pro29;
 
import java.util.Locale;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        return "JSONTest";
    }
    
    
}
 
cs

 

 

MemberVO

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.myspring.pro29.ex01;
 
public class MemberVO {
    private String id;
    private String pwd;
    private String name;
    private String email;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "MemberVO [id=" + id + ", pwd=" + pwd + ", name=" + name 
                + ", email=" + email + "]";
    }
}
 
cs
 

 

회원정보 보내기 버튼을 클릭합니다.

 

 

 

전송 성공 창이 뜨고 console 창을 확인하면 전송된 data를 확인할 수 있습니다.

 

 

 

 

 @ResponseBody 

 

 

JSP가 아닌 텍스트나 JSON으로 결과 전송이 가능하다.

 

@ResponseBody는 메서드 호출 시 데이터를 전송하도록 설정합니다. 

 

메서드 호출 시 데이터를 전송하도록 설정합니다.

 

 

Map 데이터를 브라우저로 전송합니다.

 

 

메서드 호출 시 home.jsp를 브라우저로 전송합니다.

반응형
반응형

 

TestController

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.myspring.pro29.ex01;
 
 
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/test/*")
public class TestController {
 
    
    @RequestMapping(value="notice/{num}", method=RequestMethod.GET)
    public int notice(@PathVariable("num"int num) throws Exception{
        return num;
    }
    
}
 
cs

 

 

 

 실행 결과 

 

반응형
반응형

@RestController 시작 전 준비과정이 궁금하다면?

https://maxtime1004.tistory.com/80

 

[JSP] @RestController 문자열 전달하기

REST의 정의가 궁금하다면? https://maxtime1004.tistory.com/79 [JSP] REST 란? ˙ REST란? Representational State Transfer의 약자로, 하나의 URI가 고유한 리소스를 처리하는 공통 방식입니다. 예를 들어 /boa..

maxtime1004.tistory.com

 

 

 

MemberVO

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.myspring.pro29.ex01;
 
public class MemberVO {
    private String id;
    private String pwd;
    private String name;
    private String email;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "MemberVO [id=" + id + ", pwd=" + pwd + 
                ", name=" + name + ", email=" + email + "]";
    }
    
}
 
cs

 

 

TestController

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.myspring.pro29.ex01;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/test/*")
public class TestController {
 
    @RequestMapping("/hello")
    public String hello() {
        return "Hello REST!!!";
    }
    
    @RequestMapping("/member")
    public MemberVO member() {
        MemberVO vo= new MemberVO();
        vo.setId("hong");
        vo.setPwd("1234");
        vo.setName("홍길동");
        vo.setEmail("hong@naver.com");
        return vo;
    }
    
    @RequestMapping("/membersList")
    public List<MemberVO> listMembers(){
        List<MemberVO> list = new ArrayList<MemberVO>();
        for(int i=0; i<10; i++) {
            MemberVO vo= new MemberVO();
            vo.setId("hong" + i);
            vo.setPwd("123" + i);
            vo.setName("홍길동" + i);
            vo.setEmail("hong" + i + "@naver.com");
            list.add(vo);
        }
        return list;
    }
    
    @RequestMapping("/membersMap")
    public Map<Integer, MemberVO> membersMap(){
        Map<Integer, MemberVO> map = new HashMap<Integer, MemberVO>();
        for(int i=0; i<10; i++) {
            MemberVO vo= new MemberVO();
            vo.setId("hong" + i);
            vo.setPwd("123" + i);
            vo.setName("홍길동" + i);
            vo.setEmail("hong" + i + "@naver.com");
            map.put(i, vo);
        }
        return map;
    }
    
}
 
cs

 

 

 List 객체 전달 화면 

 

 Map 객체 전달 화면 

 

반응형
반응형

@RestController 시작 전 준비과정이 궁금하다면?

https://maxtime1004.tistory.com/80

 

[JSP] @RestController 문자열 전달하기

REST의 정의가 궁금하다면? ˙ RestController 이용하여 REST 기능 구현하기 Spring Legacy Project > MVC 로 프로젝트를 생성합니다. pom.xml을 열어 스프링 버전을 4.1.1로 변경 후 저장합니다. 1 2 3 4 5 6 7..

maxtime1004.tistory.com

 

 

 

pom.xml에 해당 코드를추가합니다.

 

 

 

MemberVO

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.myspring.pro29.ex01;
 
public class MemberVO {
    private String id;
    private String pwd;
    private String name;
    private String email;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    
    @Override
    public String toString() {
        String info = id + ", " + pwd + ", " + name + ", " + email;
        return info;
    }
        
}
 
cs

 

 

 

TestController

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.myspring.pro29.ex01;
 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/test/*")
public class TestController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello REST!!";
    }
    
    @RequestMapping("/member")
    public MemberVO member() {
        MemberVO vo = new MemberVO();
        vo.setId("hong");
        vo.setPwd("1234");
        vo.setName("홍길동");
        vo.setEmail("hong@test.com");
        
        return vo;
    }
}
 
cs

 

 실행결과 

 

반응형
반응형

REST의 정의가 궁금하다면?

https://maxtime1004.tistory.com/79

 

[JSP] REST 란?

˙ REST란?  Representational State Transfer의 약자로, 하나의 URI가 고유한 리소스를 처리하는 공통 방식입니다. 예를 들어 /board/112로 요청할 경우 이는 게시글 중 112번째 글을 의미합니다. 그리고 전송..

maxtime1004.tistory.com

 

 

˙ RestController 이용하여 REST 기능 구현하기 

 

Spring Legacy Project > MVC 로 프로젝트를 생성합니다.

 

 

pom.xml을 열어 스프링 버전을 4.1.1로 변경 후 저장합니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.myspring.pro29.ex01;
 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("/test/*")
public class TestController {
    
    @RequestMapping("/hello")
    public String hello() {
        return "Hello REST!!";
    }
}
 
cs

 

TestController.java를 생성 후 코드를 작성합니다.

 

 

서버에 등록해주고 Web Modules에서 다음과 같이 변경합니다.

 

 

해당 주소로 접근하면 다음과 같은 화면이 나타납니다.

 

 

 

˙ 전송된 데이터의 종류 알아보기  

 

 

F12 버튼을 누른 후 Network를 클릭 후 새로고침을 합니다.

Name에 hello를 클릭하고 Header를 클릭하면 Content-Type을 확인할 수 있습니다.

반응형

+ Recent posts