일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jdbc
- String
- interface
- SQL
- extends
- scope
- DB
- JCF
- Set
- jsp
- 자바스크립트
- 환경설정
- 개선
- regex
- 참조타입
- iBATIS
- java
- 형변환
- 자바
- for문
- jar
- 정규화표현식
- mybatis
- jquery
- html
- 알고리즘
- Selector
- controller
- JavaScript
- 자료구조
- Today
- Total
프로그래밍공부노트
Day - ?? JSP와 Servlet 본문
View
리스트,테이블을 구성하고 번역을 통해서 사용자가 볼 수 있도록 한다
HTML <-> Browser가 (표준을 얼마나 준수하느냐)
request
get방식(주소전달) 방식 안정적 ex) <a></a>
post방식(html 전달) 방식 ex) <form></form>
화면을 나누는 영역
header footer section article 크게 나눌 수 있다
영역 태그 div 많이 사용
iFrame editor를 적용시킬 때 사용, html에 공간을 뚫어놓고 그 부분만 refresh되도록한다.
(전체 페이지가 계속 뿌려질 필요가 없이 부분만 다시 뿌려짐)
주석
html : <!-- -->
JSP : <%-- -->
java : <% // %> <% /**/%>
Directive 지시자 <% 표현 : JSP 페이지의 설정을 담당한다
page / <%page%> : jsp 페이지에 대한 설정 정보를 설정해준다
taglib / <%@taglib%> : jsp에서 사용할 라이브러리를 설정(xml로 구성해놓은 라이브러리)
<%@taglib prefix = "" url=""%> ""둘다 자동완성으로 찾을 수 있다
(prefix : c(선언?) fn(문자열) fmt(format) sql xml)
include / <%@include%> : 정적 include jsp 에 특정한 다른 페이지 삽입 ex) header.jsp , footer.jsp
script 요소
html 영역을 구분 하여 java 소스 혹은 method 혹은 값을 작성하도록 해준다
<% scriptlet %> : jsp안에 java의 문법 영역 (member field)
<%! declaration %> : jsp안에 java의 메소드 영역 (local variable)
<%= expression %> : jsp안에 java의 값을 출력
AutoFlush : IO에서 배웠던거랑 같다 데이터가 끝까지 전송되도록
Buffer : IO에서 했던 거랑 같다 기본 1Byte고 왔다갔다 많이 안하도록 묶음으로 전송
Content type : JSP에 설정해줘야한다 text/html -> 작성된 text를 html로 읽겠다 text/javascript -> text를 javascript로
ErrorPage : 200(성공) 제외하고 나머지 발생시 처리해주는 페이지
Session 로그인 정보를 계속 가지고 있음 강제적으로 사용하지 못하도록 설정 가능
Action tag : <jsp: >
JSP의 객체를 tag로 구성하여 scriptlet을 사용하지 않고 처리 가능
ex) getter, setter 호출하여 처리하던 것을 useBean을 통해서 처리할 수 있다
useBean(javaBean) : dao와 같은 역할을 하고 scope객체를 생성해서 사용해야 한다 !!!!!!!!! request.getParameter("name")없이 parsing이 가능하다. 은닉화되어 있어 외부에서 접근이 불가하지만 내부 연산으로 새로운 값을 만들어낸다. 전달받은 값은 형변환을 통해 setXXX해야하지만 자동으로 setter 타입으로 변환하여 객체생성
setProperty : useBean으로 생성한 Bean에 선언된 method 중 set메소드를 호출
include : 다른 페이지를 동적으로 현재 페이지에 포함 (이런걸 모듈)
forward : 다른 페이지로 이동할때 사용(흐름제어 : 제어권을 이동)
param : forward로 이동시킬 때 전달 값을 만들어냄
DTO (Data Transfer Object ) VO(Variable Object) : 값을 전달하기 위한 객체이고 은닉화를 하여 사용한다. 멤버필드를 private으로 선언하여 외부에서 접근하지 못하도록 만들고 getter 와 setter를 통해서 입력받거나 출력할 수 있도록 한다. 데이터의 타입도 명확하게 할 수 있다.
Bean : 데이터를 멤버필드로 갖고 있음 하지만 단순하게 데이터를 전달하기 위한 객체가 아닌 기능을 가지고 있는 객체이다. 기본적으로 useBean
이게 너무 헷갈린다
흐름제어
forward : 내부 페이지, 객체전달 가능, pass by reference(Scope) 브라우저에게 미리 알리지 않음 stateless로 전달하고 끊어버림
sendRedirect : 내부/외부 페이지에 모두 접근 가능, scope 전달 못하고 브라우저에게 미리 알린다
RequestDispatcher를 사용
Private void forward(HttpServletRequest request, HttpServletResponse response, String url){
RequestDispatcher dispatcher = request.getRequestDispatcher(url); =>ModelAndView
dispatcher.forward(request,response);
JSP 문제점 : 화면도 아니고 분기만 하는데 Controller가 계속 compile됨, 그리고 요청이 몰리면 리소스에 문제가 생김
그러니까 이제 미리 컴파일되어 있는 Controller 사용해서 리소스 문제좀 줄이자 그러기 위해서 Servlet의 특징을 이용하여 mapping되는 class를 지정하여 만들었다. HttpServlet을 extends하여 request와 response를 처리
컴파일된 class파일로 만들어서 compile 횟수는 줄였는데 그래도 요청이 Controller 하나에 집중되는 것은 똑같다.
그럼 요청 하나에 하나의 클래스로 가자 1:1 mapping 가자
list 요청오면 list Controller로 detail 요청오면 detail Controller로 처리하자
오 이제 집중되는 것도 줄어들고 리소스도 좋아졌다 근데 web.xml에 계속 만들어야돼 이거 유지보수하려면 언제 찾니
그러니까 이제 @Annotaion으로 하자
Front Controller Pattern ... 분기만 해주고 기능 클래스, 클래스 화면도 화면 클래스로..?
'JSP' 카테고리의 다른 글
Day - 54~56 (0) | 2021.05.07 |
---|---|
Day 52 - JSP (EL, JSTL) (0) | 2021.04.27 |
Day 39 - JSP(Context, 경로, 기본객체, 스코프객체, 웹 용어) (0) | 2021.04.09 |
Day 38 - JSP....(JDBC, JSP,request,response,page,session) (0) | 2021.04.08 |