page : 페이지 내에서 지역변수처럼 사용
request : http요청을 was가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우에 사용
session : 웹 브라우저 별로 변수가 관리되는 경우 사용
accplication : 웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용(모든 클라이언트에게 공통적으로 무언가를 보여줄 때 사용)
request와 session을 많이 사용한다.
1-1. 사용 메서드
setAttribute와 getAttribute를 많이 사용한다.
<%@ 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>
<%@ 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>
<%@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>
<%@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>
<%@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>
<%@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>
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;
}
}