회원등록

-현재 회원가입 버튼을 누르면 주소창에 members/new처럼 이동 한다.

 

*<a href = ...>

-a라는 태그가 href라는 속성을 가지고 있다.

-hrefhypertext reference의 줄임말이다.

 

1.memberForm 만들기(입력란 만들기)

-여기에서 members/new 회원가입 폼화면이 나와야 한다.

-회원가입 폼화면이 나올 때를 위해 폼객체를 만든다.

 

사진1(실제는 이름만 필수항목 적용)

 

public class MemberForm {

 

@NotEmpty -> javax.validation.constraints

값이 비어있으면 오류메시지를 보여주는 기능

}

 

private final MemberService memberService

Controller가 서비스(MemberService)를 사용한다.

 

*Model model이란?

model.addAttribute(“정보”)

-> controller로 뷰로 넘어갈 때 데이터를 실어서 정보를 넘긴다.

 

return "members/createMemberForm“

->여기로 화면이 출력이 된다.

createMemberForm을 위한 html을 만들어야 한다.

controller가 화면을 이동할 때 빈 memberForm을 가지고 간다,.

validation같은 역할을 해주기 때문에 빈 memberForm을 가지고 가도록 한다.

데이터가 넘어가니 데이터의 화면출력을 위한 createMemberForm.html 생성이 필요하다.

 

2.templates내에 members 디렉터리생성 및 createMemberForm.html 파일생성을 한다.

 

구문사진

화면사진

html 구문 설명

첫구문

a.<head> include style로 작성

 

b.form 태그가 존재한다.

-action ="members/new"로 넘어간다.

-앞서 작성한 @GetMapping members/newget방식으로 오면

-controller에 있는 createform 구문을 통해 createform html이 열린다.

-열려서 렌더링이 된다. 렌더링이 될 때 model addAttributemembeform을 넘겼다.

 때문에 화면에서 이 객체(new member())에 접근할 수 있게 된다.

-이 객체는 createMemberForm.html 파일 내에

<form ~~~~~~th:object="${memberForm}" 과 연결 되어 form내에서는

memberForm 객체를 사용하겠다는 타임리프의 문법적용이 된다.

 

c.th:field=*{name}

-*가 있는 경우는 object(memberform)를 참고하게 되고

MemberControllercreateform구문의 memberform을 참고하게 되고

memberformmemberform 클래스를 참고하여 해당 필드인 name을 참고하게 된다.

 

회원가입작성시 흐름

th:field=*{필드항목}

->th:object="${객체}

->MemberController클래스의 memberform 객체

->memberform 클래스의 해당 필드 private ~필드

 

d.필드항목 구문

-input type 텍스트

-input후 클래스와 placeholder로 넘어간다.

-필드항목 작성시 idname을 각각 항목내용을 똑같은 이름으로 처리 해준다.

-다 작성후 폼 데이터가 button submit을 누르면

members/newmethodpost로 넘어간다.

 

e. 회원가입 클릭 및 필드항목작성후 첫화면으로 돌아가도록 구문 작성

 

*@NotEmpty 어노테이션으로 인하여 회원이름을 빈칸으로 작성시 에러페이지가 나온다.

구문작성

설명

controller의 서버사이드에서 validation을 했는데 필수항목입니다 메시지가 뜬다.

MemberForm에 작성된 메시지임을 확인할 수 있다.

 

MemberFormController 흐름정리

-서버사이드에서 validation을 하고 문제가 생겨서 BindingResult의 데이터가 하나 들어왔다.

result.를 보면 에러에 대한 데이터를 찾아 낼 수 있는 메서드가 많다.

에러가 있으면 다시 createMemberForm으로 보낸다.

타임리프와 스프링부트가 integration이 되어 있기도 하고, 스프링이 바인딩 result를 기본

적으로 createMemberform에 긁어 와서 사용할 수 있도록 작동한다.

 

createformmember.html 흐름정리

th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'">

<p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Incorrect date</p>

 

-createMemberform.htmlfields.hasError에서 name에 에러가 있으면 css를 빨간 테두리(form-control fieldError)로 변경하게 해준다.

 

-fields.haserrors의 이름이 있으면 네임필드에 대해서 에러메세지를 출력해준다.

그래서 필수항목이라는 메시지가 렌더링이 된다.

 

사진

 

*회원이름을 작성안해서 에러가 있더라도 다른항목란에 값을 입력했다면 값을 그대로 가지고 온다.

*javax.validation 개념 구글링 통해 공부 필요

*thymleaf도 홈페이지를 통해 공부가능

 

 

웹 계층 개발

 

1.홈 화면

 

2.회원 기능

-회원 등록

-회원 조회

 

3.상품 기능

-상품 등록

-상품 수정

-상품 조회

 

4.주문 기능

