티스토리 뷰

학습정리-12-15.txt
0.00MB

 

 

1.pom.xml 에 대하여 설명하시오.

스프링 프로젝트를 접하면 개발자들은 제일 먼저 pom.xml을 본다. 하지만 이 pom.xml은 사실 프로젝트랑 관련이 없다. 정확하게 말하자면 환경설정과 관련되어있다.  (보통 pom.xml -> web.xml -> root-context.xml 순서로 본다...)

 

pom.xml은 Maven과 관련이 있다.

Maven(빌드 tool : 컴파일, 테스팅, .jar , .war를 만드는 것을 도와주는 것을 빌드 tool이라고 한다. 즉, 컴파일부터 배포까지를 빌드라고 한다.

→  pom.xml (라이브러리를 관리) 

 

 

이전에 jsp 쓸때는 .jar파일을 매번 lib폴더 안에 직접 넣어줘야 했다. 하지만 pom.xml과 Maven을 이용하면 이런 번거로움을 없앨 수 있다. 

아래는 pom.xml에서 일부 발췌해 온 코드이다.

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
    <properties>
        <java-version>1.6</java-version>
        <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>
    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <!-- Exclude Commons Logging in favor of SLF4j -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                 </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
cs

<dependency>안에 적어진 내용이 해당 라이브러리를 가져오는 코드이다. (여기서 <dependency>는 의존성과 관계가 없고 그냥 파일을 가져오는 문구라고 보자....)

 

pom.xml에 위에 처럼 코드를 작성해 주면 Maven repsoitory가 알아서 해당 라이브러리를 다운 받아서 폴더에 넣어준다. 추가하고 싶은 라이브러리가 있다면 https://mvnrepository.com/ 에서 검색해 코드를 가져와 복사 붙여넣기 해주면 된다. 

Maven repsoitory가  kosmo.m2 폴더에 pom.xml에 코드가 작성되어 있는데로  라이브러리에 .jar파일을 넣어줬다!!

 

★ 스프링에서 뭔가 다운로드가 진행될 때는 하단에 초록색 바가 보이면 절대 아무것도 건드리지 말기! (건드리면 높은 확률로 오류가 발생하는데 이 오류 해결이 안ㄷ....)

★ 라이브러리를 다운 받으면 꼭 프로젝트 폴더에서 마우스 우클릭 →  maven → update project 를 해줘야 한다. (alt + F5)

 

 

 

 

2.아래를 설명하시오.
-@RequestMapping

특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의를 한다.

이때 들어온 요청을 특정 메소드와 맵핑(연결)하기 위해 사용하는 것이 @RequestMapping이다.

@RequestMapping에서 가장 많이사용하는 부분은 value와 method이다. 

value는 요청받을 url을 설정하게 된다.

method는 어떤 요청으로 받을지 정의하게 된다.(GET, POST, PUT, DELETE 등)

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
    // 주소창에 /로 치고 들어오면 함수를 실행하라 (http://localhost:8282/ex/)
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate);
        
        return "home"// home.jsp
    }
    
    @RequestMapping("/board/view"// http://localhost:8282/ex/board/view
    public String view() {
        System.out.println("view()");
        return "board/view"// board/view.jsp
    }
    
    @RequestMapping("/board/tel"// http://localhost:8282/ex/board/tel
    public String tel() {
        System.out.println("tel()");
        return "board/tel"// board/tel.jsp
    }
    
    @RequestMapping("/board/phone"// http://localhost:8282/ex/board/phone
    public String phone() {
        System.out.println("phone()");
        return "board/phone"// board/phone.jsp
    }
    
    @RequestMapping("/list"// http://localhost:8282/ex/list
    public String list() {
        System.out.println("list()");
        return "list"// board/list.jsp
    }    
cs

 


-@Controller

Controller의 역할을 수행 한다고 명시(해당 클래스를 Controller로 사용한다고 Spring FrameWork에 알린다.)

필요한 비즈니스 로직을 호출하여 전달할 모델(Model)과 이동할 뷰(View) 정보를 DispatherServlet에 반환 한다.

(Controller에 대해 간단히 말하자면 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 한다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Controller
public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    /**
     * Simply selects the home view to render by returning its name.
     */
    // 주소창에 /로 치고 들어오면 함수를 실행하라 (http://localhost:8282/ex/)
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate);
        
        return "home"// home.jsp
    }
}
cs

 


-Model

Controller의 메소드는 Model이라는 타입의 객체를 파라미터로 받을 수 있다.
순수하게 JSP Servlet으로 웹 어플리케이션을 만들 때 request나 session 같은 내장객체에 정보를 담아 jsp에 넘겨주었는데 Spring에서는 Model을 사용한다.
즉, request.setAttribute() 와 비슷한 역할을 한다.

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
    @RequestMapping("/board/content"
    public String content(Model model) {
        System.out.println("content()");
        
        model.addAttribute("id"30);
        // 값을 넘길 때는 model을 사용한다!
        // model을 사용하면 알아서 메모리에 방을 잡아 올려준다...
        // 그런데 그걸 누가...?
        // Model 객체가...안에 다 함수가 구현되어있다.
        
        model.addAttribute("pw""1234"); // ""도 사용가능...
 
        return "board/content"
    }
    
    @RequestMapping("/board/reply"
    public ModelAndView reply() {    
        System.out.println("reply()");
        
        ModelAndView mv = new ModelAndView();
        mv.addObject("id"30);
        mv.setViewName("board/reply"); //  '/'를 넣지 않도록 주의!
        
        return mv; // 이번에는 주소를 객체이 담아서 반환
    }
cs

 

content.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
    <title>Home</title>
</head>
<body>
<h1>
    content.jsp 입니다.<br>
    id : ${id}<br> <!-- model.addAttribute로 넘긴 값 받아오기! -->
    pw : ${pw}<br>
</h1>
 
</body>
</html>
cs

 

reply.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
    <title>Home</title>
</head>
<body>
<h1>
    reply.jsp 입니다.<br>
    id : ${id}<br>
</h1>
 
</body>
</html>
cs

 

 

3.maven repository 란?

개발에 필요한 라이브러리를 프로그래머가 직접 다운받아 프로젝트에 추가했었다.

이제는 pom.xml에 기술함으로서 쉽게 라이브러리를 사용할 수 있게 되었다. maven repository덕분이다.

maven repository는 일종의 라이브러리 보관 장소(=프로그램 보관 장소)이다.

 

 


4. JS배열에서 mutable 함수 , immutable 함수를 구분하시오.

원본 객체가 변경되는 것이 mutable 함수

원본 객체는 변하지 않고 원본 객체를 복사해서 복사본을 만들어 변경하는 것이 immutable 함수이다.

 

  • immutable : concat(), join()
  • mutable : sort(), reverse(), push(), shift()
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
75
76
        <script>
            // concat - 불변
            let varArrFir = new Array("ABC""DEF""GHI""JKL");
            let varArrSec = new Array("가나다""라마바""사아차""카타파");
            let varArrRes = varArrFir.concat(varArrSec); 
            // concat함수는 immutable..불변이기 때문에 원본을 훼손하지 않는다.
            // 그래서 합치는 것이 아니라 새로 만든다...
 
            console.log("varArrFir : " + varArrFir + " / " + varArrFir.length);
            // varArrFir : ABC,DEF,GHI,JKL / 4
 
            console.log("varArrSec : " + varArrSec + " / " + varArrSec.length);
            // varArrSec : 가나다,라마바,사아차,카타파 / 4
 
            console.log("varArrRes : " + varArrRes + " / " + varArrRes.length);
            // varArrRes : ABC,DEF,GHI,JKL,가나다,라마바,사아차,카타파 / 8
 
            
            // join - 불변
            let varArrJoin = new Array("AB""CD""EF""HI");
            console.log("varArrJoin : " + varArrJoin + ":" + varArrJoin.length);
            // varArrJoin : AB,CD,EF,HI:4
            console.log("varArrJoin : " + varArrJoin.join() + ":" + varArrJoin.length);
            // varArrJoin : AB,CD,EF,HI:4
            console.log("varArrJoin : " + varArrJoin + ":" + varArrJoin.length);
            // varArrJoin : AB,CD,EF,HI:4
 
            console.log("varArrJoin : " + varArrJoin.join(" | "));
            // varArrJoin : AB | CD | EF | HI
            console.log("varArrJoin : " + varArrJoin + ":" + varArrJoin.length);
            // varArrJoin : AB,CD,EF,HI:4
 
            
            // sort() - 정렬(가변)
            let varArrSort = new Array("E""B""A""C""D");
            console.log("varArrSortBefore : " + varArrSort);
            // varArrSortBefore : E,B,A,C,D
            console.log("varArrSort : " + varArrSort.sort());
            // varArrSort : A,B,C,D,E
            console.log("varArrSortAfter : " + varArrSort);
            // varArrSortAfter : A,B,C,D,E
 
 
            // reverse - 거꾸로(가변)
            let varArrReverse = new Array("E""B""A""C""D");
            console.log("varArrReverseBefore : " + varArrReverse);
            // varArrReverseBefore : E,B,A,C,D
            console.log("varArrReverse : " + varArrReverse.reverse());
            // varArrReverse : D,C,A,B,E
            console.log("varArrReverseAfter : " + varArrReverse);
            // varArrReverseAfter : D,C,A,B,E
 
 
            // push - 배열 끝에 밀어 넣는다.(가변)
            let varArrPush = new Array("ABC""DEF");
            console.log("varArrPushBefore : " + varArrPush);
            // varArrPushBefore : ABC,DEF
            console.log("varArrPush : " + varArrPush.push("가나다""마바사"));
            // varArrPush : 4
            console.log("varArrPushAfter : " + varArrPush);
            // varArrPushAfter : ABC,DEF,가나다,마바사
 
            // shift - 앞에서 부터 하나씩 날린다, pop - 뒤에서 부터 하나씩 날린다.
            let varArrShiftPop = new Array("가""나""다""라""마");
            console.log("varArrShiftPop : " + varArrShiftPop);
            // varArrShiftPop : 가,나,다,라,마
            console.log("varArrShiftPop.shift() : " + varArrShiftPop.shift());
            // varArrShiftPop.shift() : 가
            console.log("varArrShiftPop : " + varArrShiftPop);
            // varArrShiftPop : 나,다,라,마
 
            console.log("varArrShiftPop.pop() : " + varArrShiftPop.pop());
            // varArrShiftPop.pop() : 마
            console.log("varArrShiftPop : " + varArrShiftPop);
            // varArrShiftPop : 나,다,라
        </script>
cs

 

 

 


5아래를 Spring으로 짜시오.
- spring_idpw 스프링 legacy 프로젝트 생성
 ~~~/ex/result 로 접속 하면  result.jsp 에 id:abcd pw:1234 출력 되도록함.  

 

HomeController.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
@Controller
public class HomeController {
 
    /*
    @RequestMapping("/result")
    public String result(Model model) {
        System.out.println("result()");
        
        model.addAttribute("id", "abcd");
        model.addAttribute("pw", 1234);
        
        return "result";
    }
    */
    
    @RequestMapping("/result")
    public ModelAndView result() {
        System.out.println("result()");
        
        ModelAndView mv = new ModelAndView();
        mv.addObject("id""abcd");
        mv.addObject("pw""1234");
        mv.setViewName("result"); // 빼먹지 말고 꼭 넣어주기...
        
        return mv;
    }
    
}
 
cs

 

result.jsp

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h2>result()</h2>
    id : ${id}<br>
    pw : ${pw}<br>
</body>
</html>
cs


50번
알고리즘: int a = 10 int b =20 두수를 바꾸기
배열 또는 List 에 3, 4, 5, 6, 10 입력 Max 값 구하기

public class TimeTest {

	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		
		System.out.println(a + " / " + b);
		
		int temp = a;
		a = b;
		b = temp;
		
		System.out.println(a + " / " + b);

		
		int[] arr = {3, 4, 5, 6, 10};
		int max = arr[0];
		
		for (int i : arr) {
			if(max < i)
				max = i;
		}
		
		System.out.println("max : " + max);		
		
	}
}

 



51번
로또 번호를 Set 을 활용하여 짜시오

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class HashSetRottoTest {

	public static void main(String[] args) {
		Set<Integer> set = new HashSet<>();
		
		/*
		while(set.size() != 6) {
			set.add((int)(Math.random()*45 + 1));
		}
		*/
		
		/*
		while(set.size() != 6) {
			int num = (int)(Math.random() * 45 + 1);
			set.add(num);
		}
		*/
		
		for(int i = 0; i < 6; i++) {
			set.add((int)(Math.random()*45 + 1));
		}
		
		for(Iterator<Integer> itr = set.iterator(); itr.hasNext();)
			System.out.print(itr.next() + "\t");
		
		
	}
}

 

 


3번(자바스크립트) 
JS로 국영수 입력받아, 총점과 평균을 출력하시오.

            /*국영수 점수 입력받아서 콘솔로 합계 평균 출력하시오.*/
            let kor = prompt("국어 점수를 입력하세요.", 0);
            console.log("국어 : " + kor);
            let eng = prompt("영어 점수를 입력하세요.", 0);
            console.log("영어 : " + eng);
            let math = prompt("수학 점수를 입력하세요.", 0);
            console.log("수학 : " + math);

            let sum = Number(kor) + Number(eng) + Number(math);
            console.log("합계 : " + sum);

            let avg = sum / 3.0; // 실수 타입으로 출력하고 싶다면..
            console.log("평균 : " + avg);

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함