ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP 액션태그
    jsp(Model1) 2020. 5. 15. 22:38

     

    액션 태그명 액션 태그 설명
    include <jsp:include> 다른 페이지의 실행 결과를 현재의 페이지에 포함시킬 때 사용
    forward <jsp:forward> 페이지 사이의 제어를 이동시킬 때 사용
    plug-in <jsp:plug-in> 웹 브라우저에서 자바 애플릿을 실행시킬 때 사용
    useBean <jsp:useBean> 자바빈을 JSP페이지에서 사용할 때 사용
    setProperty <jsp:setProperty> 프로퍼티의 값을 세팅할 때 사용
    getProperty <jsp:getProperty> 프로퍼티의 값을 얻어낼 때 사용

    *include : 페이지 디렉티브의 include 지시어랑은 비슷하지만 차이점이 있다.

    <jsp:include page="Top.jsp">
    	<jsp:param value="aaa" name="id"/>
    </jsp:include>

    이런식으로 <jsp:include>액션태그 안에 <jsp:param>액션태그를 써서 값을 넘겨줄 수가 있다.

    받는 쪽은 

    <%=request.getParameter("id") %>

    이런 식으로 받아주면 된다.

    페이지 디렉티브의 include 지시어로 

    <%@ include file="top.jsp?id=aaa" %>이런식으로 파라미터를 넘기면 되지 않겠냐고 할 수도 있겠지만 컴파일 오류가 발생한다.

     

    액션태그로 값을 넘겨주는 게 되는 이유가 뭐냐면 액션태그를 사용하면 각각 따로 실행이 된다. 액션태그를 사용했을 때는 먼저 jsp액션파일에 연결된 페이지가 컴파일이 되서, 그 결과가 통합 페이지에 보여지게 된다. 지시어를 사용하게 되면 한꺼번에 페이지로 다 들어온 다음 그 결과가 한번에 컴파일 된다.

     

    포워드 :  현재 페이지에서 다른페이지로 보내줄 때(흐름제어) 쓴다. jsp페이지 내장객체인 response.redirect()와의 차이점은 response.redirect()는 단순히 페이지만 이동이 가능하다. 예를 들어, 로그인을 하고 로그인 정보를 response.redirect()한페이지에서 보여주려면 이전 주소창(url)에서 로그인 정보를 넣어서 보내줘야한다. 포워드는 그렇게 할 필요 없이 계속 데이터가 살아있다. 또한 포워드로 넘겨주게 되면 url 주소는 포워드를 해준 주소지만 나오는 화면은 포워드에서 연결해준 화면이 나오게 된다.

     

     

    포워드는 ResponseSendRedirect를 ResponseSendProc에 포함시켜서 화면에 결과를 출력한다.

     

    *useBean : Bean을 사용하겠다. jsp에서 빈이란 자바 빈을 의미한다. 자바 빈이란?https://pjh3749.tistory.com/75참조

    VO클래스를 떠올리면 될 듯 하다.

     

    빈을 사용한 회원가입 페이지 jsp

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>
    <center>
    	<h2>회원 가입</h2>
    	<form action = "MemberJoinProc.jsp" method = "post">
    	<table width = "500" border = "1">
    		<tr height="50">
    			<td width="150" align="center">아이디</td>
    			<td width="350" align="center">
    				<input type="text" name="id" size="40" placeholder="아이디를 입력해주세요">
    			</td>
    		</tr>
    		<tr height="50">
    			<td width="150" align="center">패스워드</td>
    			<td width="350" align="center">
    				<input type="password" name="pass" size="40">
    			</td>
    		</tr>
    		</tr>
    		<tr height="50">
    			<td width="150" align="center">이메일</td>
    			<td width="350" align="center">
    				<input type="email" name="email" size="40">
    			</td>
    		</tr>
    		<tr height="50">
    			<td width="150" align="center">전화번호</td>
    			<td width="350" align="center">
    				<input type="tel" name="tel" size="40">
    			</td>
    		</tr>
    		<tr height="50">
    			<td width="150" align="center">주소</td>
    			<td width="350" align="center">
    				<input type="text" name="address" size="40">
    			</td>
    		</tr>
    		<tr height="50">
    			<td colspan="2" align="center">
    				<input type="submit" value="가입">
    			</td>
    		</tr>
    		</table>
    </body>
    </html>

    빈을 사용한 회원가입 처리 페이지 jsp

    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>
    
    	<h3>회원정보 보기</h3>
    	
    	<%
    		request.setCharacterEncoding("euc-kr");
    	%>
    	
    	<!-- request로 넘어온 데이터를 자바 빈즈랑 맵핑 시켜주는 useBean -->
    	<jsp:useBean id="mbean" class="bean.MemberBean">
    		<jsp:setProperty name="mbean" property="id"/>
    		<jsp:setProperty name="mbean" property="*"/><!-- *를 쓰면 모두 맵핑시켜주시오 -->
    	</jsp:useBean>
    	<!-- 여기서 id가 bean클래스를 지칭하는 이름(레퍼런스 명)
    	여기서 해준 것은 MemberBean mbean = new MemberBean();
    	이 의미와 같음. 즉 객체생성을 해준 것 -->
    	<!-- jsp 내용을 자바빈 클래스(MemberBean의미)에 데이터를 맵핑 -->
    	
    	당신의 아이디는 <jsp:getProperty property="id" name="mbean"/>
    	당신의 패스는 <jsp:getProperty property="pass" name="mbean"/>
    	당신의 이메일은 <jsp:getProperty property="email" name="mbean"/>
    	
    	
    	당신의 이메일은 
    	<%=mbean.getEmail() %><!-- 이렇게도 써줄 수 있다. -->
    	
    </body>
    </html>

    빈(빈은 자바 클래스이기 때문에 JavaResource/src에 패키지를 만들어주고 그 패키지 안에 만들어줘야한다.

    package bean;
    
    public class MemberBean {
    	
    	private String id;
    	private String pass;
    	private String email;
    	private String tel;
    	private String address;
    	
    	
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public String getPass() {
    		return pass;
    	}
    	public void setPass(String pass) {
    		this.pass = pass;
    	}
    	public String getEmail() {
    		return email;
    	}
    	public void setEmail(String email) {
    		this.email = email;
    	}
    	public String getTel() {
    		return tel;
    	}
    	public void setTel(String tel) {
    		this.tel = tel;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	
    	@Override
    	public String toString() {
    		return "MemberBean [id=" + id + ", pass=" + pass + ", email=" + email + ", tel=" + tel + ", address=" + address
    				+ "]";
    	}
    	
    	
    	
    	
    }
    

     

     

     

    *오늘 알게된 것 : jsp액션태그 사이에 주석 값을 넣으면 제대로 작동을 안한다.(에러가 발생한다).예를들어

    액션태그들의 공통점은 자기가 있는 페이지로 끌고 들어와서 사용을 하는 것 같다.

    <jsp:forward page="ResponseRedirect.jsp">
     	<jsp:param value="mmm" name="id"/><!-- 이렇게 하면 오류발생함 -->
     	<jsp:param value="000" name="phone"/><!-- 이렇게 하면 오류발생함 -->
     </jsp:forward>
     

    참조 : 인프런 -  JSP웹 쇼핑몰 프로그래밍 기본 과정(JSP WEB Programming) - JSP 액션태그

    'jsp(Model1)' 카테고리의 다른 글

    JSP와 데이터베이스연동2(DAO패턴 적용)  (0) 2020.05.17
    JSP와 데이터베이스 연동1  (0) 2020.05.16
    JSP 페이지 디렉티브 - Include  (0) 2020.05.15
    JSP 페이지 스크립트 요소  (0) 2020.05.10
    페이지 디렉티브  (0) 2020.05.10

    댓글

Designed by Tistory.