21.01.14
[저장영역]
- page : 페이지가 클라이언트에 제공 처리 하는동안 유지
- request : 클라이언트의 요청이 처리되는동안 유지
- session : 세션이 유지되는 동안 유지
- application : 어플리케이션이 실행되고 있는 동안 유지
<!--07_ Scope <index.jsp>, 아래 테이블 생략-->
<form action="application.jsp" method="post">
<table border="1">
<index.jsp>에서 정보를 입력함
<!--<application.jsp>-->
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String id = request.getParameter("id");
if(name !=null && id!=null){//어플리케이션 영역에 저장
application.setAttribute("name", name);
application.setAttribute("id", id);
}else{
response.sendRedirect("index.jsp");
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3><%=name %>님 반갑습니다.<%=name %>님의 아이디는 <%=id %>입니다</h3>
<form action="session.jsp" method="post">
<table>
<tr>
<td colspan="2">session에 저장될 내용들</td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email"/></td>
</tr>
<tr>
<td>연락처</td>
<td><input type="text" name="cellphone"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit"/></td>
</tr>
</table>
</form>
</body>
</html>
- index.jsp에서 보낸 name이 "name"인 파라메터와 "id"인 파라메터를 가져옴
- 받아온 값이 둘 다 null이 아니라면 어플리케이션 영역에 저장
- 하나라도 null이라면 index.jsp로 되돌아감
<application.jsp>에서 정보를 입력함
<!--<session.jsp>-->
<%
request.setCharacterEncoding("utf-8");
String email = request.getParameter("email");
String phone = request.getParameter("cellphone");
String name="";
if(email != null && phone != null){
name = (String)application.getAttribute("name");
session.setAttribute("email", email);
session.setAttribute("phone", phone);
}else{
response.sendRedirect("index.jsp");
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2><%= name%>님의 정보가 모두 저장되었습니다.</h2>
<a href="result.jsp">확인하러가기</a>
</body>
</html>
- email과 phone을 받아와서 session값으로 저장
<session.jsp>브라우저
<!--<result.jsp>-->
<h2>Application영역에 저장된 정보</h2><!-- 브라우저가 꺼지던지 변경되어도 남아있다.(서버가 꺼질 때 까지 유지) -->
<p>id : <%= application.getAttribute("id")%> </p>
<p>name : <%= application.getAttribute("name")%></p>
<h2>Session영역에 저장된 정보</h2><!-- 브라우저가 꺼지거나 변경되면 유지되지 못한다. -->
<p>email : <%= session.getAttribute("email")%></p>
<p>phone : <%= session.getAttribute("phone")%></p>
- application영역에 저장된 정보와 session에 저장된 정보를 가져온다.
<result.jsp>브라우저
- 여기서는 내용이 다 나오지만 session영역에 저장된 정보는 다른 브라우저에서 열거나 브라우저를 끄면
유지되지 못하고 어플리케이션은 다른 브라우저에서 열어도 유지된다.
- 어플리케이션 영역은 서버가 종료되어야 사라진다.
[Action TAG - forward]
- scriptlet은 유용하긴 하지만 페이지가 복잡해 보인다.
- 그래서 개발한것이 Action TAG이다.
( 하지만 action tag도 현재는 많이 사용하지 않는다)
<!--<forwardForm.jsp> 아래 테이블 생략-->
<form action="stopPage.jsp" method="post">
<input type="hidden" name="forwardPage" value="result.jsp"/><!-- 사용자에게 안보이게 -->
<table border="1px">
- stopPage.jsp는 거쳐가는 페이지고 result.jsp가 마지막 페이지
- 거쳐야 하는데 사용자에게는 보여지지 않기 위해 hidden타입으로 넣어줌
<!--<stopPage.jsp>-->
<%
request.setCharacterEncoding("UTF-8");
String fpage = request.getParameter("forwardPage");
%>
<!-- redirect와같이 특정 페이지로 전달할 수 있으나 차이점이있다. -->
<!-- redirect는 response객체를 이용하지만 forward는 request객체를 사용한다. -->
<!-- 가장 큰 차이점은 전송시 특정 값을 추가하여 보낼 수 있다.파라미터에 관한거는 리퀘스트, 리스폰스는 응답만 -->
<jsp:forward page ="<%= fpage%>">
<jsp:param name="tel" value="01012345667"/>
</jsp:forward>
- forwardForm.jsp에서 name이 forwardPage인 파라미터를 가져옴
- <jsp:forward>를 이용해 특정 페이지로 이동시킬 수 있다.
- response.sendRedirect()와 다른점 :
- 사용객체 : redirect -> response객체 , forward -> request객체
- 파라미터 : redirect -> 추가불가 , forward -> 추가가능(데이터 전달가능)
- 주소창에 표시 : redirect -> 마지막페이지 표시 , forward -> 거쳐간 페이지 표시(보안성유리)
<result.jsp>브라우저
- 최종 페이지는 result인데 forward로 거쳐와서 표시페이지가 stopPage로 나타나는 것을 알 수있다.
- stopPage.jsp에서 forward로 전달 된 값도 잘 출력 되는것을 볼 수 있다.
[Action TAG - include]
<!--<main.jsp>-->
<jsp:include page="header.jsp"/>
<h1>BODY</h1>
<!-- include에서는 페이지를 불러올 경우 파라메터를 추가 할 수 있다. -->
<jsp:include page="body.jsp">
<jsp:param name="name" value="my content"/>
</jsp:include>
<jsp:include page="footer.jsp"/>
- include는 특정 페이지를 불러온다.(iframe같은)
- <jsp:param>을 이용해 특정 파라미터를 보낼 수 있다.
<header.jsp> <footer.jsp> <body.jsp>
- <jsp:param>으로 보낸 데이터를 가져옴
<!--<body.jsp>-->
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
%>
<div>
<h3><%=name%></h3>
</div>
<main.jsp> 브라우저
[Action TAG - useBean]
- 우리가 Scriptlet을 최소화 시키려하는 이유는 JAVA로직과 HTML을 분리 시키기 위해서이다.
- JAVA Bean을 이용하면 Java 코드의 일부를 분리 할 수있다.
- 이것을 MODEL 1이라고 하는데 현재는 사용하지 않는다.
- MODEL 2는 MVC패턴에서 배운다.
- Bean은 여러 JSP에서 생성되는 데이터의 창고역할을 수행한다.
- Bean에서 data를 공통으로 저장하고 사용한다.
//Java Resources > src > com.beans(package) > FirstBean(class)
package com.beans;
public class FirstBean {
//Beans규약 : 빈의 멤버변수는 private으로 만들어야한다.
private String name="lee, min-joo";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<!--<beanForm.jsp>-->
<!-- method 기본값 get -->
<form action="beanProc.jsp">
이름 : <input type="text" name="userName"/>
<input type="submit"/>
</form>
<!--<beanProc.jsp>-->
<jsp:useBean id="firstBean" class="com.beans.FirstBean" scope="session"/>
<%
request.setCharacterEncoding("UTF-8");
//5. String name = request.getParameter("userName");
//6. firstBean.setName(name);
//response.sendRedirect("beanResult.jsp");
%><!-- param은 value변경할수도있다 -->
<jsp:setProperty name="firstBean" property="name" param="userName"/>
<jsp:forward page="beanResult.jsp"/>
- <jsp:useBean id="빈 이름" class="빈에 대응할 클래스" scope="빈의 사용범위">
- 빈에 값넣기 : 라인 5~6으로도 가능
- <jsp:setProperty name="빈이름" property="지정할이름" value="값" />
- <jsp:setProperty> : 빈에 값 넣는 방법, param이 아닌 일반 값을 넣고 싶다면 value속성으로 이용
<!--<beanResult.jsp>-->
bean value 출력 : <%= firstBean.getName() %>
bean value 출력 : <jsp:getProperty name="firstBean" property="name"/>
- 빈의 값을 출력하는건 둘 다 사용가능 하다.
[EL tag]
- action tag만으로는 sciptlet을 대체 하기가 어려워서 EL tag가 나왔다.
-<%= %>을 간단하게 표현하려는 것이 그 목적이다.
Author And Source
이 문제에 관하여(21.01.14), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mingmang17/21.01.14저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)