1. JSP -> JSP로 데이터 전달
1-1. form 태그
form 태그 안에 있는 input 태그의 value 값을 가지고 action 속성의 페이지로 간다.
input 태그의 name 속성에 이름을 설정해야 다음 페이지에서 호출할 수 있다.
submit 타입의 input 태그로 다음 페이지로 이동한다.
<form action="a_test2.jsp" method="get">
이름 <input type="text" name="name"><br>
나이 <input type="text" name="age"><br>
연락처
<select name="tel">
<option value="010">010</option>
<option value="011" selected>011</option>
</select>
<input type="text" name="tel"><br>
<input type="submit" value="확인">
</form>
+) JSP 이름은 통상적으로 카멜 케이스보다 언더바와 소문자를 사용한다.
1-2. a 태그
a 태그 href 속성에 페이지 경로 작성 후 ? 뒤에 전달할 정보를 작성한다.
? 뒤에는 이름=값 형태로 데이터를 전달할 수 있다. 마찬가지로 전달된 데이터를 받을 때는 이름으로 전달받는다.
전달하는 데이터가 여러 개일 경우에는 &로 연결한다.
<a href="a_test2.jsp?name=java">데이터 하나 전달</a>
<a href="a_test2.jsp?name=java&age=20">데이터 두개 전달</a>
전달된 데이터를 ${param.데이터이름 }으로 받아올 수 있다. 받은 데이터를 다시 넘길 때에도 문법은 같다.
2개 이상의 데이터를 전달받은 경우 ${paramValues.데이터이름[인덱스번호] }로 받을 수 있다.
${param.name }<br>
${param.age }<br>
<a href="a_test3.jsp?name=${param.name }">이름값 전달</a>
${paramValues.tel[0] }
${paramValues.tel[1] }
2. JSP -> Servlet -> JSP -> Servlet ...로 데이터 전달
JSP는 눈에 보이는 화면을, Servlet은 실행되는 기능을 담당한다.
2-1. JSP -> Servlet
이동할 페이지명에 확장자가 없으면 입력값과 똑같은 이름의 Servlet을 찾아간다. 페이지가 이동되어 Servlet이 실행되면 doGet(), doPost() 메소드 중 하나가 실행된다. form 태그의 method 속성값이 post일 경우에만 doPost()가 실행되고, 이 외에는 무조건 doGet() 메소드가 실행된다.
<%@ 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>
<form action="Servlet01" method="get">
이름 <input type="text" name="name"><br>
나이 <input type="text" name="age"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
Servlet에서는 request.getParameter(데이터의 이름)으로 데이터를 받을 수 있다.
데이터를 다음 jsp로 보내고 싶을 때는 request.setAttribute(보낼 데이터의 이름, 데이터)로 보낼 수 있다.
public class Servlet01 extends HttpServlet {
private static final long serialVersionUID = 1L;
public Servlet01() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//데이터 받기
String name = request.getParameter("name");
String age = request.getParameter("age");
//데이터 적재
request.setAttribute("id", "java");
request.setAttribute("score", 80);
request.setAttribute("name", name);
//jsp로 페이지 이동
//페이지 이동(데이터 전달 X)
//response.sendRedirect("result1.jsp");
//데이터를 전달할 수 있는 페이지 이동 기법
RequestDispatcher dispatcher = request.getRequestDispatcher("result1.jsp");
dispatcher.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
+) taglib : JSTL(JSP 표준 태그 라이브러리). 공통으로 사용하는 코드를 태그 형식으로 사용할 수 있다.
jar 파일을 다운받아 프로젝트 webapp/WEB-INF/lib에 옮겨 놓고 선언한 후 사용할 수 있다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
c 태그는 자바 언어로 해석된다. (c 태그 내부에서 주석 사용 시 주의!)
<!-- if문 -->
<c:if test="${3 > 1 }">
참입니다.
<%-- c 태그 주석 처리 --%>
</c:if>
<!-- for-each문 -->
<!-- items : 반복을 돌릴 변수
var : 여러 데이터가 들어있는 변수에서 데이터를 하나씩 가져 왔을 때의 이름 -->
<c:forEach items="${list }" var="member">
이름 : ${member.memName }
</c:forEach>
'TIL' 카테고리의 다른 글
| 230215 [SQL] (데이터 조회 명령어) (0) | 2023.02.15 |
|---|---|
| 230214 [JSP, Servlet] (Controller) (0) | 2023.02.15 |
| 230210 [JSP, Servlet] (서버와 클라이언트, 기본 개념) (0) | 2023.02.10 |
| 230209 [CSS] (style) (0) | 2023.02.09 |
| 230208 [Html, CSS] (list / input / 선택자) (0) | 2023.02.08 |