728x90
반응형

📃 Controller에서 redirect 사용

@GetMapping("/host/roomOne")
	public String hostRoomOne(Model model,
			@RequestParam("roomId") int roomId, @RequestParam("detailAddressId") int detailAddressId) {
		Map<String, Object> result = roomService.getHostRoomOne(roomId, detailAddressId);
		model.addAttribute("room",result.get("room"));
		model.addAttribute("address",result.get("address"));
		model.addAttribute("hashtag",result.get("hashtag"));
		return "/host/room/roomOne";
	}


@PostMapping("/host/modifyRoom")
	public String postModifyRoom(RedirectAttributes redirect, Room room, Address address, String hashtag) {
		address = roomService.modifyRoom(room, address, hashtag);
		redirect.addAttribute("roomId",room.getRoomId());
		redirect.addAttribute("detailAddressId",address.getDetailAddressId());
		return "redirect:/host/roomOne";
	}

 

[ 숙소의 정보 수정이 완료되면, 숙소 상세보기 페이지를 띄우도록 하는 redirect 요청입니다]

 

redirect를 사용하는 이유 : 저는 Controller에서 메서드의 작업이 끝난 후 return값으로 /webapp/WEB-INF/jsp 위치의 jsp파일명을 반환합니다. 숙소 수정이 완료된 후, 숙소 상세보기 페이지인 roomOne.jsp가 열리도록 해야하는데, 해당 숙소의 상세정보도 받아와야 합니다. 그렇기 때문에 간단하게 jsp만 여는것이 아니라 숙소 상세정보를 가져온 후 해당 jsp를 포워딩하는 /host/roomOne으로 redirect를 진행합니다.

 

- postModifyRoom 메서드의 작업이 끝나면 hostRoomOne 메서드로 redirect를 진행합니다.

 

- redirect를 진행하는 메서드에서는 param값으로 'RedirectAttributes redirect'를 받고, redirect.addAttribute("이름",값);으로 redirect를 하는 위치로 값을 전달한다.

 

- redirect를 요청받은 메서드의 param값은 @RequestParam("이름") 자료형 변수명의 형식으로 값을 받아 사용합니다.

728x90
반응형
728x90
반응형

💊 sts 경로에 한글 이름 존재

 

 

sts의 위치 경로에 사진과 같이 한글이 포함되어있으면 작동하지 않는다.

 

 

 

 

 

 

sts.exe파일과 이름이 동일한 sts.ini 파일을 메모장으로 열어 확인해보면, 경로에 한글이 추가된 것을 확인할 수 있다.

 

 

 

해결법 : 경로를 모두 영어로 바꾸고 동일하게 맞춘다.

728x90
반응형
728x90
반응형

Download (projectlombok.org)

 

Download

 

projectlombok.org

 

 

📥 Lombok 설치

 

상단의 링크로 접속하여 Lombok을 다운로드 받는다.

 

 

 

 

 

다운로드 받은 lombok 파일을 실행한다. (jar 파일)

 

 

 

 

 

 

 

실행하면, sts IDE이 자동으로 찾아지는 경우도 있고, 해당 사진처럼 찾지 못한다고 뜨는 경우도 있다.

 

 

 

 

 

 

찾아지지 않는 경우에는 Specify location... -> SpringToolSuite.exe -> Select를 눌러 직접 지정한다.

 

 

 

 

 

 

 

추가되면 사진과 같이 IDEs에서 sts를 확인할 수 있다.

 

Install / update를 클릭하여 설치하면 된다.

 

 

 

 

sts.exe파일이 존재하는 위치로 들어가면, Lombok이 추가된 것을 확인할 수 있다.

 

 

 

 

 

728x90
반응형
728x90
반응형

📖 컨트롤러의 기본 사용

 

spring 프로젝트의 파일을 살펴보면 src/main/java 밑에 패키지가 하나 있는 것을 볼 수 있다.

 

 

 

 

 

동일한 위치에 controller만을 모아둘 수 있는 패키지를 만들고, 작업을 원하는 컨트롤러를 생성한다.(class 생성)

 

 

 

 

 

 

<FilmController.java>

package com.practice.fjdkslvn.controller;

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

@Controller
public class FilmController {
	
	@GetMapping("/film") 
	public String filmList() {
		System.out.println("FilmController.test()실행");
		
		return "/WEB-INF/jsp/filmList.jsp";
	}
}

클래스 위에 @Controller 어노테이션을 작성하여 컨트롤러 작동이 가능하게 한다.

 

@GetMappint("/film") 어노테이션을 작성하여 '/film'으로 get 요청을 받았을 경우 처리할 수 있도록 filmList 메서드를 생성하였다. spring은 아주 편리하게도 return 값으로 jsp의 경로를 반환하면 자동으로 forward 해준다.

 

여기서, forward를 위해 return하는 jsp경로를 더욱 편리하게 반환하는 방법이 있다.

 

 

 

 

 

 

<FilmController.java>

@Controller
public class FilmController {
	
	@GetMapping("/film") 
	public String filmList() {
		System.out.println("FilmController.test()실행");
		
		return "filmList";
	}
}

- return값으로 jsp 이름만 반환하는 방법

 

 

@Controller
public class FilmController {
	
