반응형

# 스프링 부트

## 파일 생성

  • sts 실행 > new > spring starter project 클릭
  • Maven, Java version 8, War파일, 언어는 java 선택 후 next
  • lombok, Spring Boot DevTools, spring web, MyBatis Framework, MySQL Driver 선택 후 finish 하면 Maven이 해당 파일들을 c드라이브 내 사용자 > .m2 > repository 경로에 설치해준다. ( 초기에는 설치하는데 시간이 오래 걸리는데, 이후 새 프로젝트 실행 시 기존에 받아진것으로 이용하기 때문에 시간이 많이 걸리지 않는다. 단, 해당 폴더 내에서 삭제 된 경우 오래 걸린다. )
  • jar 파일 : 톰캣 없이 실행될 수 있는 구조
  • war 파일 : 톰캣 있어야 실행될 수 있는 구조
  • 스프링 프로젝트 파일 실행의 경우 Alt + Shift + X 후 B 입력하여 Runt Spring Boot App으로 실행

 

## 각종 자료형 별 출력

package com.sbs.lhh.at.controller;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Controller
public class HomeController {
	
	@RequestMapping("/home/boolean")
	@ResponseBody
	public boolean showBoolean() {
		return true;
	}
	
	@RequestMapping("/home/char")
	@ResponseBody
	public char showChar() {
		return 'a';
	}
	
	@RequestMapping("/home/byte")
	@ResponseBody
	public byte showByte() {
		return 127;
	}
	
	@RequestMapping("/home/short")
	@ResponseBody
	public short showShort() {
		return Short.MAX_VALUE;
	}
	
	@RequestMapping("/home/int")
	@ResponseBody
	public int showInt() {
		return Integer.MAX_VALUE;
	}
	
	@RequestMapping("/home/long")
	@ResponseBody
	public long showLong() {
		return Long.MAX_VALUE;
	}
	@RequestMapping("/home/float")
	@ResponseBody
	public float showFloat() {
		return 3.14f;
	}
	@RequestMapping("/home/double")
	@ResponseBody
	public double showDouble() {
		return Math.PI;
	}
	
	@RequestMapping("/home/intArr")
	@ResponseBody
	public int showintArr() {
		int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		
		return arr[0];
	}
	
	@RequestMapping("/home/intList")
	@ResponseBody
	public List<Integer> showIntList() {
		
		List<Integer> list = new ArrayList<>();
		
		list.add(10);
		
		return list;
	}
	
	@RequestMapping("/home/article")
	@ResponseBody
	public Article showArticle() {		
		return new Article(1, "2020-10-10", "hi", "hello");
	}
	
	@RequestMapping("/home/articleList")
	@ResponseBody
	public List<Article> showArray() {
		List<Article> list = new ArrayList<>();
		list.add(new Article(1, "2020-11-11", "aaa", "aaaa"));
		list.add(new Article(2, "2020-12-12", "bbb", "bbbb"));
		
		return list;
	}
		
	// Map 의 경우 순서 기억하지 못함
	@RequestMapping("/home/map")
	@ResponseBody
	public Map<String, Object> showMap() {
		Map<String, Object> map = new LinkedHashMap<>();
		map.put("철수나이", 11);
		map.put("영희나이", 12);
		map.put("영수나이", 15);
		
		return map;
	}
	
}

@NoArgsConstructor // 인자 없는 생성자 만들어 줌
@AllArgsConstructor // 인자 있는 생성자 만들어 줌
@Data // getter, setter, toString 만들어줌
class Article {
	public int id;
	public String regDate;
	public String title;
	public String body;
}

 

## 스프링 부트 JSP 연결

### jsp 의존성 추가

  • https://mvnrepository.com/에서 검색
  • pom.xml 파일 내 dependencies(의존성) 내에 아래 입력 후 저장하면 자동으로 jsp 엔진을 받아준다.
  • 이때 주의할 점! 오타..
  • 필요한 의존성은 검색해서 붙여넣기.
  • 의존성 삽입 후 확인은 Maven Dependencies내에서 확인 가능하다.
<!-- JSP 엔진 -->
<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
  • 설치 후 application.yml에 아래 코드 입력하여 설정해준다.
spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp

### jsp 파일 생성

  • 패키지 중간에 src > main 우클릭 후 폴더 생성 WEB-INF/jsp/home 입력하여 폴더 생성(입력할 경우 폴더 3개 생김)
  • 생성된 home 폴더 우클릭 후 new > other > jsp 클릭 후 이름은 main.jsp로 생성

