이론


Model1방식의 웹 개발 방식

디자인코드(HTML)와 자바코드(비즈니스 로직)를 구분하지 않고 하나의 jsp

파일 내에 함께  기술해서 웹  프로그램을 제작하는 방식이다.

장점 :  개발하기 쉽고, 배우기 쉽다.

단점 :  디자인코드와 비즈니스로직의 구분이 명확하지 않아 복잡도가 높다.

수정사항이 발생했을 때마다 디자이너와 개발자의 협업이 필요하다.

비즈니스 로직의 재사용성이 떨어진다.

유지보수하기 어렵다.


Model2방식의 웹 개발 방식

Model2방식은 웹 어플리케이션을 개발할 때 MVC패턴을 적용하여 웹 어플리케

이션의 개발이 가능하도록 구현한 것이다.

※ MVC는 Model-View-Controller로 각각의 역할을 나누어서 개발하는 하는 

  방식을 말한다.

Model 은 비즈니스로직을 담당하는 부분이다. 

Model은 비즈니스 로직을 UI(View)로부터 분리시킨다.

View 는 client가 직접 사용하는 부분이며, Model에서 생성된 Data를

client에게 보여주는 역할을 담당한다. 웹에서는 JSP가 담당한다.

Controller는 사용자의 요청을 받아서 요청에 해당하는 비즈니스로직을

수행하도록 하고,  응답을 client에 보내는 역할을 한다.

웹에서는 서블릿이 담당한다.

단점 : 초기 설계에 많은 시간이 소요된다.

개발자에게 MVC패턴에 대한 개념이 필수적으로 요구된다.

장점 : 디자인코드와 비즈니스 로직이 분리된다.

비즈니스 로직의 재사용성이 높아진다.

비즈니스로직 계층의 확장성이 용이하다.

유지보수하기 편하다.


 Servlet3.0부터 지원하는 어노테이션 기반의 요청처리: web.xml에 서블릿을 등록하는 것을 대신함


게시판 제작시 널포인트 나오면 액션팩토리 추가했나 확인할 것!!!!!!!!!




실습


src.ex1.Ex1_ServletTest.java

src.action.Action.java

src.action.HelloAction.java

src.action.StBoardInsertAction.java

src.action.StBoardListAction.java

src.action.StBoardWriterAction.java

src.config.config.xml

src.controller.ActionForward.java

src.controller.ActionFactory.java

src.controller.ControlServlet.java

src.dao.BoardDao.java

src.service.FactoryService.java

src.sqlMap.board.xml

src.vo.BoardVO.java

src.vo.PageVO.java

bottom.jsp

error.jsp

hello.jsp

index.jsp

studyboardList.jsp

studyBoardWriter.jsp

  <%@include file="bottom.jsp"%>

top.jsp


'학원수업 > JSP' 카테고리의 다른 글

학원 17일차 복습(4/5)  (0) 2018.04.05
학원 16일차 복습(4/4)  (0) 2018.04.04
학원 15일차 복습(4/3)  (0) 2018.04.03
학원 14일차 복습(4/2)  (0) 2018.04.02

이론



Dao패턴:비지니스로직과 자원을 분리시킴, 단일 책임의 원칙, 쓰레드의 관점


*****Mybatis:  sqlMapConfig.xml,SqlMaps.xml

모르는 내용은 http://blog.mybatis.org/ 참고하기



WEB-INF    lib에   jstl,mybatis 붙여넣기

config에서 <typeAliases> vo지정,JDBC,JNDI 설정,property에서 data_source등록,Mapper주소 작성

Mapper에서 sql문 작성

MyBatis 핵심설정 파일에서 MyBatis접근 객체를 제공할 SqlSessionFactory를 생성한다.

sqlMapper에서 정의한 namespace.id 값을 호출



<%@include file="" %>을 통해 jsp합치기가능

include의 특징 : 반복되는 부분을 재사용을 위해서 사용,컴파일시 하나가 된다.


requestScope는 A->B 사이의 값을 저장할 때 주로 사용

즉 forward에서 사용되며, Model2(MVC)에서 필수 요건


sendRedirect : response객체, 페이지가 이동 , requestScope는 항상 초기화

forward : request객체 , 페이지 이동x , requestScope에 값을 저장해서 forward 된 페이지에서도 값을 유지할 수 있다.


*****EL: Attribute, request의 파라미터, ServletContext의 초기화 파라미터에 접근

표현식:   ${person.name}


JSTL( JSP Standard Tag Library ): JSP에서 <% %>를 사용하지않고 실행할수 있는 태그제공

항상 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 추가해두기



실습


memberJoin.jsp

memberAdd.jsp

memberList.jsp

memberDetail.jsp

memberDel.jsp

src.config.xml

src.mapper.memberMap.xml

src.factory.SqlServiceFactory.java

src.ex1.MemberDao.java

src.ex1.MemberDTOjava

src.ex1.ConnUtil.java

ex2_first.jsp

ex2_second.jsp

ex3_pageA.jsp

ex3_pageB.jsp

main.jsp

