자바빈과 액션태그
1. 액션태그란?
- 자바 문법을 태그형으로 제작한 것이 액션태그이다.
- 형식 :
<jsp: >
- 아래 3가지 종류만 기억하면 된다.
(1)<jsp:include page="첨부할 jsp파일명">
(2)<jsp:useBean id="dao" class="MemberDAO">
(3)<jsp:setProperty name="객체명" property="">
2. 액션태그의 종류
2.1 <jsp:include page="첨부할 jsp파일명">
2.2 <jsp:useBean id="dao" class="MemberDAO">
- id는 객체명이 된다.
Note
- JSP : 새로운 데이터형 만들기 , 여러 데이터를 모아서 관리 (Bean)
- MyBatis : 데이터를 모아서 전송하는 것을 목적으로 함 (DTO)
- Spring : 값을 저장하는 클래스 (~VO)
- 자바에서의 코딩으로 구현하면 아래와 같으며, 메모리 할당을 하는 용도로 사용된다.
MemberDAO dao = new MemberDAO();
- 아래 자바코딩처럼 메모리 할당하지 말고,
MemberVO vo=new MemberVO();
- 아래 JSP 액션 태그를 써야 한다.
<jsp:useBean id="vo" class="MemberVO">
2.3 <jsp:setProperty name="객체명" property="변수명" value="값">
- name : id명칭
- property : 변수명
-
setProperty는 setXxx()에 값을 채워주는 역할을 담당한다.
- 자바에서의 아래 코딩이
vo.setName("홍길동");
vo.setNo(1);
- jsp에서는 아래 액션태그로 대체된다.
<jsp:setProperty name="vo" property="no" value="1">
<jsp:setProperty name="vo" property="name" value="홍길동">
- *을 주게 되면 전체 변수에 값을 한 번에 채울 수 있다.
<jsp:setProperty name="vo" property="no" value="*">
- 폼에 입력한 값을 자바 객체에 저장할때 유용하게 사용된다
3. 액션태그의 목적은?
- 싱글턴
-
<% %>
형식의 자바 코딩을 제거하기 위함이다.
String name=request.getParameter("name");
String no = request.getParameter("no");
String subject=request.getParameter("subject");
String content=request.getParameter("content");
String pwd=request.getParameter("pwd");
DataBoardVO vo= new DataBoardVO();
vo.setNo(Integer.parseInt(no));
vo.setName(name);
vo.setSubject(subject);
vo.setContent(content);
vo.setPwd(pwd);
- 위의 코딩과 같이 vo에 값을 채워주는 과정을 하나로 줄여주기 위해 사용한다.
4. useBean/setProperty 액션 태그 연습하기
4.1 MemberBeans.java 만들기
4.2 input.jsp만들기
- form태그에 담아서 output.jsp로 보내기
<%@ 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>
<h1>회원정보</h1>
<form method=post action="output2.jsp">
이름:<input type=text name=name size=15><br>
성별:<input type=radio name=sex value="남자" checked>남자
<input type=radio name=sex value="여자">여자<br>
나이:<input type=text name=age size=15><br>
주소:<input type=text name=addr size=30><br>
전화:<input type=text name=tel size=30><br>
<input type=submit value=전송>
</form>
</body>
</html>
4.3 output.jsp : 액션태그 사용하지 않고 값 받기
- jsp파일에 자바코딩을 구현하여 값을 받는 방식이다.
- 사용자가 보내준 데이터 받기
- 받은 데이터 한글로 변환하기
- 받은 데이터 한 개의 클래스로 묶어서 관리하기
<%@page import="com.sist.temp.MemberBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
// 사용자가 보내준 데이터 받기
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
String age=request.getParameter("age");
String addr=request.getParameter("addr");
String tel=request.getParameter("tel");
MemberBean bean = new MemberBean();
bean.setName(name);
bean.setSex(sex);
bean.setAge(Integer.parseInt(age));
bean.setAddr(addr);
bean.setTel(tel);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
이름:<%= bean.getName() %><br>
성별:<%= bean.getSex() %><br>
나이:<%= bean.getAge() %><br>
주소:<%= bean.getAddr() %><br>
번호:<%= bean.getTel() %><br>
</body>
</html>
4.4 input.jsp만들기
- form태그에 담아서 output2.jsp로 보내는 것으로 변경하기
4.5 output2.jsp : 액션태그로 값 받기
- jsp:useBean : 메모리 할당하는 기능을 함
- jsp:setProperty : 값을 채우는 역할을 한다.
- 정수가 있는 경우, 자동으로 Integer.parseInt() 를 한다.
- 값을 모아서 받는 것이 아니라 한 개의 데이터를 받는 경우에는 request를 이용해서 받는 것이 좋다.
- 액션태그는 사용자가 보내주는 데이터가 많은 경우에 사용한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="com.sist.temp.*"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="bean" class="com.sist.temp.MemberBean">
<jsp:setProperty name="bean" property="*"/>
</jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>jsp액션태그로 받기</h1>
이름:<%= bean.getName() %><br>
성별:<%= bean.getSex() %><br>
나이:<%= bean.getAge() %><br>
주소:<%= bean.getAddr() %><br>
번호:<%= bean.getTel() %><br>
</body>
</html>