열심히 끝까지

디바이스 융합 자바(Java) day38 - JSP에서 자바 빈즈 선언하기 본문

디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)

디바이스 융합 자바(Java) day38 - JSP에서 자바 빈즈 선언하기

노유림 2022. 8. 3. 17:33

[오늘 수업]

[JSP->서블릿(.JAVA)]

[자바빈즈]
     : JSP 코드에서 JAVA 언어의 사용을 최소화하기위해 사용!!!!!
      (단 한 줄도 안나오게 할 예정)

- 빈즈(.java)는 클래스 구조
       private 멤버변수
       getter, setter,
       기본 생성자☆

>> 멤버변수를 초기화하는 역할 ==> 생성자가 진행
      : 기본 생성자 + setter 필수! (student(a, b)에 예시)

- JSP에서 빈즈를 선언하여 사용
    >>   선언하기 위해서는 
           ★<jsp:useBean /> 필수 << 기본 생성자가 있어야 작성 가능
                     cb = request.getAttribute("cb");
                     if(cb==null){
                               CalcBean cb = new CalcBean();
                               request.setAttribute("cb", cb);
                     }
                     id 속성 : 인스턴스명
                     class 속성 : 클래스(자바 빈즈)명. 패키지 경로도 반드시 포함되어 있어야 함
                     scope 속성 : 유효 범위
                                     : 요청(request), 브라우저(session), 서버(application) 등으로 늘릴 수 있음
 
           ★<jsp:setProperty />도 따라옴
                : 자동 매핑을 위해서 
                  "멤버변수명==JSP 변수명" 맞춰주어야 함
           ★<jsp:getProperty />에 대하여
                : Java 코드 사용을 최소화하는 것이 좋지만
                  <%= %>을 더 권장

 

a.html-------------------------------

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 페이지</title>
</head>
<body>

<form action='b.jsp' method='post'>
	<table border="2">
		<tr>
			<td>아이디</td>
			<td><input type='text' name='id' required></td>
		</tr>
		<tr>
			<td>비밀번호</td>
			<td><input type='password' name='pw' required></td>
		</tr>
		<tr>
			<td colspan="2" align="right"><input type='submit' value='로그인'></td>
		</tr>
	</table>
</form>

</body>
</html>

 

b.jsp-------------------------------

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="lb" class="test.LoginBean"/>
<jsp:setProperty property="*" name="lb"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 결과 페이지</title>
</head>
<body>

<%
	if(lb.login()){
			out.println("<H1>로그인성공</H1>");
	}
	else{
		out.println("<SCRIPT>alert('로그인 실패...')</SCRIPT>");
	}
%>

입력한 아이디 : <%=lb.getId() %><br>
입력한 비밀번호 : <%=lb.getPw() %>

</body>
</html>

 

LoginBean.java------------------------

package test;

public class LoginBean {
	private String id;
	private String pw;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	
	final String adminId="admin";
	final String adminPw="1234";
	// final이 붙은 변수들은 추후 DB의 데이터로 대체할 예정!!!
	// 로그인 관련 로직
	public boolean login() {
		if(id.equals(adminId)&&pw.equals(adminPw)) {
			return true;
		}
		return false;
	}
	
}

 

 

 


문제-------------------------------------------------
main.jsp : 이 페이지가 표지페이지(첫 페이지)
     버튼 : 등록하기
        <hr>
     [사전에 등록한 사람들]
     1. 홍길동 90점 남
     2. 아무무 58점 남
     3. 티모 81점 남
     4. 애쉬 67점 여
     5. 가렌 43점 남
     ...

등록하기 버튼 누르면
form.html : 로직이 안들어감
       이름(name)
       점수(score)
       성별(gender)
      [등록하기]

result.jsp
      입력하신 정보는
      가렌 43점 남 입니다.
      [메인으로 돌아가기]
MemberBean.java
      MemberVO 역할
MemberManagerBean.java
      Member 테이블 역할
      MemberDAO 역할
      DB 역할
      ArrayList<MemberBean>

 

main.jsp----------------------------

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="test.MemberBean, java.util.ArrayList"%>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="mb" class="test.MemberBean"/>
<jsp:useBean id="mmb" class="test.MemberManagerBean" scope="session"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표지페이지</title>
</head>
<body>

<a href="form.html"><input type="button" id="join" value="등록하기"></a>
<hr>
<ol>
	<%
		ArrayList<MemberBean> datas=mmb.selectAll(mb);
		if(datas.size()>0){
			
		
		for(MemberBean m : mmb.selectAll(mb)){
		
	%>
	<li><%=m.getUname()%> <%=m.getScore()%>점 <%=m.getGender()%></li>
	<%
		}
		}
		else{
			out.println("<H3>출력할 데이터가 없습니다...</H3>");
		}
	%>
</ol>


</body>
</html>

 

form.html---------------------------

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>등록하기</title>
</head>
<body>
<form action="result.jsp" method="post">
	<table border="2">
		<tr>
			<td>이름</td>
			<td><input type="text" name="uname"></td>
		</tr>
		<tr>
			<td>점수</td>
			<td><input type="number" name="score" min="0" max="100"></td>
		</tr>
		<tr>
			<td>성별</td>
			<td>
				<select name="gender">
					<option>남</option>
					<option>여</option>
				</select>
			</td>
		</tr>
		<tr>
			<td colspan="2" align="right"><input type="submit" value="등록하기"></td>
		</tr>
	</table>
</form>
</body>
</html>

 

※ 기억해둘 것!!!!

>>>> JSP는 id가 아닌 name으로 값을 받아옴
       > 그렇기 때문에 설정할 때, name으로 설정해야 함
       > id는 CSS 에서만 가능

 

result.jsp----------------------------

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="test.MemberBean"%>
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="mb" class="test.MemberBean"/>
<jsp:useBean id="mmb" class="test.MemberManagerBean" scope="session"/>
<jsp:setProperty property="*" name="mb"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과 페이지</title>
</head>
<body>
<%
	mmb.insert(mb); 
	MemberBean data = mmb.selectOne(mb);
%>
<table border="2">
	<tr>
		<td>이름</td>
		<td><%=request.getParameter("uname") %></td>
	</tr>
	<tr>
		<td>점수</td>
		<td><%=mb.getScore() %>점</td>
	</tr>
	<tr>
		<td>성별</td>
		<td><%=data.getGender() %></td>
	</tr>
</table>
<hr>
<a href="main.jsp">메인으로 돌아가기</a>

</body>
</html>

 

MemberBean.java----------------

package test;

public class MemberBean { // MemberVO
	private String uname;
	private int score;
	private String gender;
	
	
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	
}

 

MemberManagerBean.java----

package test;

import java.util.ArrayList;

public class MemberManagerBean {
	
	ArrayList<MemberBean> datas = new ArrayList<MemberBean>();
	
	public boolean insert(MemberBean mb) { // 이름, 성적, 성별 등록
		datas.add(mb);
		return true;
	}
	
	public ArrayList<MemberBean> selectAll(MemberBean mb){ // 모든 것 출력
		return datas;
	}
	
	public MemberBean selectOne(MemberBean mb){
		for(MemberBean m : datas) {
			if(mb.getUname().equals(m.getUname())) {
				return m;
			}
		}
		return null;
	}
	
	
}