header.jsp

menu1.jsp

menu2.jsp

footer.jsp

el1.jsp

el2.jsp

forEach.jsp

forEach2.jsp

forEach3.jsp

if.jsp

src.ex2.Customer.java


'학원수업 > JSP' 카테고리의 다른 글

학원 18일차 복습(4/6)  (0) 2018.04.06
학원 16일차 복습(4/4)  (0) 2018.04.04
학원 15일차 복습(4/3)  (0) 2018.04.03
학원 14일차 복습(4/2)  (0) 2018.04.02

이론



--테이블 복제하기

create table xxx2 as select * from member;

create sequence memeber2_seq

increment by 1

start with 1;

--시퀀스 번호를 자동으로 증가 시켜주는 함수를 호출한다. table_seq.nextVal

--문자열 '문자열값'

--날짜는 sysdate

--파싱 -> 패치 (명령문이 수행) -> 버퍼에 저장

--명령문이 대소문자, 값의 변경등이 일어나면 오라클은 위의 작업을 계속 반복한다.

insert into member2 values(member2_seq.nextVal,'bigdaddy','12','김길동',sysdate);

--선별적 insert문은 반드시 not null인 컬럼은 생략할 수 없다.

insert into member(num,id,pwd) values(member2_seq.nextVal,'xman','12');

select * from member;

--update,insert,delete는 반드시 모든 입력, 수정, 삭제가 완료되면 commit처리해야한다.(반대는 rollback)

select * from member2;

rollback;

commit;

-- asc 오름차순, desc 내림차순

select num,id,name,mdate from member order by 1 desc

select num,id,name,mdate from member where num=1;



CSS(style태그)

/* #wrap : id를 식별, .class 식별, element 식별 */

/* . = 한페이지에서 반복가능class */


Add.jsp

//한글처리는 제일 위쪽에 해줄 것

request.setCharacterEncoding("euc-kr");%>

<%-- MemberDTO v = new MemberDTO();와 동일  --%>

<jsp:useBean id="v" class="ex1.MemberDTO"></jsp:useBean>

<!-- 이 한줄로 파라미터를 받아서 알아서 useBean에 setter를 호출하여 값을 저장한다. -->

<%-- property="*" : v.setId(request.getParameter("id")) 와 동일 --%>

<jsp:setProperty property="*" name="v"/>


Delete후 강제 이동

response.sendRedirect("List.jsp");



실습


memberJoin.jsp

memberAdd.jsp

memberList.jsp

memberDetail.jsp

memberDel.jsp

src.ex1.MemberDTO

src.ex1.MemberDao

src.ex1.ConnUtil


'학원수업 > JSP' 카테고리의 다른 글

학원 18일차 복습(4/6)  (0) 2018.04.06
학원 17일차 복습(4/5)  (0) 2018.04.05
학원 15일차 복습(4/3)  (0) 2018.04.03
학원 14일차 복습(4/2)  (0) 2018.04.02

이론



1. Model1 Model2

1) Model1

- 뷰와 컨트롤러가 같은 JSP 안에서 실행

- 간단한 웹어플리케이션을 구축할 때 적당

- 개발기간 단축

- 유지보수가 어려움

- 디자이너와 개발자간의 의사소통이 필요

2. Model2

- 컨트롤러와 뷰가 엄격히 구분

- 뷰는 어떠한 처리로직도 포함하지 않음

- 사용자 요청의 진입점은 컨트롤러인 servlet이 담당 모든 흐름을 통제

- 유지 보수 확장이 용이

- 개발자와 디자이너의 작업이 분리

- 중 대형 프로젝트에 적합

- 초기에 구조 설계 시간이 많이 필요

2. MVC 패턴

1) View

- 화면에 내용을 보여주는 역할

- JSP 페이지

2) Model

- 로직을 가지고 있는 부분

- DB와 연동 데이터를 가져와 작업을 처리하거나 처리한 작업의 결과를 데이터로서 DB에 저장

- 데이터를 생성, 저장, 처리하는 역할을 담당

3) Controller

- 어플리케이션의 흐름을 제어 (view model사이)

- 서블릿 컨트롤러 사용


 페이지 스코프 ,리퀘스트 스코프, 세션스코프, 어플리케이션 스코프


DB에서 dba_는 시스탬에서 사용

user_는 권한이내에서만 사용


오라클 관리자 작업시: cmd창에서 sqlplus sys/kosta182 as sysdba

show user 입력시 USER is "SYS" 출력되어야함


ed createUser.sql입력후 메모장에서 아래 2줄 입력

create user kosta182 identified by k182 default tablespace users;

grant resource, connect , create view to kosta182;


@ createUser

그후에

select username from dba_users where username='KOSTA182';

접속

conn kosta182/k182

show user;

conn sys/kosta182 as sysdba

show user;


ed member.sql


-- member테이블 정의

create table member(

num number primary key,

id varchar2(10) not null,

pwd varchar2(10) not null,

name varchar2(34),

mdate date

);

-- member_seq 시퀀스를 정의

create sequence member_seq

