클래스
필드
package static0531;
public class Student {
// 인스턴스 변수 저장 공간
public String name;
public int kor;
public int math;
public int eng;
}
index, 배열 초기값 , 학생 정보를 저장하는 역활
싱글톤 대신 해당 코드로 할 시 주소값이 바뀌어서 새로고침하면 데이터가 바뀜
package static0531;
public class HandleStu {
// index, 배열 초기값 설정
// stu 배열을 초기화하고 학생 정보를 저장하는 역할
// 학생 정보를 저장하는 배열인 stu를 Singleton과 공유
public static int index = 0;
public static Student[] stu = new Student[3];
public static void create() {
for(int i=0; i < stu.length; i++ ) {
stu[i] = new Student();
}
}
}
싱글톤 클래스
package static0531;
public class Singleton {
//싱글톤 : 한 번의 인스턴스화만 허용하고 해당 인스턴스를 전역적으로 접근
// 학생 정보를 저장하는 배열인 stu를 공유
private static Singleton st = new Singleton();
public Student[] stu = new Student[3];
// 사용자가 입력한 정보는 stu 배열에 저장
private Singleton() {
for(int i=0; i < stu.length; i++ ) {
stu[i] = new Student();
}
}
public static Singleton getInstance() {
return st;
}
}
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>
<%
//번호, 이름, 국어 점수, 수학 점수, 영어 점수를 입력 받고 res.jsp로 이동
%>
<form action ="res.jsp">
번호(0~2)<input type="text" name="bunho" /><br/>
이름<input type="text" name="name" /><br/>
국어<input type="text" name="kor" /><br/>
수학<input type="text" name="math" /><br/>
영어<input type="text" name="eng" /><br/>
<input type="submit" />
</form>
</body>
</html>
입력 받아온 정보를 처리하는 역할
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="static0531.*" %>
<%
// Singleton 클래스의 인스턴스를 가져옴
// 한 번의 인스턴스화만 허용하고 해당 인스턴스를 전역적으로 접근
Singleton st = Singleton.getInstance();
//사용자가 입력한 학생 정보를 처리하는 역할
String bunho = request.getParameter("bunho");
int index = Integer.parseInt(bunho);
//request.getParameter => 사용자가 입력한 정보를 변수에 저장
String name = request.getParameter("name");
String kor = request.getParameter("kor");
// Integer.parseInt => 입력받은 문자열을 int타입으로 변경
int kscore = Integer.parseInt(kor);
String math = request.getParameter("math");
int mscore = Integer.parseInt(math);
String eng = request.getParameter("eng");
int escore = Integer.parseInt(eng);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<br/>
<%
//Singleton 인스턴스인 st의 stu 배열에서 입력된 인덱스(index)에 해당하는 학생 객체의 이름을 입력값으로 설정합니다.
//예) st.stu[0].name = name;은 입력된 인덱스 0에 해당하는 학생 객체의 이름을 입력값으로 설정
st.stu[index].name = name;
st.stu[index].kor = kscore;
st.stu[index].math = mscore;
st.stu[index].eng = escore;
//입력된 학생 정보는 Singleton 인스턴스의 stu 배열에 저장됩니다.
//이 배열은 HandleStu 클래스에서 생성되며, 각 인덱스에는 학생 객체가 할당
%>
</body>
</html>
출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="static0531.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//HandleStu.create();
// Singleton 인스턴스를 생성하고, stu 배열의 각 학생 정보를 가져와 출력
Singleton s1 = Singleton.getInstance();
for (Student st : s1.stu){
out.println(st.name);
out.println(st.kor);
out.println(st.math);
out.println(st.eng);
out.println("<br/>");
}
%>
</body>
</html>
실행
1. stuForm.jsp 실행 후 사용자에게 입력 받음 번호는(0~2)는 배열 인덱스
2. 사용자에게 입력 받은 값 저장 ( 새로고침 후 적용 )
3. stuForm.jsp 뒤로 가기 후 번호 (1) 값 입력 후 제출
4. viewstu.jsp 페이지 새로고침하면 번호(1)값도 저장
5. 동일하게 3, 4번 동일하게 진행 번호(2)값도 저장
6. viewstu.jsp 페이지 새로고침해도 값이 초기화가 되지 않음 ( 싱글톤 활용 )
싱글톤 : 한 번의 인스턴스화만 허용하고 해당 인스턴스를 전역적으로 접근
'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정 > 추가 복습' 카테고리의 다른 글
DB_JDBC (0) | 2023.07.02 |
---|---|
필드, 생성자, 메소드 정리 (2) | 2023.06.06 |
싱글톤 3 ( java ) 이름, 국영수 점수 입력=>총점, 평균, 최고점수 (0) | 2023.06.02 |
싱글톤 2 ( JSP 환경 ) 이름, 국영수 점수 입력=>총점, 평균, 최고점수 (0) | 2023.06.01 |
생성자, 메서드1 (0) | 2023.05.29 |