	@GetMapping("/film") 
	public void filmList() {
		System.out.println("FilmController.test()실행");
        // 반환값이 없으면 메서드 명을 사용하여 forward 진행
	}
}

- return값이 없기 때문에 메서드 명을 사용하여 forward가 진행되는 방법

 

=> 2개의 방법 모두 이전과 달리 /WEB-INF/jsp/.jsp를 생략하고 사용하는 방법이다. 다만, 이렇게 사용하기 위한 설정이 필요하다.

 

 

 

 

 

 

src/main/resources를 열면, 애플리케이션을 구동할 때 자동으로 실행되는 application.properties를 확인할 수 있다.

 

 

 

 

 

<application.properties>

#server config
server.port=80

# db config
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3307/sakila (//호스트명:포트번호/DB)
spring.datasource.username=사용자명
spring.datasource.password=비밀번호

# jsp config
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

server.port=80을 통해 사용할 포트번호를 80으로 변경한다. 변경 전에는 보통 8080으로 설정 되어있는데, 80으로 변경하면 http://localhost:8080/film -> http://localhost/film 과 같이 간편하게 접근 가능하다.

 

본인은 mariaDB를 사용하기 때문에 관련 코드를 작성해주었다. 자신이 사용하고 있는 설정에 맞게 입력해주면 될 것 이다.

 

마지막으로 forward를 위한 jsp경로를 간단하게 return하기 위해 사용되는 부분이다. 여기서 prefix는 접두어로 사용되고 suffix는 접미어로 사용된다. 해당 설정으로 인해 간단하게 jsp명만 return하는 경우 "WEB-INF/jsp/리턴값.jsp"과 같은 경로로 forwarding이 진행된다. return값이 없어서 메서드명이 전달되는 경우도 마찬가지다.

 

 

 

 

 

 

이제 jsp를 만들어야 한다. 실제로는 webapp까지밖에 없을것이다.

 

webapp 밑에 WEB-INF파일을 만들고 그 아래에는 jsp를 모아둘 파일을 생성한 뒤, 원하는 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>영화 목록 출력 예정</h1>
</body>
</html>

jsp화면은 간단하게 제목만 출력하도록 했다.

 

 

 

 

 

🎵실행

프로젝트 우클릭 -> Run As -> Spring Boot App을 클릭하여 서버를 실행한다.

 

 

 

 

 

 

localhost/film을 입력하여 get방식으로 요청하면, filmList.jsp가 forward되어 나오고 console에 컨트롤러가 실행되었음을 나타내는 system.out.print가 출력된다.

 

 

 

 

 

 

 

🔖<FilmController.java> =>  값 받는 방법

@Controller
public class FilmController {
	
	@GetMapping("/film") 
	public String filmList(int filmId, String title) {
		System.out.println("FilmController.test()실행");
		System.out.println("영화번호 : " + filmId);
		System.out.println("제목 : "+title);
		
		return "filmList";
	}
}

@GetMapping 어노테이션을 사용한 경우에 get방식으로 데이터를 전달하면, 메서드 입력변수로 해당 값들을 받을 수 있다.

 

 

위와 같이 ?filmId=1&title="강철의 연금술사" 값을 넘긴다.

 

 

 

 

 

console을 확인하면 값이 넘어온 것을 확인할 수 있다.

728x90
반응형
728x90
반응형

Spring | Tools

 

Spring Tools 4 is the next generation of Spring tooling

Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.

spring.io

 

 

💾 Spring 환경설정

위 링크에 들어가서 해당 파일을 다운로드 받고 실행한다.

 

 

 

 

 

 

 

SpringToolSuite4를 더블클릭하여 이클립스를 실행할 수 있다.

 

 

 

 

 

 

 

 

프로그램을 실행한 후, Help -> Eclipse Marketplace를 클릭하여 마켓을 연다.

 

 

 

 

 

 

 

 

eclipse web 검색 -> Eclipse Web Developer Tools 3.23 설치

mybatis 검색 -> MyBatipse 1.2.4 설치

 

동의 또는 다음을 모두 누르고, restart now가 나오면 눌러주면 된다.

 

 

 

 

 

 

새로운 프로젝트를 생성하기 위해 New -> Spring Starter Project를 클릭한다. (없다면 Project에서 찾기)

 

 

 

 

 

 

java Version과 같은 설정등은 본인에게 맞는걸로 선택하고, package에는 Group + Artifact를 작성해준다.

 

Next를 누른 후, 그림과 같이 4개의 dependency를 선택한 후 Finish를 눌러 프로젝트를 생성한다.

 

 

 

 

 

 

 

 

		<!--  JSP -->
        <dependency>
           <groupId>org.apache.tomcat.embed</groupId>
           <artifactId>tomcat-embed-jasper</artifactId>
           <version>9.0.45</version>
        </dependency>
	    <!--  JSTL -->
	    <dependency>
	       <groupId>javax.servlet</groupId>
	       <artifactId>jstl</artifactId>
	       <version>1.2</version>
	    </dependency>

생성된 spring 프로젝트를 열고, pom.xml의 dependency안에 해당 코드를 넣는다.

 

JSP와 JSTL을 사용할 수 있도록 한다.

 

728x90
반응형

+ Recent posts