-상품 주문

-주문 내역 조회

-주문 취소

 

5.기타

-상품 등록

-상품 목록

-상품 수정

-변경 감지와 병합

-상품 주문

 

홈 화면과 레이아웃

1. Controller 패키지 생성 및 HomeController 클래스 생성

 

2. resources 패키지 -> templates 패키지 -> home.html 파일 생성

-home.html 파일에 타임리프 템플릿을 등록해야 한다.

 

<div th:replace="fragments/bodyHeader :: bodyHeader" />

- jsp include처럼 렌더링 될 때에 fragmentsheader로 바꾼다.

*th라고 타임리프를 관례상 사용한다고 함


사진

설명

-로고가 찍혔음을 확인했고, 화면으로 넘어가서 오류가 났다는 것을 확인할 수 있다.

 

사진2

설명

-header, bodyHeader, footer이름으로 fragments 디렉터리 내에 html파일을 생성하지 않을 경우 에러발생한다.

 

3. fragment 각 대체파일 생성 및 화면출력확인

 

화면출력

*Include-style layouts

-현재는 Include-style layouts으로 작성되었다. 좀 더 단순하게 예제를 만들어 익히는데 중점을 두기 위해서이다.

-좀 더 편하고 실용적으로 작성하길 원한다면 Hierarchical-style layouts로 작성할 것

 

*dev-tools

글자 변경과 같이 수정 된 사항은 앞서 환경설정에서 build.gradle

설치된 dev-tools에 의해 build메뉴->Recompile 실행으로 인해

자동으로 수정변경완료가 되고 재실행 없이, 브라우저화면에서 F5를 누르면 된다.

 

4.view 리소스 등록

a. getbootstrap 사이트에 들어가서 파일을 다운로드 받는다.

b. 부트스트랩 파일을 static에 복사 및 붙여넣기를 한다.

 

c. resources 우클릭 후 Sync(Reload from DISK) 클릭

Build 메뉴 -> Build Project 클릭

*강제로 복사 및 붙여넣기를 했기 때문에 위와 같이 해주어야 한다.

*그래도 되지 않을 경우 부트스트랩 버전을 확인하고 버전에 맞는 integrity 값을 사용해야 한다.

부트스트랩 CDN 및 복붙

d. jumbotron-narrow.css staticcss폴더에 생성후 다시 재실행

 

요약정리

home controller에서 request mapping/로 들어가고

출력된 “home controller”에서 다시 뷰(home)으로 넘어간다.

include 스타일로 리소스들을 include 했고 header는 부트스트랩, 점보트론 css를 사용했다.

 

home.html에 있는 header,bodyHeader, footerfragments에 만들어놓은 html파일로 돌아간다.

부트스트랩(css)를 이용한 홈화면 및 레이아웃 완성!

 

JSP 게시판 프로젝트를 위한 환경설정

 

JSP란

-Java Server Page

<위키백과 참조>

자바 서버 페이지는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다. Java EE 스펙 중 일부로 웹 애플리케이션 서버에서 동작한다.

 

1. JDK 설치

-다운로드 및 설치

 

-자바프로그램 작동을 위해서 환경변수 설정

-운영체제에 맞는 윈도우64bit jdk 다운로드(미리 다운로드)

-자바로 작성된 jsp를 작동할 수 있는 jsp용 웹서버인 tomcat 설치를 한다.

 

2. tomcat설치 및 구동

-tomcat 다운로드 및 압축풀기

 

-tomcat 수동으로 구동 

*설치된 tomcat안에 bin 폴더안에 restart 배치파일(startup)

cmd에서 해당경로에서 startup.bat 명령어를 엔터후 실행시킴으로

 

localhost로 웹서버 작동확인

사진

 

일일이 구동하기 힘드니 웹사이트개발환경

즉 전반적인 것을 관리하는 통합개발환경 이클립스를 설치한다.

 

3. 이클립스 설치(미리다운로드함)

-이클립스 다운로드

-Java EE로 설치

*자바 EE는 자바 SE 플랫폼을 기반으로 되어 있다. 

 자바 EE에서 대규모, 다계층, 확장성, 신뢰성, 보안 네트워킹 어플리케이션의 개발과 실행을 위한 API 그리고 환경을 제 

 공한다.

 

4. 프로젝트(Dynamic web project) 생성 및 tomcat 연동

-new->Dynamic web project 클릭

-New runtime에서 tomcat 버전 설정 및 tomcat설치된 경로 설정

 

 

5. web content

-다양한 웹페이지 저장/브라우저를 통해 페이지에 접속해서 내용을 볼 수 있다.

-new -> index.jsp 파일을 만든다.

 

-index.jsp파일을 구동한다. (finish클릭)

-hello world 출력

 

기본환경설정 완료

+ Recent posts