### 연결확인

  • 재시작 후 @RequestMapping("/home/main")에 적힌 주소로 들어가서 잘 연결되었는지 확인.

### 패키지 경로

### 각 파일 별 코드

  • HomeController.java
package com.sbs.lhh.at.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {
	@RequestMapping("/home/main")
	public String showMain() {
		return "home/main";
	}		
}
  • application.yml : 우클릭 후 Convert .properties to .yaml 클릭하여 yml로 변경
server:
  port: 8051
spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.2.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.sbs.lhh</groupId>
	<artifactId>at</artifactId>
	<version>1</version>
	<packaging>war</packaging>
	<name>at</name>
	<description>at</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<!-- JSP 엔진 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>
  • main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>메인</title>
</head>
<body>
	<h1>메인 페이지</h1>
</body>
</html>

 

## Lombok, 명령어

  • @RequestMapping : 사이트 주소 설정 ( 예) @RequestMapping("/article/list") )
  • @ResponseBody : return 값을 브라우저에 출력
  • @NoArgsConstructor : 인자 없는 생성자 생성
  • @AllArgsConstructor  : 인자 있는 생성자 생성
  • @Data : getter, setter, toString 생성
  • @Autowired : 자동으로 연결되도록 설정, 연결되는 쪽에는 @Service 혹은 @Component 입력하여 사용
  • @Controller : Controller 임을 표시, import 진행 시 해당 패키지 생성
Autowised 사용 예시(ArticleController 와 ArticleService 연결)

1. ArticleController 파일
package com.sbs.lhh.at.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.sbs.lhh.at.articleService.ArticleService;

@Controller
public class ArticleController {
	@Autowired
	private ArticleService articleService;
	
	@RequestMapping("/article/list")
	public String showList() {	
		
		int count = articleService.getCount();
		System.out.println(count);
		
		return "article/list";
	}		
}


2. ArticleService 파일
package com.sbs.lhh.at.articleService;

import org.springframework.stereotype.Service;

// Service == Componet  둘다 사용가능 
@Service
public class ArticleService {
	public int getCount() {
		return 5;
	}
}

 

## 스프링 부트 명령어 관련

  • 스프링 부트에서는 HttpServletRequest req 바로 사용가능, 이것보다 진보된 게 Model model
반응형
반응형

# 배경 이미지 넣기, 크기 조절하기

## 배경 이미지 넣기

  • 배경에 이미지를 넣을 때는 background: url(); 을 사용한다.
사용방법)
background:url(경로);

예시)
background:url("/blog/resource/img/chat.jpg") no-repeat;

 

## 배경 이미지 크기 조절하기

  • 배경에 넣은 이미지의 크기를 조절할 땐 px로 크기를 설정해 줄 수 있다.
  • 그 외에 설정하는 방법으로는 cover, contain 등이 있다.
  • contain : 배경 이미지의 가로, 세로 모두 요소보다 작을 경우, 가능한 크게 조정된다. ( 이미지의 가로, 세로 비율 유지 )
  • cover : 배경 이미지의 가로, 세로 길이 모두 요소보다 클 경우, 가능한 작게 조정된다. ( 이미지의 가로, 세로 비율 유지 )
예시)
background-size: cover;

 

## 배경 이미지 반복 여부 설정

  • repeat : 가로 방향, 세로 방향으로 반복
  • repeat-x : 가로 방향으로 반복
  • repeat-y : 세로 방향으로 반복
  • no-repeat : 반복하지 않는다.
  • initial : 기본값으로 설정
  • inherit : 부모 요소의 속성값을 상속받는다.
반응형

'프로그래밍 > 자바, JDBC' 카테고리의 다른 글

자바 현재 시간, 날짜 구하기  (0) 2020.07.31
스프링 부트1  (0) 2020.07.28
자바 게시판 페이징 처리  (0) 2020.07.26
JSTL  (0) 2020.07.24
자바스크립트 비밀번호 암호화(SHA256)  (0) 2020.07.22
반응형

# 자바 게시판 페이징 처리

## 단순히 페이징만 할 경우(페이지 하단에 나오는 페이지 번호 출력 제한없이)

페이지 당 게시물 10개 출력 / 100개 넘는 게시물이 존재하여 페이징 버튼이 11개 출력

### .java 파일

  • itemsInAPage : 한 페이지에 출력 할 게시물 수
  • totalCount : 전체 게시물 수
  • totalPage : 출력 할 전체 페이지 수
int page = 1; // 시작 페이지

