티스토리 뷰

Private

20220418~ cav study

wldnjd2 2022. 4. 19. 09:11
프로젝트 구조

cav

- src/main/java

-- egovframework.example.cmmn

--- web

--- EgovSampleExcepHndlr.java

--- EgovSampleOthersExcepHndlr.java

-- kr.go.seoul.cav

---짱많음

---- service

----- impl

------ Mapper.java

------ ServiceImpl.java

----- Service.java

----- VO.java

---- web

----- Contoller.java

- src/main/resources

- src/test/java

- src/test/resources

- Maven Dependencies

- JRE System Library

- src

- target

pom.xml

 

 

첫 로그인창 또는 메인화면

index.jsp

localhost8080을 검색했을때, 첫 시작페이지는 index.jsp 파일이다.

index.jsp 파일을 보여주고 싶다면 web.xml에 설정을 해주면 됨 

index.jsp파일에서 main.do호출하고 main.do에서 return으로 main.jsp 파일 호출 한다

 

 

메인창 종류

1. 계약금액조정검증

2. 산업안전보건관리비정산

3. 산업안전보건관리비정산검토

4. 통계 X

5. 공지사항

6. 자료실


url: aa.do

jsp: aa.jsp

js: script_aa.jsp

 

1. cavConList.do

-> cavconlist.jsp

2. safList.do 

-> safCheckList.jsp

3. safCheckList.do

-> safchecklist.jsp

4. statistics.do

-> statistics.jsp

5. selectBbsList.do

6. selectBbsFileList.do

 

main.jsp-> 목록 아이콘 클릭시 <c:url ~~~.do로 보내짐

<c:url>태그는 URL에 자동으로 ContextPath를 붙여주는 일을 한다.

(context path란 was에서 웹 어플리케이션을 구분하기 위한 path이다.

이클립스에서 프로젝트를 생성하면 자동으로 server.xml에 추가되어 서버구동하면 자동으로 잡히는 경로)

 

 

 

 

회원가입

insertUser.do

- idCheck.do

 

 

회원가입 성공시 

바로 로그인처리됨

-> insertUserProc.do

-> loginProc.do

-> main.do

-> updateWork.do

 

 

아이디 비번 입력후 로그인 성공

-> loginProc.do

-> index.do

-> main.do

-> updateWork.do

 

 

로그아웃

-> logoutProc.do

-> index.do

 

 

.do 사용하는 이유

하나의 관행

스프링 프레임워크가 나타나기 전에 스트럿츠라는 프레임워크가 있었다.

스트러츠에서 .do 로 설정을 해주었음.

다른 서블릿과 url의 충돌을 막기 위해서 사용한다.

서블릿 페이지와 리소스를 구분하기 위해 패턴을 정의 한것.

 

 

업데이트

updateWork.do

-> return jsonView?

 

관리자(neggasystem) 일때만 글 목록 확인 가능

-> sql문에서 해결

 

alt 

대체텍스트

 

redirect란

다시+지시하다

브라우저가 www.asdf.com/a   url을  웹서버에 에 요청했을때, 서버는 응답메시지를 통해

www.asdf.com/b로  로 다시 요청하라고 지시함

 

 

return 값을 .jsp로 설정하기

dispatcher-servlet.xml에서

p:prefix="/WEB-INF/jsp/egovframework/cav/" p:suffix=".jsp"

로 설정한다.

 

흐름이해하기

main.jsp 

-> 산업안전 보건 관리비 정산 클릭

-> safList.do

-> safController.java

-> 컨트롤러에서 saflist.jsp로 리턴함

=> 여기까지 데이터 다불러와서 화면에 찍음

-> 불러온 데이터 목록 하나 클릭

-> saflist.jsp에서 saf.do로 보냄

-> safController.java; saf.do

-> 데이터 불러와서 페이지 출력 -> saf.jsp 출력

-> saf.jsp에서 돋보기 버튼 누르면 팝업창 열림

->상단에 popup_saf.jsp include 해놨음

 

 

게시판

selectBbsList.do

-> BbsController.java

-> 

 

 

jstl JavaServer Pages Satandard Tag Library

jsp페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장

jsp안에서 사용

<c:forEach>

List, 배열 요소를 순서대로 반복해서 처리할 수 있는 태그

 

 

 

- Vo 역할

VO(Value Object)

각 계층간 데이터를 교환하기 위한 객체이다

read only 속성을 가진 Object를 말한다. 수정이 불가능

-> DTO와 동일한 역할을 한다.

-> 어떠한 로직도 가지지 않는 순수한 데이터 객체

-> getter 메소드만 가지고 있는 클래스

-> setter를 잘 활용하지 않기 때문에 불변의 성격을 가지고 있는 클래스이다.

 

Service 인터페이스와 ServiceImpl을 만드는 이유