increment by 1

start with 1;


select * from member;


--구조를 확인하는 명령어

desc member;


P.K(기본키): unique, not null, index


자바의 파라미터와 DB의 컬럼명은 같아야함 + DTO의 속성값도 같아야함


form->jsp->DB

jsp

1.폼데이터의 파라미터처리

2.변수로 저장

3.DB연결(커넥션 획득) 분리해야함

4.DB작업(입력,수정,삭제,검색)


div는 레이어 영역으로 자주 사용하는 태그이다. 블록레벨요소

id속성은 현재페이지에서 이 요소를 식별하기 위한 속성이다.

이값은 절대 중복될 수 없다.(CSS,javascript)

 

한글처리: request.setCharacterEncoding("euc-kr");


context.xml 에서 대소문자 꼭 확인하기*****




실습


memberJoin.jsp

memberAdd.jsp

context.xml

src.ex1.MemberDao

src.ex1.MemberDTO

src.ex1.ConnUtil


'학원수업 > JSP' 카테고리의 다른 글

학원 18일차 복습(4/6)  (0) 2018.04.06
학원 17일차 복습(4/5)  (0) 2018.04.05
학원 16일차 복습(4/4)  (0) 2018.04.04
학원 14일차 복습(4/2)  (0) 2018.04.02

이론


서블릿 JSP 개요및 환경설정

Back& 서비스 구조 (WAS)


WAS => Container(Servlet 관리)


1.web.xml :배포지시자  -> 요청에 따른 서비스되는 서블릿의 목록을 관리


2.WAS : HTTPServletRequest,HTTPServletResponse 생성 (요청이 들어올때마다 생성)


3.Servlet: 최초의 서블릿 한번 생성, init() ->service() -> destory()       (반복 요청시 init()는 실행안됨) 


4.Service: HTTPServletRequest,HTTPServletResponse 요청한 2객체 넣어줌


5.Service 요청방식 분석 Get,Post


클라이언트(request) -> WAS(web.xml) -> Servlet -> Service(request, response) -> doGet,doPost



요청방식 Get,Post(Response, index.jsp) -> 클라이언트



서블릿: 생성되자 마자 서비스 객체를 쓰레드로 관리

서비스: 클라이언트의 서비스 요청대기 ,메서드, 관리해주는 것 쓰레드



서블릿의 생명주기

생성->init() ->service() -> destory() 


개발방식 Model1, Model2(MVC패턴)

모델: 비즈니스 로직 


<%! 선언부  %> ->멤버영역

<% 스크립트릿 %>  -> 지역영역(서비스 메서드안)

<%= 표현식  %>   -> out.println(영역안)


Model1 :JSP  + DAO -> 1.Thread connection 관점

2.CRUD 데이터 관점

DTO(VO) 


Model2(MVC패턴)


 1.jsp 주석 : 브라우저는 해석 할 수 없다.

 2. 기본 코드를 학습

선언부, 스크립트릿,표현식

html영역은 모두 service영역안에 out.println("<html>")식으로 되어있다.*****


 선언부 : ex1_anti.jsp는 서블릿으로 변환 될 때 멤버영역에 해당된다.

 스크립트릿 영역 : service메서드안에 위치한 로컬영역이다.  

 표현식 : out.println()과 동일하다. 


form태그는 폼영역안에 데이터(name)를 전송버튼 (submit) 클릭될때 form의 속성인

action으로 데이터들을 전송한다. 이때 method의 기본값은 get이다.

name="id", name="name"에 사용자가 값을 입력하고 난후에 전송하게 되면

ex1_process.jsp에서 그 값을 파라미터로 받아서 데이터값으로 사용할 수 있다.

 

view(jsp) : 파라미터처리, 비지니스로직을 구현 (메서드로 정의) 선언부에서는 하지않고

별도의 자바객체를 제작해서 사용!

자바객체를 제작 src패키지에서 작업(자바에서 작업을 하듯이)

src/exam/GuGuDanProcess.java를 만들어서 사용!

메서드 설계 : 단,범위,색상을 인자로 전달하고, 그결과를 (html결과) String으로 반환


<!-- 보이는 주석 -->

<%-- 안보이는 주석 --%>



 싱글톤 패턴을 적용하는 이유: 제한된 자원을 스레드의 동시성문제로 발생하는 이상현상을 막기위해서 적용한다.

 처음 접속일때 생성하고 그이후는 이미 만든 객체를 static영역에 참조해서 재사용하도록 하는 개념이다.


  


실습


ex1_anti.jsp

ex1_form.jsp

ex1_process.jsp

exam_gugu.jsp

exam_guguProcess.jsp

src.exam.GuGuDanProcess.java

src.exam.GuGuVO.java


'학원수업 > JSP' 카테고리의 다른 글

학원 18일차 복습(4/6)  (0) 2018.04.06
학원 17일차 복습(4/5)  (0) 2018.04.05
학원 16일차 복습(4/4)  (0) 2018.04.04
학원 15일차 복습(4/3)  (0) 2018.04.03

+ Recent posts