[Spring] - (1)설치 및 설정하기

2022. 10. 9. 12:51Dev.Program/Java & Spring

728x90

< 스프링 >

스프링 : 자바로 만든 프레임워크(MVC)

: 전자정부 표준프레임워크

  1. 설치 : 스프링 버전 3, 4, 5 (지금 현재 가장 많이 쓰는 버전 : 4버전)
  • 이클립스 같은 툴이 있음! (스프링이 설치된 툴 : 우린 3버전 사용)
  • 우린 스프링 4버전 / 툴 3버전 사용
  • 이클립스에도 스프링 설치가 가능하지만 우린 사이트가서 다운
  1. MVC 패턴
  2. DI(Dependency Injection의존관계주입) : 객체 생성하는 방식
  3. 데이터베이스 연동
  4. MyBatis 이용하여 데이터베이스 연동
  5. FunWeb사이트 => 개인프로젝트 만들었던 거 스프링으로 변경
  6. AOP(Aspect Oriented Programing) 의존관계주입

 

====================================================================

< 이클립스에서 다운받는 방법 >

Help - MarketPlace

  • sts 검색하면 스프링 툴 나옴!
  • 보통 툴 3버전을 가장 많이 사용

⇒ 근데 우리는 이렇게 사용안하고 이클립스 외에 따로 설치해줄 거!

====================================================================

 

< 스프링 설치 >

https://spring.io/

  • Projects > Spring Tools 4 일단 선택
  • 쭉 내려와서
  • Tool3 으로 넘어가기

 

  • 다운로드

 

> D 드라이브에 작업공간 만들기

======== workspace_sts

 

> C 드라이브에 다운받은 파일 압축풀기

C:\sts-bundle\sts-3.9.12.RELEASE

- 실행파일

  • 바탕화면에 바로가기 만들기

 

> 실행

추가정보 누르면 실행 버튼 뜸!

  • 워크스페이스 설정

  • 실행창!

  • 프로젝트 새로만들기

  • Next
  • Yes

  • 패키지 폴더를 만들어주는 거!
  • 보통 회사도메인.XXX 로 만듬
  • Finish!

 

  • 실행시켜보기
  • Run As > Run On Server
  • 기본 그대로 Finish

 

< 설정하기 >

  • UTF-8로 설정바꿔주기

  • 폰트 설정

 

  • 콘솔창 보면 이런 정보들 나와있음!

 

2. MVC

사용자(유저,클라이언트)  브라우저 주소 http://localhost:8080/myweb/

사용자가  localhost:8080서버에 /myweb/ 페이지를 요청

http 프로토콜(통신규약) : html 전송 통신규약

http 요청(폼에서 입력한 값)을 가지고 서버로 이동

- localhost:8080 서버 http가 들고온 /myweb/ 요청을 받아서 처리

- 웹서버(아파치) / 찾기 

- 처리담당서버 : 웹애플리케이션서버(WAS,톰캣,웹컨테이너)

- http들고온 요청정보를 서버(request,response 내장객체(기억장소) 만듬) request내장객체에 저장

- web.xml(설정정보 - 서블릿 지정) 참조

⇒ root-context.xml, servlet-context.xml 서블릿 지정

  • 어떤식으로 처리할지는 이 xml 파일 안에 정의되어있음
  • 위치!

폴더스캔

<context:component-scan base-package="com.itwillbs.myweb" />

찾아서 @ 자동으로동작

<annotation-driven />

@Controller

public class HomeController

@RequestMapping(value = "/", method = RequestMethod.GET)

