본문 바로가기

HTML

JSP - 액션태그

액션 태그(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>