본문 바로가기
코딩도전기/Spring

CODO Day39_Spring(DB 연결)

by 코도꼬마 2023. 3. 28.

Spring Project

  1. new
  2. Spring Legacy Project 선택
  3. Project 이름 설정
  4. Spring MVC Project 선택
  5. 소스가 저장될 package 입력

# Spring Legacy Project 시작 시 프로젝트 만들자마자 실행시켜보기

# jsp파일은 src > main > webapp > WEB-INF > spring > views 에 생성

# maven 파일 : library 다운 및 관리

 

# Legacy Project는 Spring3과 java 1.6을 기본으로 함(오래된 버전)

# 파일 저장위치

Written by zer0box

 

# Spring 구조

Written by zer0box

 

 

Spring으로 프로젝트 실행해보기

  • HomeController
package kr.co.gudi;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;

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;

//컨트롤러 명시(HttpServlet 없이 Controller로 가능) >> HttpServlet 상속받지 않아도 됨
@Controller 
public class HomeController {
	
	//Logger : System.out.Print 대체
    //장점 : 콜솔이 찍히는 위치를 알려줌
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	// GET만 받을 것이므로 method 명시
	// method 설정 안하면 do/post 다 받음
	// "/"로 요청이 들어오면 아래 메서드를 실행	
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model, HttpServletRequest req) {
		logger.info("메인 요청 수락");
		model.addAttribute("msg","Hello 스프링!");
		
		String param = req.getParameter("param");
		logger.info("param="+param);
		
		Object msg = null;
		
		if(param == null) {
			msg = "Invalid Type";
		}else if(param.equals("greeting")) {
			msg = "안녕하세요";
		}else if(param.equals("date")) {
			msg = new Date();
		}
		model.addAttribute("msg",msg);
		
		return "home";  //home.jsp로 이동
	}	
}

 

 

MultiUrl(HttpServlet 상속받지 않고 다양한 URL 처리)

  • HomeController
package kr.co.gudi;

import java.text.DateFormat;
import java.util.Date;
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;

@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	//GET 방식으로 "/" 요청이 오면 아래 메서드 호출
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Model model) {
		model.addAttribute("msg","홈 페이지");		
		return "home";
	}
	
	// "/main"
	@RequestMapping(value = "/main", method = RequestMethod.GET)
	public String main(Model model) {
		model.addAttribute("msg","메인 페이지");		
		return "home";
	}
	
	// "/index"
	@RequestMapping(value = "/index", method = RequestMethod.GET)
	public String index(Model model) {
		model.addAttribute("msg","인덱스 페이지");		
		return "home";
	}
}

 

 

Calculator

  • home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
<style>

</style>
</head>
<body>
	<form action="calc" method="post">
		<input type="text" name="su1"/>
		<select name="oper">
			<option value="+">+</option>
			<option value="-">-</option>
			<option value="*">*</option>
			<option value="/">/</option>
		</select>
		<input type="text" name="su2"/>
		<input type="submit" value="전송"/>
	</form>
</body>
<script></script>
</html>

 

  • HomeController
    • req.getParameter 대신 @RequestParam 사용
package kr.co.gudi;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;

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.bind.annotation.RequestParam;

@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Model model) {		
		return "home";
	}
	
	@RequestMapping(value = "/calc",method = RequestMethod.POST)
	public String calc(Model model, @RequestParam String su1, @RequestParam String su2, @RequestParam String oper) {
		logger.info(su1+oper+su2);		

		int val1 = Integer.parseInt(su1);
		int val2 = Integer.parseInt(su2);
		Object result = null;
		
		switch (oper) {
		case "+":
			result = val1 + val2;
			break;

		case "-":
			result = val1 - val2;
			break;
			
		case "*":
			result = val1 * val2;
			break;
			
		case "/":
			result = val1 / val2;
			break;
		}
		
		model.addAttribute("result", result);

		return "result";
	}
}

 

'코딩도전기 > Spring' 카테고리의 다른 글

CODO Day44_Spring(PhotoBoard)  (0) 2023.04.04
CODO Day43_Spring(FileService)  (0) 2023.04.03
CODO Day42_Spring(BoardApp)  (0) 2023.03.31
CODO Day41_Spring(MemberApp)  (0) 2023.03.30
CODO Day40_Spring(MyBatis)  (0) 2023.03.28