안녕하세요 이번 글에서는 JSP에서 사용되는 표준 액션 방식에 대해 알아보겠습니다.
표준 액션은 스크립팅 코드(스크립틀릿, 표현식, 선언문)를 사용하지 않고 객체의 프로퍼티 값을 출력할 수 있는 방법입니다.
먼저 표준 액션 방식을 사용하지 않고 스크립팅 코드를 사용하여 보겠습니다.
1. 스크립팅 코드
<%@ 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="test.do" method="post">
<h1>이름</h1> <input type="text" name="name"> <br>
<h1>나이</h1> <input type="number" name="age"> <br>
<input type="submit" value="전송">
</form>
</body>
</html>
index.jsp에 위같이 코딩하여 줍니다,
package com.main.model;
public class Member {
private String name; //이름
private int age; //나이
public Member(){
}
public Member(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Member 객체에 필드 변수를 선언하여 주고 생성자와 getter와 setter를 만들어 줍니다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//한글깨짐 방지
request.setCharacterEncoding("UTF-8");
//Member 객체에 전달받은 파라미터 값을 셋팅하여 줍니다.
Member m = new Member(request.getParameter("name"),(Integer.parseInt(request.getParameter("age"))));
//request 객체에 Member객체에 셋팅하여 줍니다.
request.setAttribute("Member", m);
//RequestDispatcher 객체를 호출하여 요청을 보낼 jsp 경로를 호출하여 줍니다.
RequestDispatcher view = request.getRequestDispatcher("view/next.jsp");
//초기화한 객체를 forward 방식으로 request , response를 jsp에서 사용할 수 있도록 넘겨 줍니다.
view.forward(request, response);
}
서블릿에 위처럼 코딩하여 줍니다.
<%@page import="com.main.model.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Member m = (Member)request.getAttribute("Member");
String name = m.getName();
int age = m.getAge();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>이름 : <%=name %></h1> <br>
<h1>나이 : <%=age %></h1>
</body>
</html>
마지막으로 next.jsp에 위처럼 코딩하여 준 다음 서버를 실행시켜 봅시다.
위처럼 입련한 값이 잘 전달되는 것을 확인할. 수 있습니다.
2. 표준 액션 사용하기
<%@page import="com.main.model.Member"%>
<%@ 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>
<jsp:useBean id="Member" class="com.main.model.Member" scope="request" />
<h1>이름 : <jsp:getProperty name="Member" property="name" /></h1> <br>
<h1>나이 : <jsp:getProperty name="Member" property="age" /></h1>
</body>
</html>
next.jsp 화면만 위와 같이 수정하여 줍니다. 서버를 실행시키게 되면 스크립팅 코드를 사용한 것과 같은 결과 화면을 확인할 수 있습니다.
위화면의 설명을 참고해주세요.
<%@page import="com.main.model.Member"%>
<%@ 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>
<jsp:useBean id="Member" class="com.main.model.Member" scope="request" />
<h1>이름 : <jsp:getProperty name="Member" property="name" /></h1> <br>
<h1>나이 : <jsp:getProperty name="Member" property="age" /></h1><br>
<!-- 수정하는 코드 -->
<jsp:setProperty name="Member" property="name" value="사과쥬스"/>
<!-- 수정하는 코드 -->
<!-- 수정하는 코드 -->
<jsp:setProperty name="Member" property="age" param="changeAge"/>
<!-- 수정하는 코드 -->
<h1>수정된 이름 : <jsp:getProperty name="Member" property="name" /></h1>
<h1>수정된 나이 : <jsp:getProperty name="Member" property="age" /></h1><br>
</body>
</html>
setProperty를 사용하여 이미 동일한 이름의 프로퍼티가 있으면 수정하여 주고 없으면 생성하여 줍니다.
※ setProperty의 param 속성은 request.getParameter("changeAge")와 같은 역할을 합니다.
마지막으로 표준 액션의 다형성 사용방법을 알아보겠습니다.
package com.main.model;
public class Employee extends Member{
public Employee() {
}
public Employee(String name, int age ) {
super(name, age);
}
}
Member을 상속받는 Employee 클래스를 위와 같이 생성하여 줍니다.
표준 액션을 이용하여 참조는 Member로 지정하고 객체의 타입은 Employee로 지정하여 보겠습니다.
<%@page import="com.main.model.Member"%>
<%@ 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>
<jsp:useBean id="Employee" type="com.main.model.Member" class="com.main.model.Employee" scope="request" />
<h1>이름 : <jsp:getProperty name="Employee" property="name" /></h1> <br>
<h1>나이 : <jsp:getProperty name="Employee" property="age" /></h1><br>
<!-- 수정하는 코드 -->
<jsp:setProperty name="Employee" property="name" value="사과쥬스"/>
<!-- 수정하는 코드 -->
<!-- 수정하는 코드 -->
<jsp:setProperty name="Employee" property="age" param="changeAge"/>
<!-- 수정하는 코드 -->
<h1>수정된 이름 : <jsp:getProperty name="Employee" property="name" /></h1>
<h1>수정된 나이 : <jsp:getProperty name="Employee" property="age" /></h1><br>
</body>
</html>
위 코드처럼 jsp:useBean 태그에 type을 참조받는 객체로 지정해줍니다.
이것을 자바 코드로 풀어보면
Member = new Employee(); 이런 식으로 나타냅니다.
다음 글에서는 EL표현식에 대해서 알아보겠습니다.