Java
자바 메서드
public static String numbering(int int, int limit){
/*
* 여기서 메소드 numbering 앞의 String은 return 값의 데이터 타입을 나타낸다
* 반환 값이 없을 때는 void를 사용한다
*/
}
클래스 변수와 메서드 변수가 모두 있을 때는 메서드 변수가 우선된다
메서드 변수가 있는 상태에서 클래스 변수에 접근하고자 할 때는 this.클래스 변수를 사용하면 된다
JSP
서블릿(.java)으로 변환되어 컴파일 후(.class) 실행된다
- 서블릿은 최초 요청시 생성된 인스턴스가 메모리에 남아 이후 요청에도 빠르게 대응할 수 있어 트래픽이 많아져도 빠른 응답이 가능하다.
- 또한 스레드 단위로 실행되어 같은 프로세스를 중복해서 여러개 만들지 않고 동시에 실행될 수 있어 응답 속도가 빠르다
- 웹 브라우저에서 수행되기때문에 서블릿의 접근 지정자는 항상 public이다
- 서블릿으로 변환된 JSP 소스코드는 모두 _jspService() 메서드에 저장된다
- html form태그 내의 input 태그의 타입이 submit인 경우 form 태그의 action에 지정한 서블릿 파일이 요청된다
선언문
JSP에서 자바 코드를 확장하는 방법
JSP에서 메서드나 멤버변수를 선언할 수 있다
선언문보다는 빈즈 클래스를 사용하는 것이 좋다
<!% 선언태그의 모양 %> ( <% 이건 스크립틀릿이다 %>)
사용자 정의 메서드 외에 jspInit()/ jspDestroy()를 오버라이드해서 사용할 수 있다
표현식
<%= 메서드나 변수 또는 간단한 계산식을 넣을 수 있다%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
// 멤버변수 선언
int num1, num2=0;
int result=0;
String op="";
// 사용자 정의 메서드 선언
public int calculator() {
int result=0;
if(op.equals("+")) {
result=num1+num2;
}
else if(op.equals("-")) {
result=num1-num2;
}
else if(op.equals("*")) {
result=num1*num2;
}
else if(op.equals("/")) {
result=num1/num2;
}
return result;
}
%>
<%
//폼을 통해 전달된 post요청을 수행
if(request.getMethod().equals("POST")){
num1=Integer.parseInt(request.getParameter("num1"));
num2=Integer.parseInt(request.getParameter("num2"));
op=request.getParameter("operator");
}
%>
<!-- html -->
<html>
<head>
<meta charset="UTF-8">
<title>calculator</title>
</head>
<body>
<div>
<h3>calculator</h3>
<hr>
<form name =form1 action=/test/CalcServlet2 method=post>
<input type="text" name= "num1" width=200 size="5">
<select name="operator">
<option selected>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select>
<input type="text" name="num2" width=200 size="5">
<input type="submit" value="계산" name="b1">
<input type="reset" value="다시입력" name="b2">
</form>
<hr>계산 결과:<%=calculator() %> <!-- 표현식/ 위에서 선언한 메서드 사용 -->
</div>
</body>
</html>
스크립트릿
JSP문서 내에 자바 코드를 기술하는 부분
<% 이 안에 작성하면 된다 %>
로직을 작성한 수 표현은 표현식으로 한다
태그 내부에 작성한 로직이 복잡하면 유지보수가 어려워지고
다양한 프레임워크(스프링) 및 JSP 빈즈와 MVC 패턴의 상용화로 인해 더이상 권장되지 않는다
주석
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--이 주석은 클라이언트(개발자 모드)가 볼 수 있습니다 -->
<h2>jsp 주석 테스트</h2>
<%--이 주석은 클라이언트단에서 보이지 않습니다. --%>
</body>
</html>
수정을 하고 저장을 안하면 적용을 안시켜준다
JSP 내장객체
_jspService()메서드 안에서 사용자의 JSP소스코드 이전에 선언 및 초기화되어 JSP 내에서 선언하지 않고 사용하는 객체
JSP가 서블릿으로 자동 변환된 코드 내에 포함된 멤버변수, 매개변수 등의 객체
- 지역변수로 선언된 pageContext, application, config, session, out
- 메서드 매개변수response, request
페이지 간의 데이터를 공유할 때 사용한다
문법
지시어
JSP파일의 속성을 기술하여 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지에 대한 내용
1) page
jsp 페이지로서의 기능을 수행하려번 page지시어는 반드시 있어야 한다
- contentType: mime형식 및 캐릭터셋 지정
- import: JSP내부에서 사용할 외부 자바 패키지 및 클래스를 불러온다
- errorPage : 현재 페이지에서 오류가 발생할 경우 호출될 페이지 지정
- isErrorPage: 오류를 처리하는 페이지인지(default=false)
- session: 세션 사용 여부
- buffer: 전송할 데이터의 단위 지정 - 오류가 발생하더라도 안정적인 데이터 전송이 가능함(이미 데이터가 어느정도 모여있기 때문)
- autoFlush: 버퍼를 자동으로 비울것인지 지정
- isThreadSafe: 서블릿의 장점인 스레드 단위 요청처리(동시성)를 안정적으로 할 수 있도록 해준다
2) include
하나의 html에서 기능별로 jsp 페이지를 나눠서 구현할 때 사용
각각의 파일을 포함한 뒤 하나의 컴파일 클래스를 생성하여 include_test.jsp 만 자바소스 및 클래스가 생성된다
html 설정은 include하는 jsp페이지에서 되어있으므로 따로 작성할 필요가 없음
간단한 사이트 구성에는 유용하지만 레이아웃 관리를 비롯한 고급 기능을 상요하기 위해서는 tiles/sitemesh 프레임워크를 사용하는 것이 좋다

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>지시어 테스트</title>
</head>
<body>
<h2>include 지시어 테스트</h2>
<hr>
<%@ include file="main.jsp" %>
<p>
<table border=0 cellpadding=5 cellspacing=1>
<tr>
<td><font size=-1><%@include file="news.jsp" %></font></td>
<td width="30"> </td>
<td><font size=-1><%@include file="shopping.jsp" %></font></td>
</tr>
</table>
</body>
</html>
<%-- example news.jsp /html형식을 따로 작성하지 않음--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
[최신뉴스]
<hr>
어쩌구
저쩌구<br>
어쩌구<br> 저쩌구<br>
3) taglib
JSP액션
include, forward, setProperty, getProperty, plugin, param, useBean
- useBean액션: JSP-자바 빈즈 크래스 연동을 지원 ⭐
useBean, setProperty, getProperty가 있다 set,get은 빈즈 클래스의 setter, getter를 자동으로 호출한다
- include액션: 각각 파일을 만든 후 실행시점에 파일을 호출한다
변수를 전달할 수 있다
JSP파일을 포함하거나 forward 액션을 통해 다른 JSP로 포워딩할 때 param태그를 이용해 속성 값을 전달할 수 있다.
전달된 매개변수는 request.getParameter() 메서드를 통해 접근 가능하다
- forward액션:현재 페이지를 완전히 다른 페이지로 전환할 대 사용(페이지 제어권 이동)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>include_action.jsp에서 footer.jsp 호출하기</h2>
<%--footer.jsp로 매개변수 전달 --%>
<jsp:include page="footer.jsp">
<jsp:param name="email" value="test@test.net"/>
<jsp:param name="tel" value="000-000-0000"/>
</jsp:include>
</body>
</html>
footer.jsp로 전달하는 부분의 액션을 forward로 바꾸면 footer가 포함되어 나타나지 않고 페이지가 footer로 교체된다
- plugin액션: 웹브라우저에서 자바 플러그인을 사용하여 자바 애플릿이나 자바 빈즈 컴포넌트를 실행할 수 있게 한다. (대부분의 웹브라우저는 자바를 플러그인 형태로 지원한다) 웹브라우저(IE, Netscape)에따라 자동으로 태그(OBJECT, EMBED)를 생성해준다
'말하는 감자 탈출하기' 카테고리의 다른 글
| 감자의 에러 (0) | 2023.05.04 |
|---|---|
| JNDI에 대해 알아보자 (0) | 2023.04.29 |
| eclipse-servlet (0) | 2023.04.19 |
| JAVA/JSP (0) | 2023.04.18 |
| 자바 설치 및 환경 변수 설정하기(feat. PostgreSQL) (0) | 2023.04.18 |