Programming/FULL STACK

[JAVA] JAVA 웹 개발 JSP 요약

RosyPark 2020. 7. 11. 23:05

들어가기 전에 

JSP와 Spring의 차이점은? 

- JSP - > HTML문서에 내부적으로 자바문법을 사용할 수 있게 하는 스크립트 언어, 화면 처리 영역에서 사용

- Spring Framework ->  다양한 개발 빠르게 적용할 수 있게 만들어 놓은 도구,프로그램전반적환경구성

 

  

자바 웹 프로그램 JSP

- JSP를 사용해서 Servelet사용, 이후 JSP MVC, Spring MVC로 확장 가능

 

 

 

POST와 GET 방식 차이 

POST GET 
- 숨겨져서(body안에) 보내짐
- 많은 양의 데이터 보내는 것 가능 
- 글 작성의 경우
- 수행한다는 것의 개념 
- 서버의 상태나 값을 바꾸기 위해서 사용됨 
- 주소줄에 값이 ?뒤에 쌍으로 이어붙음 
-url에 붙어야 하기 때문에 많은 양의 데이터를 보내기가 어려움
- 가져온다는 것의 개념 
- 서버의 값이나 상태들을 바꾸지 않음  

 

 

 

서블릿

- "클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램"

- 서블릿 구현시 HttpServlet 클래스 상속 필요 

- HttpServlet 클래스?  HTTP 프로토콜 기반으로 브랑우저부터 요청을 전달받아서 처리하는 클래스

-  service 메소드에는 요청방식(GET/POST)에 따라 doGet(), doPost() 등 정해진 사양의 메소드가 호출

 

 

 

 

 

 

(1) HttpServletResponse  response

 

-  클라이언트에게 보내는 문서타입과 문자셋을 응답헤더에 설정하는 메소드 

 

*sendRedirect() 

response.sendRedirect("???.jsp");  // 특정 주소를 호출할 것을 요청하는 응답신호를 보냄 

 

 

(2) HttpServletRequest request  

- 클라이언트의 IP 주소, 포트번호 요청 

- 서버의 호스트 이름 ,. 포트번호 .. 등 

 

1
2
3
4
5
6
7
8
//설정하기
HttpSession session = request.getSession();
session.setAttribute("hisName", 홍길동);
 
//수정하기
HttpSession session = request.getSession()
String hisName = (String)session.getAttribute("hisName")
 
cs

 

 

EL(Expression language)

- 표현 언어를 이해하고 속성 값들을 편리하게 출력하기 위해 제공된 언어

- Expression language의 약자로 JSP 2.0 스펙에 추가된 개념

- EL을 사용하면 값이 없거나 형 변환 등에 전혀 신경 쓸 필요 없이 사용

- JSP 표기법 - <%=  i  %> , EL 표기법 - ${  i  }

- EL 내장 객체는 대부분 map 객체이며, 값을 추출할 때 두 가지 형식으로 지정가능

예) ${param.id} or $[param["id"]}​

 

 

 

 

JSTL 

- 연산이나 조건문, 반복문을 편하게 처리 가능 

- 자바의 기능을 태그 스타일로 구현해서 쓸수 있게 해주는 요소
- JSTL을 쓰면 라이브러리로 자바구문을 만들어놓고 필요할때마다 꺼내쓰면 되기 때문에 유지보수가 편리함 

- JSTL중 코어 라이브러리를 사용하기 위해 이 구문 추가 필요 

=> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

 

1. 변수선언하기  = setAttribute()

<c:set var="ir" value="홍길동" scope="page"/>

2. 출력하기 = '<%=...>' 

<c:out value="${ir}"/>

 

 

 

3. if /else구문 --  choose 문 

단순if 문

---------------------------------------------

<c:if test="${!login}">

<p><a href="/login.ok">로그인</a></p>

</c:if>
---------------------------------------------

 

 

 

choose 문 사용(if ~else는 choose로 표현)

---------------------------------------------

<c:choose>

     <c:when test="${kbs =='star'}"></c:when>

     <c:when test="${kbs =='moon'}"></c:when>

     <c:otherwise>어떤 조건도 아닐 경우 수행</c:otherwise>

</c:choose>

-----------------------------------------------
<c:choose>

  <c:when test="${login}">

    <p><a href="/logout.ok">로그아웃</a></p>

  </c:when>

  <c:otherwise>

    <p><a href="/login.ok">로그인</a></p>

  </c:otherwise>

</c:choose>

------------------------------------------------------

 

 

3. 반복문 --   forEach 문  

 

- 일반출력 
<c:forEach var="i" begin="1" end="10" step="1"> 
     <c:out value="${i}" /> &nbsp;&nbsp;
</c:forEach>

 

- 객체 출력

<c:forEach i ="${Name}" var "name">

     ${name.hisName}

</c:forEach>

 

 

- 객체출력 -> 내장객체(key, value) 값 출력시

<c:forEach var="h" items="${headerValues}"> <!-- 헤더값을 찍음 -->

     속성 : <c:out value="${h.key}" /> &nbsp;&nbsp;

     값 : <c:forEach var="k" items="${h.value }">

          <c:out value="${k}"/>

          </c:forEach>

          <hr>

</c:forEach>

 

4. 포매팅 라이브러리

- 데이터의 출력을 바꾸기 위한것

- 추가필요-->  <%@ taglib prefix ="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><br

숫자 : <fmt:formatNumber value="98745612345.678" type="number"/><br>
통화 : <fmt:formatNumber value="12345.789" type="currency" currencySymbol="$"/><br>
숫자 : <fmt:formatNumber value="12345.456" pattern="#,##0.0"/><br>

 

 

 

 

 

JDBC (Java Database Connectivity)

-  자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 

- 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공

- SQQL을 작성할 수 있는 사람들을 위한 쿼리 실행 도구는 DB Client 프로그램

- UI <-> SQL <-> Oracle , MS SQL 사용  

 

 

 

< JDBC 프로그램 작성 단계> 

(1) JDBC 사용하여 Database 연결하기 

// MySQL 드라이버 로딩

Class.forName("com.mysql.jdbc.Driver"); 

 

//Oracle 드라이버 로딩

Class.forName("oracle.jdbc.driver.OracleDriver"); 

 

(2) Connection 객체 생성하기

 // MySQL 사용시 Connection 객체 생성
 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsptest", "jspid","jsptest");

 

 // Oracle 사용시 Connection 객체 생성
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ora817", "scott", "tiger");

 

 

(3) Statement/PreparedStatement/CallableStatement 객체 생성

- sql 쿼리를 생성 및 실행하며, 반환된 결과를 가져오게 할 작업 제공한다

- JDBC 드라이버에 구애받지 않는다

 

Statement stmt = conn.createStatement();

 

 

(4) Query 수행

 

 

 

(5) ResultSet 처리 

 

 

 

 

 

 

출처

1. https://opentutorials.org/module/3569/21251

2. https://blog.outsider.ne.kr/312

3. https://note.espriter.net/1179

 

JSTL 개요 및 예제 모음

JSTL은 자바의 기능을 태그 스타일로 구현해서 쓸수 있게 해주는 요소들을 뜻합니다. 간단히 말해서 복잡하게 자바나 JSP 전체 문장을 쓰지 않고 tag 형태로 바꾼 것을 뜻합니다. MyBatis와 유사하게

note.espriter.net

 

4. https://jusungpark.tistory.com/15

5. 출처: https://hackersstudy.tistory.com/42 [공대인들이 직접쓰는 컴퓨터공부방]

6. https://blog.naver.com/lhglee/220447699825

7.