int itemsInAPage = 10;
int totalCount = db 등에서 전체 게시물 카운트해서 값 가져오기.
int totalPage = (int) Math.ceil(totalCount / (double) itemsInAPage);
  • 위 상태에서 jsp에서 값을 사용하기 위해 setAttribute 진행 (req는 request)
req.setAttribute("totalCount", totalCount);
req.setAttribute("totalPage", totalPage);
req.setAttribute("page", page);

### .jsp 파일

  • java 파일과 연결된 jsp 파일
  • 페이지에 접근하는 세부 코드(링크?)는 짜여진 코드에 따라 다르므로 참고만 하기
<table>
	<tr>
    	// 이전 페이지 버튼
    	if ( page != 1 ) {
        	int k = page;
			<td><a href="?page=<%=k-1 %>">이전</a></td>
		}
        
        for ( int i = 1; i <= totalPage; i++ ) {
        	<td><a href="?page=<%=i %>"><%=i %></a></td>
        }
    
    	// 다음 페이지 버튼
    	if ( page != totalPage ) {
        	int k = page;
			<td><a href="?page=<%=k+1 %>">다음</a></td>
		}
    </tr>
</table>

 

## 기존 페이징 코드에 + 페이징 버튼 제한

위와 마찬가지로 페이지 당 게시물 10개 출력 / 100개 넘는 게시물이 존재하여 페이징 버튼이 11개 출력되지만, 페이징 버튼 출력을 5개로 제한하여 한번에 5개씩 출력

### .java 파일

  • pageCount : 한번에 출력될 페이징 버튼 수
    startPage : 페이징 버튼 시작 값
    endPage : 페이징 버튼 종료 값
int page = 1; // 시작 페이지

int itemsInAPage = 10;
int totalCount = db 등에서 전체 게시물 카운트해서 값 가져오기.
int totalPage = (int) Math.ceil(totalCount / (double) itemsInAPage);


int pageCount = 5;
int startPage = ((page - 1) / pageCount) * pageCount + 1;
int endPage = startPage + pageCount - 1;

// 추가로 조건 설정
if( totalPage < page) {
page = totalPage;
}

if ( endPage > totalPage) {
endPage = totalPage;
}
  • 위 상태에서 jsp에서 값을 사용하기 위해 setAttribute 진행 (req는 request)
req.setAttribute("totalCount", totalCount);
req.setAttribute("totalPage", totalPage);
req.setAttribute("page", page);

req.setAttribute("pageCount", pageCount);
req.setAttribute("startPage", startPage);
req.setAttribute("endPage", endPage);

### .jsp 파일

  • java 파일과 연결된 jsp 파일
  • 페이지에 접근하는 세부 코드(링크?)는 짜여진 코드에 따라 다르므로 참고만 하기
<table>
	<tr>
    	// 이전 페이지 버튼
    	if ( page != 1 ) {
        	int k = page;
			<td><a href="?page=<%=k-1 %>">이전</a></td>
		}
        
        for ( int i = starPage; i <= endPage; i++ ) {
        	<td><a href="?page=<%=i %>"><%=i %></a></td>
        }
    
    	// 다음 페이지 버튼
    	if ( page != totalPage ) {
        	int k = page;
			<td><a href="?page=<%=k+1 %>">다음</a></td>
		}
    </tr>
</table>

 

반응형
반응형

# JSTL

## 변수 선언

// 변수 선언
<c:set var="변수이름" value="값"/>

// 변수 값 증가
<c:set var="변수이름" value="${변수이름+1}"/>

 

## if문

// if문
<c:if test="조건">
</c:if>

예)
<c:if test="${isLogined}">
</c:if>

- ${변수} 가 참이면 실행 된다.
- ${변수 == true} , ${변수 eq true} 로 입력 가능하다.
- ${변수 != true} , $[변수 ne true] 로 입력 가능하다.


// if ~ else문
<c:choose>
	<c:when test=""> // if
	
	</c:when>
	<c:otherwise> // else
	
	</c:otherwise>
</c:choose>

 

## for 반복문

  • forEach 태그에는 꼭 입력해야 하는 속성 : items, var
  • items 속성 : 반복할 값들이 있는 배열과 리스트명
  • var 속성 : forEach문 안에서 사용할 배열의 변수명
  • varStatus 속성 : 인덱스를 사용할 수 있는 변수명
<c:forEach var="변수이름" items="반복할 객체명" begin="시작값" end="마지막값" step="증가값" varStatus="반복상태 변수명">

- 예제) 단순히 i를 1 ~ 100까지 반복 후 출력
<c:forEach var="i" begin="1" end="100" step="1">
	${i}
</c:forEach>

 

반응형

+ Recent posts