Interface는 객체의 사용 방법을 정의한 타입이다. 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다. 즉, 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 해준다.
인터페이스 타입에 어떤 구현 객체를 대입하는지에 따라 실행결과가 달라지도록 만드는 기술이므로 기존 구현 객체(ServiceImpl1)와 비즈니스 로직이 다른 기능을 추가해야할 경우 다른 구현 객체(ServiceImpl2)를 만들어 사용하면 된다. 따라서 유지보수 측면에서 매우 좋다.

그리고 객체지향 프로그래밍에서는 클래스를 작게 나누어 다른 클래스와 의존관계를 낮추는것이 중요하다. 즉, 결합도를 낮추는것인데 이 또한 유지보수가 쉽다는 장점을 갖는다.

 

-> 비즈니스 로직을 수행하는 역할

비즈니스 로직이란 기능을 구현하는 구현부

Service는 interface 파일로 ServiceImpl은 class파일로 작성한다.

 

인터페이스와 인터페이스 구현 클래스로 분리할 경우 장점

느슨한 결합을 유지하여 각 기능간 의존관계를 최소화할 수 있다.

의존관계의 ㅊ최소화로 인해 기능의 변화에도 최소한의 수정으로 개발할 수 있는 유연함을 가질 수 있다,

모듈화를 통해 어디서든 사용할 수 있도록 하여 재 사용성을 높인다.

스프링의 IoC/DI 기능을 이용한 빈 관리 기능을 사용할 수 있다.

 

Getter Setter 사용하는 이유

개체(객체)지향 프로그래밍에서 개체는 상태(attribute)와 행동(method)을 갖고 있습니다. 그리고 개체는 자신의 상태에 대해 스스로 책임을 져야 하고 그러기 위해선 개체의 상태를 아무나 함부로 바꿀수 있으면 안됩니다. 바꿔야 한다면 개체 자기자신이 바꿔야 한다는 라고 이해하시면 됩니다. 그러서 멤버 변수를 private으로 선언하여 외부의 접근을 막는것입니다

 

https://velog.io/@aquarius1997/Service%EC%99%80-ServiceImpl

 

Service와 ServiceImpl

이전 방송/신문업계 그룹의 IT회사에서 인턴으로 있으면서 웹 프로그래밍을 처음 접했고, 그때 좋은 개발 습관들을 꽤 많이 배웠다. 그런데 몇몇은 그냥 이유도 모르고 관행?같은거에 따르면서

velog.io

 

 

https://offbyone.tistory.com/368

 

JSTL - <c:forEach>, <c:forTokens> 태그 사용법

는 List, 배열 요소를 순서대로 반복해서 처리할 수 있는 태그 입니다. 1. 이름 목록을 가진 ArrayList를 출력하는 예제 입니다. // 리스트를 만들어서 모델에 넣습니다. List nameList = new ArrayList (Arrays.a.

offbyone.tistory.com

 

 

 

 

HashMap

https://coding-factory.tistory.com/556

 

[Java] 자바 HashMap 사용법 & 예제 총정리

HashMap 이란? HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 키와 값으로 구성된 Entry객체를 저장하는

coding-factory.tistory.com

 

 

 

직급마다 보이는 게시글이 다름

-> sql에서

 

 

 

- Spring form태그

:spring 버전2.0부터 jsp와 웹 MVC를 사용할때, 폼 요소를 좀 더 편리하게 다룰 수 있도록 데이터 바인딩과 관련된 광범위한 태그를 제공

 

1. 태그 라이브러리르 사용하기 위해서 다음 taglib설정을 상단에 추가

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

 

2. <form:form></form:form> : 폼태그

 

 

html에서 form태그를 생성하고 바인딩하기 위해서 form 내부 태그에 바인딩 경로 'path'를 지정한다.

 

<form:form></form:form>

기본 형식으로 입력값이 없을 시 method는 'post'로, action값은 현재 요청한 url 값이 설정된다.

<form:form commandName="member"></form:form>

id값을 member로 명시 id속성값은 입력폰의 값을 저장하는 커맨드 객체 이름이 할당

 

 

<form:hidden path="a1"/>

hidden 타입의 input을 생성 path 설정한 문자열은 id와 name속성으로 지정되며 model의 값을 추출해 value 속성에 주입

 

<form:hidden>

 

https://hipdizzy.tistory.com/25

 

Springframework <form:form> 이란?

1. 이란? 전자정부프레임워크에 올인원패키지를 뜯어보면 이라는 구문을 많이 볼수있다. 그렇다면 이 은 무엇일까? 은 HTML 폼에 데이터를 바인딩하거나 또는 에러메세지 처리등을 간편하게 해준

hipdizzy.tistory.com

https://yenbook.tistory.com/15

 

[SPRING] Form 커스텀 태그

Form태그? Spring에서는 형태로 되어있는 커스텀 태그를 제공 Form 커스텀 태그를 활용하면 Model 객체에 들어있는 값을 form 요소에 주입 회원정보 수정 등, 정보수정 페이지를 구성할 때 사용하면 좋

yenbook.tistory.com

 

 

 

 

 

'Private' 카테고리의 다른 글

OpenLayers Animation  (0) 2022.04.15
OpenLayers 응용해보기  (0) 2022.04.14
댓글