Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

brograming

[Spring] 05_08 본문

Kosta

[Spring] 05_08

brograming 2023. 5. 8. 17:09

spring설치및프로젝트생성.doc
0.30MB

Spring

자바 기반 웹 프로그래밍에서 만히 활용되는 프레임 워크

프로그램의 기본 뼈대와 api를 구축해논 미들웨어

 

Spring boot

spring을 경량으로 최적화한 프레임워크. stand alone(하나의 서버에 하나의 프로젝트)

경로 작성시 프로젝트 이름 빼고 나머지 경로를 적어준면 된다.(하나의 서버에 하나의 프로젝트만 실행되기 때문에)

프로젝트를 돌릴 톰캣 서버를 지정해줘야 한다.(8080은 오라클로 지정해줬기 때문에 8080제외)

xml, dispatcher servlet을 안에 숨겨놓음

 

 

Spring boot  project 구성요소

pom.xml : 라이브러리 의존성 등록. 기능을 추가하려면 pom.xml에 의존성 추가

 

src/main/resources : 프로젝트 자원 파일들을 저장

    static 폴더 : html, css, javascript와 같은 정적 웹 페이지 저장 폴더

    templates 폴더 : 뷰 템플릿 파일들 저장

    application.properties 파일 : 이 프로젝트 설정 작성 파일. 서버포트, db 설정, 인코딩, jpa, 멀티파트.... 

 

src/main/java : 자바 파일 저장. 프로젝트 생성할 때 기본 패키지 밑에 클래스를 만들어야 자동으로 스캐닝하여 객체 생성                           하고 생명주기를 관리해준다.

                         자동으로 생성되어야 하는 클래스에는 dao, service, controller 등이 있음

 

webapp 폴더 : 뷰 페이지 저장. jsp 페이지 저장

 

 

Spring MVC

모든 요청은 DispatcherServlet이 받음

웹의 요청은 다 url로 온다.

=> 받은 요청 url이 controller에 등록이 되어있는지 확인 (없는 url이면 404 / 있으면 맵핑된 메서드를 실행)

=> 맵핑된 메서드 실행 후 뷰 페이지 경로 반환

=> DispatcherServlet이 viewResolver에게 뷰 페이지 경로를 전달하여 뷰 페이지를 생성하고 실행하도록 함

 

1. controller 클래스

url별로 실행될 메서드를 등록 및 구현 클래스

일반 클래스로 만들고 @Controller 붙여야 함

각 url별 실행할 코드 작성. 이동할 뷰 페이지 경로를 반환

url을 맵핑 : @RequestMapping("url") => 전송방법 상관없이 url만 지정

                   @GetMapping("url") => get 방식 url 지정

                   @PostMapping("url") => post 방식 url 지정

                   @PutMapping("url") => put 방식 url 지정

                   @DeleteMapping("url") => delete 방식 url 지정

                    ...

url 맵핑된 메서드의 반환타입이 String이면 => 뷰페이지 경로

url 맵핑된 메서드의 반환타입이 void이면 => 맵핑된 url과 동일한 경로로 뷰 페이지가 지정

 

컨트롤러 : 요청 url을 등록하고 각 url별 실행할 메서드 맵핑

 

 

*커맨드 객체

 

@PostMapping("/add")
public String board(@ModelAttribute("b") BoardVo vo) {                     // BoardVo vo : 커맨트 객체.
return "board/list";
}

 

파라미터 없는 생성자, setter, getter

 

url 맵핑된 메서드의 파라메터로 vo 객체를 작성하면 폼 양식에 입력한 값을 담아온다

vo의 멤버변수 이름과 입력양식의 이름이 같아야 한다

파람없는 생성자로 vo객체를 자동으로 생성하고 입력양식의 이름으로 setter를 호출하여 값을 vo에 담는다

커맨드 객체는 자동으로 뷰페이지로 전달됨. 뷰페이지에서 소문자 클래스명으로 사용

커맨드 객체를 뷰 페이지에서 부를 이름 설정 => @ModelAttribute("이름")

 => ${이름.멤버변수}

 

 

*@RequestParam("tel") String tel

=> String tel = reqeust.getParameter("tel");

폼 양식 값을 읽어서 변수에 담는 어노테이션

 

 

*ModelAndView(값과 뷰페이지)

api 클래스. 개수와 타입 제한 없음

이전에 request에 담았던 것 대신에 사용.

이동할 뷰 페이지 경로 지정 및 뷰 페이지에 전달할 값을 담는 객체

뷰 페이지 경로는 생성자에서 지정할 수도 있고, setViewName(뷰경로)로 지정할 수도 있다.

뷰 페이지로 전달할 값은 mav.addObject("키", 값);  "키" = 뷰페이지에서 부를 이름, 값 = 뷰 페이지에 보여줄 내용

( 오토박싱으로 인해서 객체타입으로 변환가능)

 

 

 

*application.properties

#port

server.port=8081 : 사용할 포트 번호

 

#JSP view

prefix : 뷰페이지 경로 앞단을 지정해줌. 

suffix :  지정한 뷰페이지 끝에 자동으로 붙혀줌

서버 하나에 하나의 프로젝트만 올라가기 때문에 프로젝트 파일 이름은 안적어도 된다.

 

#oracle set

기존 dbconn도 스프링이 대신 해줌.

spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe : 리스너 번호 / 오라클 버전은 SID(컨트롤 ALT + DEL)

spring.datasource.username=hr : 오라클 계정
spring.datasource.password=hr : 오라클 패스워드

 

#encoding

인코딩 설정

 

 

*session사용

request mapping 메서드의 파라미터로 받아서 사용

@GetMapping("url")

public void test(HttpSession session){

      session.setAttribute("id","aaa");

}

 

 

xml파일의 주 용도 :  데이터를 표현하는 용도

 

create a project

maven : 의존성 검사

 

 

 

 

WINDOW - PREFERENCES 에서 ENCODING UTF-8

 

 

 

 

 

 

<dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

     <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>

            <version>1.2</version>
        </dependency>
  

 

pom.xml : 의존성을 지정하기 위한 파일

 

# port
server.port=8081

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

# oracle set
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=hr
spring.datasource.password=hr

#encoding
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true