[Study #28] Spring

    반응형

     

     

    01. 오류 원인

     

    01) 'team.jsp' 코드에서 아래와 같은 코드가 없을 경우 오류 발생

    if (list != null) {
    }

    오류 발생

     

    02) 오류의 원인

    • 'list'가 존재하지 않은 상태에서 'list'의 size를 돌려서 오류 발생
    • 팀 접속 → 서블릿 → doGet : Get 방식으로 들어오면 list가 존재하지 않음 (list는 doPost에 있음)
    • 처음에는 doGet으로 들어오기 때문에 없는 상태로 진행되고 doPost를 통과해야 list가 나옴

     

    03) 위 코드를 다시 실행하면 적상 작동됨

     

    02. Spring 기본 설정 변경

     

    01) 파일 생성하기

     

     

    02) 톰캣 연결해주기

     

     

     

     

    연결 완료

     

    03) 'UTF-8'로 설정 변경

     

     

     

    04) 'JDK' 설정 변경

     

     

     

     

     

    05) 글꼴 바꾸기

     

     

     

    원하는 글꼴로 변경

     

     

    05) 'pom.xml'에서 버전 변경하기

     

     

    06) 'mariaDB' 연결하기

    • 아래의 코드를 복사/붙여넣기
    <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>3.0.8</version>
    </dependency>

     

    완성 화면

     

    mariaDB 들어간 화면

     

    번외) mariaDB 버전을 바꾼다면

     

    버전이 바뀔 때마다 파일이 생성돼서 용량이 많이 차지함

     

     

    03. 'HomeController' 파일

     

    package com.peazh.web;
    
    import java.text.DateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    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;
    import org.springframework.web.servlet.ModelAndView;
    
    @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) {
    		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";
    	}
        
    	// 갈 수 있는 jsp 파일명 바로 적어주기
    	// 서블릿처럼 컨트롤러 통과해야함 (서블릿처럼)
    	// home.jsp로 이동하기
            @RequestMapping(value="/home")
            public String home() {
            	return "home2";
            }
    
            @RequestMapping("/main")
            public String main() {
            	return "main";
            }
    }

     

     

     

    04. 'home2.jsp' 파일

     

    01) jsp 파일 생성

     

     

     

     

    02) 코드 작성

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h1>홈입니다.</h1>
    	한글도 되네요<br>
    </body>
    </html>

     

     

    03) 실행 화면

    home 화면

     

    main 화면

     

     

     

    05. 'HomeController'와 'main.jsp' 연결하기

     

    • 'HomeController' 코드 수정하기
    //modelandView라는 박스 안에 값들을 담아서 보낸다고 생각하면 됨
    @RequestMapping("/main")
    public ModelAndView main() {
    ModelAndView mv = new ModelAndView("main");// main은 jsp파일명
    mv.addObject("name", "홍길동");
    return mv;
    }

     

    • ' main.jsp' 코드 수정하기
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>main</h1>
    ${name }
    </body>
    </html>

     

    • 실행 화면

    실행 화면

     

     

    06. jsp 파일에서 코드 사용하기

     

    01) 상단에 코드 추가하기

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

     

    02) 대표적인 코드

    • for문 : <c:forEach begin="시작하는 값" end="끝나는 값" var="변수" step="증가하는 값"></c:forEach>
    • if문 : <c:if test="조건문"></c:if>
    • choose문 : <c:choose>
                                          <c:when test="조건문">{참일 때 실행할 문장}</c:when>
                                           <c:otherwise>{거짓일 때 실행할 문장}</c:otherwise >
                        </c:choose>
    • 변수 선언 방법
       방법 1) <c:set var="k" value="케이"/>
       방법 2) <c:set var="y">와이</c:set>
    • 변수 삭제 : <c:remove/>
    • 출력 방법
       방법 1) ${k }
       방법 2) <c:out value="${k }"></c:out>
    == eq equals
    != ne not equals
    < lt less than
    > gt greater than
    <= le less than or equls to
    >= ge greate or equals to

    비교 표현식

     

     

    [ 예시 1 ] 1부터 10까지 출력

    <c:forEach begin="1" end="10" var="i" >
    ${i }<br>
    </c:forEach>

     

     

    [ 예시 2 ] 1부터 10까지 홀수만 출력

    <c:forEach begin="1" end="10" step="2" var="i" >
    ${i }<br>
    </c:forEach>

     

     

    [ 예시 3 ] 3만 출력

    <c:forEach begin="1" end="10" var="i" >
    <c:if test="${i == 3}">
    i는 3입니다.<br>
    ${i }<br>
    </c:if>
    </c:forEach>

     

     

    [ 예시 4 ] 3보다 크면 출력

    <c:forEach begin="1" end="10" var="i" >
    <c:if test="${i gt 3}">
    ${i }<br>
    </c:if>
    </c:forEach>

     

    [ 예시 5 ] k값 출력

    <c:set var="k" value="케이"/>
    ${k }
    <br>
    
    <!-- 글자 케이를 찍어줌 -->
    <c:out value="k"></c:out>
    
    <!-- k의 변수를 찍어줌 -->
    <c:out value="${k }"></c:out>
    
    <!-- k라는 변수 삭제 -->
    <c:remove var="k"/>
    ${k }

     

     

    07. 리스트 만들어서 출력하기

     

    01) 'HomeController' 코드에 리스트 만들기

    // 리스트 만들어주기 (list = 10 ~ 100)
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 10; i < 101; i+=10) {
    list.add(i);
    }
    
    // list 보내기
    mv.addObject("list", list);

     

    02) 'main'에서 list 출력하기

    ${list }

     

     

     

     

     

     

     

     

    반응형

    댓글