public String home(Locale locale, Model model) {

model.addAttribute("serverTime", formattedDate ); // 데이터를 담아서

return "home";  // 이동 

/WEB-INF/views/home.jsp ← 여기로 이동

 

- 처리담당 서블릿 생성  - 처리 (service(),doGet(),doPost 자동동작)

- 자바,jsp코드 번역(처리) 실행결과(응답정보) java 출력 html  

- http에 응답정보 /처리한 html파일을 response 담아서 웹서버에 보냄

- 웹서버 http 응답정보 /처리한 html파일 들고 

⇒ 사용자 /처리한 html파일 응답받아서 화면에 보임

⇒ request,response,처리담당자 서블릿 스레드  소멸

 

  • web.xml 위치
  • 소스보기

 

  • / 로 시작하는 주소(모든주소)가 들어오면 appServlet 으로 처리하게끔 지정되어있음

  • 보라색이 서블릿 파일이 되도록 지정

  • 이건 서블릿을 지정하지 않아도 Context를 로드하겠다는 것(컨텍스트로더리스너)!

  • 여기도 보라색 서블릿 파일이 호출됨

 

> servlet-context.xml / root-context.xml (xml 파일이 spring 파일이라 생각하면됨)

< root-context.xml >

  • 지금은 여기 뭐가 없음!

< servlet-context.xml >

  • 자동으로 동작하도록 지정되어있음
  • 폴더 안에 들어가서 살펴보라(scan)는 뜻
  • 골뱅이 표시가 있으면 알아서 동작하라는 뜻
  • jsp 파일을 관리하는 부분 - WEB-INF/views/ 폴더에 .jsp 파일 있다고 알려줌.

  • 여기에 com.itwillbs.myweb 폴더가 있다!

  • 자바파일들 / MyBatis 설정파일

 

Controller (자바파일) 안에는

  • 이렇게 어노테이션 처리가 되어있음(역할 부여)
  • 주소(/)와 메서드전송방식도 지정되어있음! GET방식
  • 이렇게 주소가 들어오면 안에 내용이 실행됨

> return home 이 설정되어있는 곳

  • 위치!
  • HomeController 에서 설정한(담아둔 데이터)
  • 이 값을
  • 여기서 보여줌 (출력할 땐 ${설정한 변수명})
  • 이게 실행시킨 화면!



>

가상주소 요청 http://localhost:8080/myweb/test

http -> 웹서버 -> 웹애프리케이션서버

-> request,response 생성 request에 요청 정보가 저장

-> web.xml

servlet-context.xml, root-context.xml 서블릿 지정

-> com.itwillbs.myweb 자동 스캔

-> @ 찾아서 동작  @Controller HomeController

  @RequestMapping  "/test" 주소  test()함수   test.jsp 로이동

응답 /WEB-INF/views/test.jsp 

 

< HomeController.java >

@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test() {
logger.info("Welcome test!");

return "test";
}
  • 추가

======== views 파일에 test.jsp 만들기

  • 확인을 위해 h1 태그 하나 넣어두기

 

  • 도메인에 test 쳤을 때 화면 나타나면 됨!

 

  • 크롬으로 여는 방법

 

  • 주소값을 싹 스캔해서 보여줌(같은 주소가 있으면 오류남)

  • syso같은거!

>

가상주소 요청 http://localhost:8080/myweb/test2.me

test2()함수

응답 /WEB-INF/views/test2.jsp 

< HomeController.java >

@RequestMapping(value = "/test2.me", method = RequestMethod.GET)
public String test2() {
logger.info("Welcome test!");

return "test2";
}
  • 추가

======== views 폴더에 test2.jsp 만들기

확인을 위해 h1 태그 넣어주기

  • 실행했을 때 나오면 성공!

 

>

가상주소 요청 http://localhost:8080/myweb/insert

@Controller MemController

"/insert" insert()함수

응답 /WEB-INF/views/insertForm.jsp 

 

======== com.itwillbs.myweb 패키지에 MemController.java 만들기

< MemController.java >

package com.itwillbs.myweb;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
* Handles requests for the application home page.
*/
@Controller
public class MemController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/insert", method = RequestMethod.GET)
public String insert() {
logger.info("Welcome insert!");

return "insertForm";
}
}

 

======== views 폴더에 insertForm.jsp 만들기

  • 확인용으로 h1 태그 넣어주기

  • 실행했을 때 결과창

 

< insertForm.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>insertForm</h1>
<form action="/insert" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pass"><br>
이름 : <input type="text" name="name"><br>
<input type="submit" value="회원가입">
</form>
</body>
</html>

 

@RequestMapping(value = "/insert", method = RequestMethod.POST)
public String insertPost() {
logger.info("Welcome insertPost!");

return "home";
}
  • Post 방식 추가(일단 넘어가는지 확인해보기위해 home.jsp 로 가게 설정)
  • get 방식과 post 방식 따로 만들어줘야함(함수명은 다르게!)

 

> http://localhost:8080/myweb/insert 에서 실행!

  • 회원가입 눌렀을 때
  • 주소창 확인해보면 /myweb/ 이 사라짐

< insertForm.jsp >

점 찍어주기! (. : 현재폴더)

> 다시 회원가입 눌러보면

  • 주소는 똑같지만 다른 주소로 인식함! (GET과 POST 방식!)

 

< MemController.java >

  • loginForm.jsp 로 가게 고쳐주기!

======== views 폴더에 loginForm.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>WebContent/member/loginForm.jsp</h1>
<form action="./Login" method="post">
아이디: <input type="text" name="id"><br>
비밀번호: <input type="password" name="pass"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>

 

> 실행해서 회원가입 눌러보기

  • 주소 보면 insert 라고 되어있다! 로그인 페이지인데 insert 면 안됨!






< MemController.java >

  • 가상주소로 넘길 땐 redirect: 설정해줌!

  • 주소창 보면 login 으로 바뀜! (지금은 설정한 게 없어서 오류남! 일단 주소 잘 넘어가는지 확인하기)

 

728x90

'Dev.Program > Java & Spring' 카테고리의 다른 글

[Spring] - (3)데이터베이스 연동  (0) 2022.10.09
[Spring] - (2)  (0) 2022.10.09
InetAddress 클래스  (0) 2022.10.07
데이터 입출력 : IO(Input/Output)  (0) 2022.10.07
MVC2 - (5)  (0) 2022.10.07