attribute scope

전영덕·2023년 3월 26일
0

JSP

목록 보기
6/16

attribute scope

  • page : 페이지 내에서 지역변수처럼 사용

  • request : http요청을 was가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우에 사용

  • session : 웹 브라우저 별로 변수가 관리되는 경우 사용

  • accplication : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용(모든 클라이언트에게 공통적으로 무언가를 보여줄 때 사용)

  • request와 session을 많이 사용한다.

1-1. 사용 메서드

  • setAttribute(String name, Object Value)
  • getAttribute(String name)
  • removeAttribute(String name)
  • getAttributeNames()

setAttribute와 getAttribute를 많이 사용한다.

attribute연습

  • 1과2 : request, session연습
    request.getParameter는 String으로 나오지만 request.getAttribute는 오브젝이므로 형변환을 해주어야한다.
  • 3과4 : ArrayList에 저장하기
  • 5와6 : 배열을 활용한 오브젝에 저장하기,
    당연히 저장할 타입인 오브젝에 대해 따로 클래스를 만들어주어야한다.
  • attribute1.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>
	<%
	//request.getParameter();로 앞단에서 form태그로 넘어온 데이터를 아래라고 가정하자.
	String userid = "apple";
	String userpw = "abcd1234";
	String username = "김사과";

	//request
	//	request.setAttribute("userid", userid);			//같은 값으로 셋팅을 많이 하는 편이다.
	//	request.setAttribute("userpw", userpw);
	//	request.setAttribute("username", username);

	//이동할 페이지에 넘겨주기
	//pageContext.forward("attribute2.jsp");
	//테스트 삼아해보기
	//response.sendRedirect("attribute2.jsp");

	//session
	session.setAttribute("userid", userid);
	session.setAttribute("userpw", userpw);
	session.setAttribute("username", username);
	//	pageContext.forward("attribute2.jsp");
	response.sendRedirect("attribute2.jsp");
	%>
</body>
</html>
  • attribute2.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>
	<%
	//request.getParameter는 형태가 스트링이므로 바로 스트링에 담으면 되지만 request.getAttribute는 
	//오브젝 형태이므로 형변환을 해야 오류가 나지 않는다.
	//		String userid = (String)request.getAttribute("userid");
	//		String userpw = (String)request.getAttribute("userpw");
	//		String username = (String)request.getAttribute("username");

	String userid = (String) session.getAttribute("userid");
	String userpw = (String) session.getAttribute("userpw");
	String username = (String) session.getAttribute("username");
	%>

	아이디 :<%=userid%><br> 
	비밀번호 :<%=userpw%><br>
	이름 :<%=username%><br>

</body>
</html>
  • attribute3.jsp
<%@page import="java.util.ArrayList"%>
<%@ 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>
	<%
		ArrayList<String> datas = new ArrayList<>();
		datas.add("Hello");
		datas.add("JSP");
		datas.add("너무");
		datas.add("즐거워요??");

		session.setAttribute("arMsg", datas);
		response.sendRedirect("attribute4.jsp");
	%>
</body>
</html>
  • attribute4.jsp
<%@page import="java.util.ArrayList"%>
<%@ 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>
<%
	ArrayList<String> datas = (ArrayList)session.getAttribute("arMsg");

	for(int i = 0; i<datas.size(); i++){
		out.println(datas.get(i)+ "<br>");
	}
%>
</body>
</html>
  • attribute5.jsp
<%@page import="com.codingbox.vo.User"%>
<%@ 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>
	<%
		//3명의 아이디, 이름, 나이
		//attribute6.jsp로 전송
		User[] arUser = {
				new User("apple", "김사과", 10),
				new User("java", "김자바", 20),
				new User("jsp", "이순신", 200)
		};
	
	request.setAttribute("users", arUser);
	//attribute6.jsp로 전송, out.println으로 출력하기
	pageContext.forward("attribute6.jsp");
	%>
</body>
</html>
  • attribute6.jsp
<%@page import="com.codingbox.vo.User"%>
<%@ 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>
	<%
	User[] users = (User[])request.getAttribute("users");

	for(int i = 0; i<users.length; i++){
		out.println(users[i].userid);
		out.println(users[i].username);
		out.println(users[i].age+"<br>");
	}
	%>
</body>
</html>
  • attribute5.jsp와 attribute6.jsp풀때 필요한 User 클래스
package com.codingbox.vo;

public class User {
	public String userid;
	public String username;
	public int age;
	
	public User(String userid, String username, int age) {
		super();
		this.userid = userid;
		this.username = username;
		this.age = age;
	}
}

0개의 댓글