일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹 게임을 만들며 배우는 리액트
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
- 인프런
- intellij
- DB Browser
- JS 개념
- 리액트
- node.js로 로그인하기
- 따라하며 배우는 노드 리액트 기본 강의
- 모두의 파이썬
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- 자바스크립트
- 거북이 대포 게임
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- vs code 내 node
- Colaboratory 글자 깨짐
- 모던자바스크립트
- Python
- Do it 자바스크립트 + 제이쿼리 입문
- 노드에 리액트 추가하기
- props
- googleColaboratory
- react오류
- node.js 설치
- react
- Concurrently
- 타자 게임 만들기
- spring-boot
- Spring-Framework
- 계산맞추기 게임
- Today
- Total
프로그래밍 삽질 중
JSP Session & param 본문
※ seeion(중요함)
- HTTP 프로토콜 문제점 해결, HTTP 프로토콜이 비연결형 프로토콜이기에 한 페이지가 출력된 후
다음에는 클라이언트와 서버의 연결이 끊어짐
- jvavax.servlet.http.HttpSession 인터페이스의 참조 변수
- 접속하는 사용자 별로 따로 생성되며 일정시간 유지되고 소멸
- setAttribute() 메서드를 통해 임의의 값을 저장해 놓고 활용 가능
※ session이 주로 사용되는 경우
- 로그인 후 세션 설정하고 일정 시간이 지난 후 다시 사용자 인증 요구할 때
- 사용자의 페이지 이동 동선 등 웹 페이지 트래킹 분석 기능
※ session 내장객체
1) getId() <-- String 반환
- 해당 세션의 세션 ID 반환
2) getCreationTime() <-- long 반환
- 세션의 생성된 시간을 반환
3) getLastAccessedTime(0 <-- long 반환
- 클라이언트 요청이 마지막으로 시도된 시간을 반환
4) setMaxInactiveInterval(int time) <-- int 반환
- 세션을 유지하기로 지정된 값 반환, 기본값은 30분
5) isNew() <-- boolean 반환
- 클라리언트 세션 ID를 할당하지 않은 경우 true반환
6) invalidate() <-- void 반환
- 해당 세션을 종료시킴
[예시1]
[로그인 처리 - 로그아웃 처리]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
[loginFrm.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>
<%if(session.isNew() || session.getAttribute("userId")==null) {
String msg = (String)request.getAttribute("error"); %>
<form action="loginProc.jsp" method="POST">
ID:<input type="text" name="userId"/><br>
PW: <input type="password" name="userPwd"><br>
<input type="submit" value="로그인">
<!-- ../responseProc.jsp (여러개면 && 연결) ? fruit=사과(name=value 형식)&season=여름 -->
</form>
<% } else {%> <a href="loginProc.jsp">로그아웃</a>
<% } %>
</body>
</html>
[loginProc.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>
<%if(request.getMethod().equals("POST")) { %>
<%
request.setCharacterEncoding("UTF-8");
String userId = request.getParameter("userId");
String userPwd = request.getParameter("userPwd");
// 유효성 처리 -- 비어 있으면 다시 loginFrm.jsp
if(userId.isEmpty() || userPwd.isEmpty()) {
RequestDispatcher rd = request.getRequestDispatcher("loginFrm.jsp");
rd.forward(request, response)
//RequestDispatcher : 현재 request에 담긴 정보를 저장하고 있다가
// 그 다음 페이지 그 다음 페이지에도 해당 정보를 볼 수 있게 저장하는 기능
//request - repsonse 단계에는 foward와 sendRedirct방식 2가지 존재
//forward에는 A.jsp → Servlet → B.jsp로 넘어감
//sendRedirect : 모든 파라미터 정보를 제외하고 단순 페이지 호출만 하는 차이
//RequestDispatcher rd(변수선언) = request.getRequestDispatcher("loginFrm.jsp" -- forward를 요청할 페이지);
//모델 m = new 모델() --- 모델 호출(객체 생성)
//로그인 처리
if(session.isNew() || session.getAttribute("userId") == null) {
session.setAttribute("userId", userId); //"userId"란 이름으로 userId 등록
session.setMaxInactiveInterval(1*60); //재시동 시 60초에 한 번씩 됨 *, 로그아웃 시 문제 발생할 수 있어서 주석 처리/
out.print("로그인 완료되었음");
} else {
out.print("이미 로그인 상태임");
}
%>
아이디 : <%=userId %> / 비밀번호 : <%=userPwd %>
<%
} else if(request.getMethod().equals("GET")) { //짝 맞춰가면서 진행하기(<%)
if(session != null || session.getAttribute("userId") != null) {
session.invalidate();
out.print("로그아웃 작업 완료");
} else {
out.println("현재 로그인 상태가 아님");
}
}
%>
</body>
</html>
<!-- a href => get 방식 -->
|
cs |
※ 액션 태그
- 서버나 클라이언트에 어떤 행동을 하도록 명령하는 태그
- JSP 페이지에서 페이지와 페이지 사이를 제어
- XML형식 <jsp: .../>를 사용
※ 표준 액션 태그 : JSP 컨테이너에서 제공하는 미리 정해진 기능들
※ 액션 태그 종류 (주로 많이 사용)
1) forward
2) include
3) useBean
5) setProperty
6) getProperty
7) param
※ forward 액션 태그
- 현재 JSP 페이지에서 다른 페이지로 이동하는 태그
-<jsp:forward page="파일명"/> OR <jsp:forward page="파일명">뭔가 삽입 가능(page 속성값)</jsp.forward>
※ page 속성값
- 현재 JSP 페이지에서 이동할 페이지의 외부 파일명
- 외부 파일은 현재 JSP 페이지에 같은 디렉토리에 있으면 파일명만(그렇지 않으면 전체 URL 지정)
※forward 액션 태그 처리 과정
- forward 태그가 있던 JSP 페이지의 모든 내용을 버리고 forward 태그가 지정하는 다른 페이지로 이동
- Request 기본 객체, response 기본 객체가 second.jsp로 전달
[예시 2]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
[ex13.jsp] GET 방식
-> ctrl+f11 -> 주소창에 : http://localhost:9090/JSP_global/0409/ex13.jsp?p=hello.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>
<%String p = request.getParameter("p"); %>
<jsp:forward page="<%=p%>"/>
</body>
</html>
[postEx] POST방식
-> 입력창에 "hello"입력
<%@ 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>
<form method="POST" action="post.jsp">
이동하고 싶은 페이지 <input type="text" name="page"/>
<input type="submit" value="이동">
</form>
</body>
</html>
[post.jsp] - POST 방식 사용 시 필요
<%@ 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>
<% String p = request.getParameter("page") + ".jsp"; %>
<jsp:forward page="<%=p %>"></jsp:forward>
</body>
</html>
[hello.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>
<h1>Hello!!!</h1>
</body>
</html>
|
cs |
[예시3]
입력양식을 통해 전달받은 요청 페이지로 foward하여 이동
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
[select.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>
<%-- <form action="<%=request.getContextPath() %>/view.jsp"> --%>
<form action="view.jsp" method="post">
보고 싶은 페이지 선택:
<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>
[view.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String code = request.getParameter("code");
String viewPageURI = null;
if(code.equals("A")) {
viewPageURI = "a.jsp";
} else if (code.equals("B")) {
viewPageURI = "b.jsp";
} else if (code.equals("C")) {
viewPageURI = "c.jsp";
}
%>
<jsp:forward page="<%=viewPageURI %>"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
[a.jsp] b.jsp, c.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>
이 페이지는 <b><font size="5">A</font></b>
</body>
</html>
|
cs |
※ param 액션 태그
- 단독 사용x, 현재 JSP 페이지에서 다른 페이지에 정보 전달
-<jsp:forward>나 <jsp:include> 태그를 내부에서 사용
- 다른 페이지에서 여러 개의 정보 전송해야 할 때는 다중의 param 액션 태그 사용
[예시 4]
param 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | [param.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> <!-- param태그를 이용하여 prama_data.jsp로 정보 전달 --> <jsp:forward page="param_data.jsp"> <jsp:param name="userId" value='admin'/> <jsp:param name="name" value='<%=java.net.URLEncoder.encode("관리자") %>'/> </jsp:forward> <p>Java Server Page </body> </html> [param_data.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> <p> 아이디: <%=request.getParameter("userId") %> <% String name = request.getParameter("name"); %> <p> 이름 : <%=java.net.URLDecoder.decode(name) %> </body> </html> | cs |
※ include 액션 태그
- include 디렉티브 태그처럼 현재 JSP 페이지의 특정 영역에
외부파일(HTML, JSP, 서블릿 페이지 등) 내용을 포함하는 태그
※ page 속성 값
- 현재 JSP 페이지 내에 포함할 내용을 가진 외부 파일명
- 외부파일은 현재 JSP 페이지와 같은 디렉터리에 있으면 파일명만 설정하고,
그렇지 않으면 전체 URL(또는 상대경로)로 설정해야 함
※ flush 속성 값
- 설정한 외부 파일로 제어가 이동할 때
'과거 프로그래밍 자료들 > 자바(Java)' 카테고리의 다른 글
JSP EL (Expression Language) (0) | 2021.04.13 |
---|---|
JSP 쿠키(Cookie), 파일 업로드, 오류 처리 (0) | 2021.04.13 |
JSP 디렉티브 태그(page, include, taglib) (0) | 2021.04.08 |
JSP 전반적인 설명 및 스크립트 태그(+스크립틀릿 태그) (0) | 2021.04.08 |
[서버 문제] 웹페이지를 불러오고 html 파일로 저장하기 (0) | 2021.03.15 |