반응형
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 버전을 바꾼다면
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) 실행 화면
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 }
반응형
댓글