Study

[Study #28] Spring

PEAZH 2023. 7. 11. 09:19
반응형

 

 

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 }

 

 

 

 

 

 

 

 

반응형