액션 태그(Action Tag)
XML 형식으로 코드를 기술하는 문법
액션 태그의 종류
1. 표준 액션 태그
include와 forward가 있음.
bean 관련 태그(중요!!!)
2. 커스텀 액션 태그
별도의 라이브러리를 설치(포함)해야만 사용할 수 있는 태그 (대표적으로 JSTL)
예) 표준 액션의 include
<jsp:include page="포함할페이지.jsp">
menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>오늘의 메뉴</title>
</head>
<body>
<h3>오늘의 메뉴</h3>
- 두부보쌈<br>
- 로제 파스타<br>
- 김치찌개<br>
- 연어 초밥<br>
- 참치볶음밥<br>
<br>
<jsp:include page="DateTime.jsp"/><%-- <%@ include file="DateTime.jsp" %>이거와 같은 역할 --%>
</body>
</html>
DateTime.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.GregorianCalendar" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
GregorianCalendar now = new GregorianCalendar();
System.out.println(now);//브라우저에 출력 안됨.
String date = String.format("%TF", now);
String time = String.format("%TT", now);
%>
오늘의 날짜 : <%=date %><br>
현재의 시간 : <%=time %><br>
</body>
</html>
inputNum.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>사칙 연산 - 번호 입력</title>
</head>
<body>
<form action="fourRules.jsp">
첫 번째 수 : <input type="text" name="num1"><br>
두 번째 수 : <input type="text" name="num2"><br>
<input type="submit" value="계산">
</form>
</body>
</html>
fourRules.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="errorPage.jsp"%>
<%-- 위에 페이지 인코딩 부분에 errorPage="errorPage.jsp" 적어줌 --%>
<%
//계산만 처리하는 페이지, 화면에 보이지 않음.
String str1 = request.getParameter("num1");//request는 문자열로만 받을 수 있음
String str2 = request.getParameter("num2");
//문자열로 받았기 때문에 int로 형변환해줌
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
//계산 결과를 결과 출력 페이지로 전달
//Attribute를 사용할 때 값(value)는 객체(인스턴스)로
request.setAttribute("sum", new Integer(num1 + num2));
request.setAttribute("sub", new Integer(num1 - num2));
request.setAttribute("mul", new Integer(num1 * num2));
request.setAttribute("div", new Integer(num1 / num2));
//결과 페이지로 이동
//나쁜예)
//Redirect로는 데이터를 보낼 수 없다!!
//response.sendRedirect("result.jsp");//request는 페이지 전환 시 삭제되기때문에 response하는 순간 request이미 삭제됨
//1번 방식
//RequestDispatcher dis = request.getRequestDispatcher("result.jsp");
//dis.forward(request, response);//현 페이지에 있는 request를 다음 페이지로 전달하라
//2번 방식
//pageContext.forward("result.jsp");
//3번 방식
%>
<jsp:forward page="result.jsp"/>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>계산 결과</title>
</head>
<body>
덧셈 결과 : <%=request.getAttribute("sum") %><br>
뺄셈 결과 : <%=request.getAttribute("sub") %><br>
곱셈 결과 : <%=request.getAttribute("mul") %><br>
나눗셈 결과 : <%=request.getAttribute("div") %><br>
<%// 브라우저 출력 화면 >> 덧셈 결과 : null 뺄셈 결과 : null 곱셈 결과 : null 나눗셈 결과 : null %>
</body>
</html>