열심히 끝까지
디바이스 융합 자바(Java) day38 - JSP에서 자바 빈즈 선언하기 본문
디바이스 융합 자바(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;
}
}