JSP - <FOCUS>페이지 이동 시 데이터 값 전달, DB 데이터 활용
9가지의 내장 객체
request 객체
- 클라이언트에서 서버로 전송되는 데이터에 대한 정보를 저장
요청 관련 메소드
- getContextPath() : JSP페이지가 속한 웹 어플리케이션의 컨텍스트 패스를 구한다
Context - 독립된 하나의 웹 어플리케이션을 돌릴 수 있는 환경
- getMethod() : 요청방식이 Get, post방식인 지 알려줌
- getServerName() : 서버이름을 구한다
- getServerPort() : 서버포트를 구한다
- getRequestURI() : 요청 URL에서 쿼리문자를 제외한 부분
헤더 관련 메소드
- getCookies() : 요청과 관련된 모든 쿠키를 구한다, 쿠키가 배열로 넘어온다
요청 파라미터 관련 메소드
- getParameter(String name) : 지정 이름의 파라미터 중 첫 번째 파라미터의 값을 구한다(단수형)
- getParameterNames() : 모든 파라미터의 이름을 구함(복수형)
- getParameterValues(String name) : 지정 이름을 가진 파라미터의 모든 값을 String[]으로 구한다(복수형)
예제 request>1.jsp 폼형식
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="1-1.jsp" method="post"> 이름 : <input type="text" name="name" size="10">
<br>
주소 : <input type="text" name="address" size="30">
<br>
좋아하는 동물 :
<input type="checkbox" name="pet" value="dog">강아지
<input type="checkbox" name="pet" value="cat">고양이
<input type="checkbox" name="pet" value="pig">돼지
<br>
<input type="submit" value="전송">
</form>
</body>
</html>
1-1.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import = "java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% request.setCharacterEncoding("euc-kr");%>
<h3>요청 결과보기</h3>
이름: <%= request.getParameter("name") %>
<br />
주소: <%= request.getParameter("address") %>
<br />
<h3>getParameterValues() 사용 결과</h3>
좋아하는 동물 :
<% //여러 개의 데이터값을 가져온다 String values[] = request.getParameterValues("pet");
if (values != null) {
for(int i=0; i<values.length; i++) {
%>
<%= values[i] %>
<% }
}
%>
<h3>getParameterNames</h3>
<% //순서대로 들어오지 않아 잘 쓰진 않는다
Enumeration en = request.getParameterNames();
while(en.hasMoreElements()) {
String name = (String)en.nextElement();
%>
<%= name
%>
<%
}
%>
</body>
</html>
response객체
- JSP 페이지의 실행결과를 웹 브라우저로 되돌려줄 때 사용하는 객체
URL 재작성 관련 메소드
- sendRedirect(url) : 웹 서버가 웹 브라우저에게 지정한 URL로 자동 이동되도록 한다
response.sendRedirect("main.jsp?name=" + ex.toEng(name));
2.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center><!-- 로그인 버튼을 누르면 아이디와 패스워드로 2_login.jsp로 이동하여 회원 인증 처리를 한다. -->
<form action="2_login.jsp" method="post">
<table>
<tr>
<td align="right">아이디 :</td>
<td align="left"><input type="text" name="id"></td>
</tr>
<tr size=80>
<td align="right">패스워드 :</td>
<td align="left"><input type="password" name="pw"></td>
</tr>
<tr>
<td><input type="submit" value="로그인"></td>
<td><input type="reset" value="취 소"></td>
</tr>
</table>
</form>
</body>
</html>
2_login.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import = "util.StringUtil" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!--
데이터 베이스와 접목하면 여러명의 회원 정보를 저장할 수 있다.
사용자에 대해서 회원 인증 서비스를 해 줄 수 있지만,
데이터 베이스와 연동하는 방법을 배우지 않아서 이 예제에서는한 명의 회원만을 사용한다.
-->
<%
String id = "ss";
String pw = "ss";
String name = "쏘SPACE";
//아이디와 비밀번호가 모두 일치해야 로그인이 성공한다
if(id.equals(request.getParameter("id")) && pw.equals(request.getParameter("pw"))) {
//회원이름을 영문으로 디코딩한 후 쿼리 스트링으로 넘겨준다
response.sendRedirect("2_main.jsp?name="+ StringUtil.toEng(name));
}
//아이디와 비밀번호가 일치하지 않았을 때 로그인 페이지로 이동
else {
response.sendRedirect("2.jsp");
}
%>
</body>
</html>
2_main.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="util.StringUtil" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
String name = request.getParameter("name");
%>
<!-- 영문으로 디코딩한 후 넘겨진 파라미터는 반드시 한글로 인코딩 한다 -->
<%= StringUtil.toHangul(name) %>님 안녕하세요.
<br />
오늘도 즐거운 하루 보내세요!!
</body>
</html>
액션태그
- JSP 엔진에 특정 동작을 지시
중요한 건 TAG
<jsp:forwoard> 액션태그
- 현재 JSP페이지에서 URL로 지정한 특정 페이지로 넘어갈 때 사용하는 태그
ex>from.jsp에서 <jsp:forwoard page="to.jsp"> 해 줬을 때, from.jsp를 실행하면
from.jsp의 제어가 to.jsp로 완전히 가버린다. (제어가 이동된다.)
But, 주소는 이동하지 않는다.
- 형식 : <jsp:forwoard page="to.jsp">
이런 식으로 많이 쓰인다(MVC 모델 구조의 첫 번째)
String forwardPage = null;
if (조건 판단) {
forwardPage = "페이지 주소 1"
} else if (조건 판단) {
forwardPage = "페이지 주소 2"
<jsp:forward = "<%= forwardPage %>" />
- 자바스크립트 페이지 이동 시의 형식
<script type="text/javascript">
location.href = "<%= request.getContextPath() %>이동할페이지";
</script>
예제>forward 형식 사용방법
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
보고싶은 페이지 선택하기
<%
String sel= request.getParameter("code");
if (sel != null) {
if(sel.equals("A")) {
%>
<jsp:forward page="1.jsp" />
<% } else if(sel.equals("B")) { %>
<jsp:forward page="2.jsp" />
<% } else if(sel.equals("C")) { %>
<jsp:forward page="2_main.jsp" />
<% }
}
%>
<form action="1.jsp">
<select name="code">
<option value="A">A페이지</option>
<option value="B">B페이지</option>
<option value="C">C페이지</option>
</select>
<input type="submit" value="이동">
</form>
</body>
</html>
출력문 >
보고싶은 페이지 선택하기
<select name="code"></select> <input value="이동" type="submit" /></form>
<jsp:param> 태그
- 요청한 페이지로 정보를 전달할 때 사용하는 태그
형식 : <jsp:param name="인자" value="인자값" />
<jsp:include> 액션태그
- 현재 페이지에 다른 페이지의 내용을 포함시키기 위해 사용되는 태그
- 형식 : <jsp:include page="삽입할 페이지" flush="true" or "false" />
flush는 출력 버퍼에 저장되어 있는 데이터를 내준다는 의미,
false로 해도 데이터는 보내주지만 실제적인 것을 보내주진 않는다
각각의 장점과 단점을 갖고 있다.
페이지 모듈화
include액션태그를 붙여넣기식으로 쓴다
액션태그 - 결과값만 들어온다
지시자 - 소스 통째로 들어온다
템플레이터..
본문의 내용까지도 include로 만들어준다
hidden 태그
- 화면에 보여지진 않지만, 데이터는 전달된다
- 형식 : <input type="hidden" name="pw" value="1234">
쿠키
- 클라이언트에 저장된 적은 양의 정보, 웹 브라우저에 탑재되어 전송
- 생성자 : Cookie(String name, String value);
세션
- 상태유지, 다른 페이지로 이동하더라도 그전 페이지의 정보가 유지되야 하는 것
1. JSP서버에서만 접근가능
session 객체가 제공하는 메소드
- getAttribute() : 오브젝트를 저장한다
session값 저장하기
- sessoin.set
예제>세션을 이용한 회원 인증 프로그램
- 2.jsp와 2_login.jsp는 위의 소스를 참고한다
2_mail.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ page import="util.StringUtil" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center>
<%
String name = request.getParameter("name");
%>
<!-- 영문으로 디코딩한 후 넘겨진 파라미터는 반드시 한글로 인코딩 한다 -->
<%=
StringUtil.toHangul(name)
%>님 안녕하세요.
<br>
오늘도 즐거운 하루 보내세요!!
<form action="2_logout.jsp" method="post">
<input type="submit" value="로그 아웃">
</form>
</center>
</body>
</html>
2_logout.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<script type="text/javascript">
alert("로그 아웃 되었습니다.");
</script>
</head>
<body>
<%
session.invalidate();
%>
</body>
</html>
출력문>>
2.jsp
아이디 : | <input name="id" /> |
패스워드 : | <input type="password" name="pw" /> |
<input value="로그인" type="submit" /> | <input value="취 소" type="reset" /> |
2_login.jsp을 거쳐서 2_main.jsp가 출력
XXX님 안녕하세요.
오늘도 즐거운 하루 보내세요!!
2_logout.jsp
alert창에서 '로그 아웃 되었습니다.' 출력
내장 객체 정리
page - 그 페이지 안에서만 사용
request - 다음 페이지의 요청까지(포워드로 넘어가는 경우엔 그 페이지까지
session - 로그아웃할 때까지 사용
Appkication - 톰캣 끝날때까지 사용
'Study > JSP' 카테고리의 다른 글
[jsp] 회원가입, 로그인, 메인, 회원수정, 회원삭제, 자바빈 실습 (0) | 2019.05.20 |
---|---|
[jsp] 자바빈, JDBC, DBCP (0) | 2019.05.20 |
[jsp] request, response, <jsp:forward>, <jsp:param>, 쿠키 실습 (0) | 2019.05.17 |
[jsp] 기초 실습 (0) | 2019.05.16 |
[jsp] 기초 (0) | 2019.05.16 |