05/25 목 필기

konut ko·2023년 5월 25일
1

더존비즈온5기

목록 보기
26/46

Controller 암기 : 한데요데지포


WebJSP_EL_JSTL

Ex10_EL_JSTL : 태그를 출력하는 법, 예외처리

태그를 출력하는 법


lt는 less than 이니까 작다부등호
gt는 greater than 이니까 크다부등로

<p>

예외처리

<c:catch  var="msg">
	name: <%= request.getParameter("name") %>
	<%
		if(request.getParameter("name").equals("hong")){
			out.print("당신의 이름은 : " + request.getParameter("name"));
		}
	%>
</c:catch>
<c:if test="${msg != null}">
	<h3>예외발생</h3>
	오류메시지 : ${msg}<br>
</c:if>

catch태그의 변수명은 msg
get 요청의 parameter 키 name의 값을 가져와서 name: 값 을 뿌리는데,
만약 name이 hong이면 "당신의 이름은"이라는 말도 같이 뿌려줌

만약 위 catch문의 변수 msg가 null이 아닌지 test해서 "test가 참이면" 태그 안 실행

test="${msg != null} 이 부분이 특이하므로 주의!




Ex11_EL_JSTL - formating

formating 관련 스크립트

태그, 포매팅 관련 자료
https://cafe.naver.com/erpzone/866

  • EL/JSTL 의 해석의 주체는 WAS(서버)이다! (클라이언트 아님!!)

변환된 결과를 변수에 담을 수 있음




Ex12_EL_JSTL_Function.jsp

  • 함수는 EL안에서 쓴다!




"EL_JSTL 중요한 부분위주로 공부"

Ex03, Ex06 정도만
EL 객체를 가지고 있다
1. param
2. paramValues
3. requestScope
4. sessionScope
5. applicationScope

WebServlet_2

war파일 jar파일

eclipse import check



WebServlet_4_Memo_Mvc

어노테이션
@AllArgsConstructor 사용시



Connection Pool

  • DBCP
    DB접속과 관련된 부하를 줄이기위해 사용
    (해변가 튜브에 비유하자면, 기존에는 손님이 바다에 들어갈 때마다 튜브에 바람을 넣고빼고를 했는데 Connection Pool을 사용하면 Connection Pool에 바람을 넣은 튜브를 미리 몇백개 만들어놔서 사용하는 것.)
  • Hikari CP
    커넥션풀을 사용하는 라이브러리
    성능이 좋다고 한다

출처
Connection Pool ( 커넥션 풀 )
데이터 연동과정에서 일반적인 연동과정은 웹 어플리케이션이 필요할 때마다 데이터베이스에 연결하여 작업하는 방식이다. 그런데 이런 식으로 필요할 때마다 연동해서 작업할 경우 데이터베이스 연결에 시간이 많이 걸린다는 문제가 있다. 이 문제를 해결하기 위해 현재는 웹 어플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 연결을 미리 설정해 두고, 필요할 때마다 미리 연결해 놓은 상태를 이용해 빠르게 데이터베이스와 연동하여 작업을 한다. 이 작업을 Connection Pool이라고 한다.

오늘은 Tomcat DBCP 사용예정

방법1

만약에 [모든 프로젝트에서 공통]으로 사용하고 싶다면
Tomcat 설정파일인 context.xml 파일에서

아래와 같은 내용을 적어주면 PJ일괄 적용됨.

방법2

-> 각각의 pj에서
META-INF 폴더아래에
context.xml파일에서 설정해주면 됨

WebServlet_5_Memo_Mvc_dpcp

WebServlet_6_Memo_Mvc_dpcp_Helper

굉장히 어렵다!!

기타

프로젝트를 import 할 때

체크박스 두개 체크

이게 다른 폴더에서 import 해올때 하는 옵션인가??
copy projectss into workspace 이거 체ㄱ크



프로젝트를 copy paste할 때

이렇게 생성한 프로젝트의 수정사항

CONTEXT ROOT는 원본 프로젝트와 같으므로 꼭 수정해준다.



context root

프로젝트 root 폴더는 webapp이고
ip + 포트번호 다음에 오는 경로가 된다.
pageContext.request.contextPath 로 context root 경로를 가져올 수 있다.

  • context path : 컨텍스트 패스(Context Path)는 WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 Path!



@AllArgsConstructor , @NoArgsConstructor, @Data

@AllArgsConstructor : 필드 전부 생성자 파람
@NoArgsConstructor : 기본 생성자를 만들어줌
@Data : getter, setter



JAR, WAR 파일 차이

출처

  • JAR
    자바 프로젝트를 압축한 파일
    Class (JAVA리소스, 속성 파일), 라이브러리 파일을 포함
    JRE(JAVA Runtime Environment)만 있어도 실행 가능

  • WAR
    웹 애플리케이션(Web Application) 압축파일 포맷
    웹 관련 자원을 포함함 (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
    사전 정의된 구조를 사용함 (WEB-INF, META-INF)
    별도의 웹서버(WEB) or 웹 컨테이너(WAS) 필요
    즉, JAR파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일이다.

  • Sprinag boot에서 가이드하는 표준은 JAR(JSP, 외장톰켓을 안사용)이니까 JAR를 사용하여 서비스하는 것이 좋습니다.

자바 프로젝트와 웹 애플리케이션
자바 프로젝트 : JAVA 어플리케이션이 동작할 수 있도록
웹 애플리케이션 : Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application)




궁금했던거

action은 절대경로

form태그의 action 속성 지정 경로는 주로 절대경로로 작성
절대경로는 ContextPath Root부터 기입!
ContextPath + URL매핑주소(uri주소)
업로드중..

href에 webinf 폴더 직접 이동 안됨

href="/WEB-INF/views/... 안돼는 이유 & servlet을 쓰는 이유


위와 같은 파일 구조에서 register.jsp페이지에 접근하려면

<a href="register.do?cmd=register">회원가입</a>

위와 같은 경로로 servlet을 타고 들어가야한다.

호기심에 이런짓을 해보았다.

<a href="/WEB-INF/views/register/register.jsp">회원가입</a>

그러면 톰캣에서 404 오류를 띄워준다.

WEB-IN는 보안 폴더이기 때문에 브라우저에서 직접 접근이 불가능 하다.

출처

profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글