카테고리 없음

[ JSP 표준액션 사용하기 ] - Head Frist Servlet & Jsp

사과씨앗 2020. 12. 25. 20:33
728x90
반응형

안녕하세요 이번 글에서는 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에 위같이 코딩하여 줍니다,

 

Member객체를 만들기 위해 Member 클래스를 생성하여 줍니다.

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에 위처럼 코딩하여 준 다음 서버를 실행시켜 봅시다.

index.jsp
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표현식에 대해서 알아보겠습니다.

728x90
반응형