2022. 10. 9. 12:51ㆍDev.Program/Java & Spring
< 스프링 >
스프링 : 자바로 만든 프레임워크(MVC)
: 전자정부 표준프레임워크
- 설치 : 스프링 버전 3, 4, 5 (지금 현재 가장 많이 쓰는 버전 : 4버전)
- 이클립스 같은 툴이 있음! (스프링이 설치된 툴 : 우린 3버전 사용)
- 우린 스프링 4버전 / 툴 3버전 사용
- 이클립스에도 스프링 설치가 가능하지만 우린 사이트가서 다운
- MVC 패턴
- DI(Dependency Injection의존관계주입) : 객체 생성하는 방식
- 데이터베이스 연동
- MyBatis 이용하여 데이터베이스 연동
- FunWeb사이트 => 개인프로젝트 만들었던 거 스프링으로 변경
- AOP(Aspect Oriented Programing) 의존관계주입
====================================================================
< 이클립스에서 다운받는 방법 >
Help - MarketPlace
- sts 검색하면 스프링 툴 나옴!
- 보통 툴 3버전을 가장 많이 사용
⇒ 근데 우리는 이렇게 사용안하고 이클립스 외에 따로 설치해줄 거!
====================================================================
< 스프링 설치 >
- 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 으로 바뀜! (지금은 설정한 게 없어서 오류남! 일단 주소 잘 넘어가는지 확인하기)
'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 |