일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Eclipse
- API
- html
- db
- Java
- SpringBoot
- 이클립스
- Controller
- spring
- Uipath
- View
- Array
- 자료구조
- Database
- 문자열
- React
- mysql
- 상속
- jquery
- 조건문
- MVC
- Thymeleaf
- rpa
- JDBC
- Oracle
- string
- Scanner
- Board
- jsp
- 배열
- Today
- Total
유정잉
43일차 JSP [ forward, cookie ] 본문
[ JSP에서 다른 페이지로 이동하기 위한 방법 ]
1) 리다이렉트 response.sendRedirect : 브라우저 URL 변경 하도록 -> (request, response 객체 유지 안 됨)
2) 포워드 forward : 서버상에서 페이지가 이동되기 때문에 브라우저는 알아채지 못 하고 URL도 변경되지 않는다
-> (request, response 객체 유지 됨)
ex) 고객센터 전화하번 그 번호를 유지하면서 1번 ~~ 2번 ~~ 선택하는 것과 같은 원리
[ http 프로토콜 -> 비연결지향 ]
[ 쿠키(cookie)와 세션(session) ]
쿠키 : 쿠키가 저장된 디렉토리를 찾아보면 정보를 다 털수 있음. 개인정보 유출 우려 때문에 쿠키를 잘 사용하지 않음. 데이터 전송 크키에도 제한이 있음. 클라이언트 쪽에 정보가 저장 됨(개발자 도구로 브라우저에서 볼 수 있음) -> 세션을 주로 사용
1) 쿠키 객체 생성
2) 유효기간 설정
3) 클라이언트에 쿠키 전송
4) 쿠키를 생성해 클라이언트에 전송
세션 : 보안유지 강화. 데이터 저장에 대한 한계가 없음. 서버에 저장됨 (즉, 세션을 사용하면 페이지를 왔다 갔다 해도 로그인이 유지 됨)
[ 자바빈(bean) : 데이터 저장소(entity) -> 필드 형태 getter, setter 메서드 ]
- 자바빈은 클래스 명 반드시 뒤에 Bean 붙여서 만들어주기
- 필드 선언은 private로 하기
- 여러개일 경우 useBean으로 액션태그 가져오기
<> 닫을때 코드 맨뒤에 < /> 이런식으로 해서 닫을 수 있음
class 명은 package명 까지 같이 해서 적어줘야 함
[ include 액션 태그와 forward 액션 태그의 차이점을 설명해라 ]
forward1.jsp forward 태그를 사용해 페이지 이동 / param 태그를 사용해 값 지정
[ forward 페이지 이동 ]
[ NewFile.jsp 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>
안녕하세요 ! NewFile.jps 입니다 !
<jsp:forward page="one.jsp"></jsp:forward> <!-- forward 형태로 페이지 이동 작업 -->
</body>
</html>
[ one.jsp 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>
안녕하세요 ! one.jsp 입니다 !
</body>
</html>
[ forward와 param 사용 ]
[ NewFile.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<form action="TagTest.jsp">
ID: <input type="text" name="id"><br>
pw: <input type="password" name="pw"><br>
<input type="radio" name="check" value="user" checked="checked"> 사용자
<input type="radio" name="check" value="manager"> 관리자
<input type="submit" value="로그인">
</form>
</body>
</html>
[ TagTest.jsp JSP 파일 ]
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String role = request.getParameter("check");
if(role.equals("user")){
%>
<jsp:forward page="user_main.jsp">
<jsp:param value='<%=URLEncoder.encode("고객들","UTF-8") %>' name="userName"/>
</jsp:forward>
<%
}
else{ %>
<jsp:forward page="manager_main.jsp">
<jsp:param value='<%=URLEncoder.encode("관리","UTF-8") %>' name="userName"/>
</jsp:forward>
<%
}
%>
</body>
</html>
[ user_main.jsp JSP 파일 ]
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body bgcolor="pink">
<%=URLDecoder.decode(request.getParameter("userName"), "UTF-8") %>
<%=request.getParameter("id") %>님 환영해요
</body>
</html>
[ manager_main.jsp JSP 파일 ]
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body bgcolor="green">
<%=URLDecoder.decode(request.getParameter("userName"), "UTF-8") %>
<%=request.getParameter("id") %>님 환영해요
</body>
</html>
[ 쿠키 Cookie - 생성 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h3>쿠키 생성 (=설정)</h3>
<%
//1. 쿠키 객체 생성
Cookie c=new Cookie("id","syj");
//2. 유효기간 설정 / 365*24*60*60는 초단위를 나타냄 1년 동안 유지시키겠단 의미
c.setMaxAge(365*24*60*60);
//3. 클라이언트에 쿠키 전송
response.addCookie(c);
//4. 쿠키를 생성해 클라리언트에 전송
response.addCookie(new Cookie("pwd","1234"));
response.addCookie(new Cookie("age","20"));
%>
</body>
</html>
[ 쿠키 Cookie - 클라이언트로부터 얻어온 쿠키 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h3>클라이언트로부터 얻어온 쿠키</h3>
<%
Cookie []co=request.getCookies();
for(Cookie c:co) {
out.print(c.getName()+" : " + c.getValue() + "<br>");
}
%>
</body>
</html>
[ 쿠키 Cookie - 쿠키 삭제 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h3>쿠키 삭제</h3>
<%
Cookie c=new Cookie("id",""); //id만 삭제시킴
c.setMaxAge(0); //쿠키 유효기간 만료시킴
response.addCookie(c);
%>
<a href="GetCookie.jsp">쿠키 삭제 확인하려면 클릭</a>
</body>
</html>
[ 세션 session - 세션 설정 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h3>session 세션 설정하기</h3>
<%
session.setAttribute("id", "syj");
session.setAttribute("pw", "1234");
session.setAttribute("age", "26");
%>
</body>
</html>
[ 세션 session - 1) 서버로부터 얻어온 세션 하나하나 가져오는 방법 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h3>session 세션 얻어오기</h3>
<%
String id=(String)session.getAttribute("id");
String pw=(String)session.getAttribute("pw");
String age=(String)session.getAttribute("age");
%>
</body>
</html>
[ 세션 session - 2) 서버로부터 얻어온 세션 반복문으로 가져오는 방법 hasMoreElements ]
<%@page import="java.util.Enumeration" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h3>session 세션 얻어오기</h3>
<%
Enumeration names=session.getAttributeNames();
while(names.hasMoreElements()) {
String name=names.nextElement().toString();
String value=session.getAttribute(name).toString();
out.print(name+","+value+"<br>");
}
%>
</body>
</html>
[ 세션 session - 로그인 페이지 만들기 - 페이지를 왔다 갔다 해도 로그인이 유지되는 이유 = session 사용해서 ]
[ 로그인 페이지 NewFile.jsp ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<form action="Session2.jsp" method="post">
<label for="user">아이디 : </label>
<input type="text" name="id" id="user"><br>
<label for="userpw">비번 : </label>
<input type="password" name="pwd" id="userpw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
[ sessoion2.jsp ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
String id="hong";
String pw="1234";
String name="홍길동";
if(id.equals(request.getParameter("id")) &&
pw.equals(request.getParameter("pwd"))) {
session.setAttribute("user", name);
response.sendRedirect("main.jsp"); //웹 페이지 강제 이동
}
else {
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
[ main.jsp 파일 ]
%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
if(session.getAttribute("user")==null) {
response.sendRedirect("login.jsp");
}
else{
%>
<%=session.getAttribute("user") %>님 환영합니다.
<form method="post" action="Logout.jsp">
<input type="submit" value="로그아웃"> <!--로그아웃 버튼 누르면 세션 종료되도록-->
</form>
<%
}
%>
</body>
</html>
[ Logout.jsp 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
session.invalidate(); //세션이 무효화=세션 종료
%>
<script type="text/javascript">
alert("로그아웃되었다.");
location.href="login.jsp";
</script>
</body>
</html>
[ 세션 session - 로그인 페이지 만들기 - 페이지를 왔다 갔다 해도 로그인이 유지되는 이유 = session과 Servlet 사용해서 ]
[ NewFile.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<center>
<h2>회원 가입</h2>
<form action="Member" method="get">
<table width="500" border="1">
<tr height="50">
<td width="150" align="center">아이디</td>
<td width="350" align="center"><input type="text" name="id"
size="40" placeholder="id넣으세요"></td>
</tr>
<tr height="50">
<td width="150" align="center">패스워드</td>
<td width="350" align="center"><input type="password"
name="pass1" size="40" placeholder="비밀번호는 영문자만 넣어주세요"></td>
</tr>
<tr height="50">
<td align="center" colspan="2"><input type="submit"
value="회원가입"></td>
</tr>
</table>
</form>
</body>
</html>
[ Member.java Servlet 클래스 ]
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
/**
* Servlet implementation class Member
*/
public class Member extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Member() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charser=utf-8");
String id=request.getParameter("id");
String pw=request.getParameter("pass1");
if(id!=null && pw!=null) { //서블릿에서 세션갈때
HttpSession session=request.getSession();
session.setAttribute("id1", id);
}
response.sendRedirect("ServletSession.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
[ ServletSession.jsp 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 id=(String)session.getAttribute("id1");
%>
<%
if(id!=""){
%>
<%=id %>
<a href="Logout2.jsp">로그아웃</a>
<%
}
%>
</body>
</html>
[ Logout.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
session.invalidate();
response.sendRedirect("ServletSession.jsp");
%>
</body>
</html>
[ 세션 session - java bean 자바빈 ]
[ JavaBean 만들기 ]
package kr.co.bit;
//1. 개별적으로 전송하는 것이 아닌, 정보를 하나로 묶어서 전송하는 방법(효율적)
//자바빈 : 데이터 저장소(entity) -> 필드 형태 getter, setter 메서드
public class MemberBean {
//무조건 필드는 private 사용 해야 함 !!!
private String name;
private String userid;
private String nickname;
private String pwd;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
private String phone;
}
[ test_property.jsp JSP 파일 (있는 값 출력하기) ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<!-- MemberBean member = new MemberBean(); -->
<!-- useBean JavaBean을 생성할 때 필요한 액션태그 -->
<jsp:useBean id="member" class="kr.co.bit.MemberBean" > <!-- id가 객체명임 -->
<%=member.getName() %><br>
<%=member.getUserid() %><br>
</jsp:useBean> <!-- 여기까지 서버를 돌려보면 값이 없어서 null, null로 출력 됨 -->
</body>
</html>
[ test_property.jsp JSP 파일 (값 집어 넣고 출력하기) ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<!-- MemberBean member = new MemberBean(); -->
<!-- useBean JavaBean을 생성할 때 필요한 액션태그 -->
<jsp:useBean id="member" class="kr.co.bit.MemberBean" /> <!-- id가 객체명임 -->
<jsp:setProperty property="name" name="member" value="길동" /> <!--이런식으로 끝에 /만 해줘도 닫을 수 있음 -->
<jsp:setProperty property="userid" name="member" value="hong" />
이름 : <jsp:getProperty property="name" name="member" /> <br> <!-- = member.getNmae("길동"); -->
아이디 : <jsp:getProperty property="userid" name="member" /> <br> <!-- = userid.getNmae("hong"); -->
</body>
</html>
[ MemberBean.java ]
package kr.co.bit;
//1. 개별적으로 전송하는 것이 아닌, 정보를 하나로 묶어서 전송하는 방법(효율적)
//자바빈 : 데이터 저장소(entity) -> 필드 형태 getter, setter 메서드
public class MemberBean {
private String id;
private String pass1;
private String email;
private String tel;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return pass1;
}
public void setPassword(String password) {
this.pass1 = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
[ student.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<center>
<h2> 회원 가입 </h2>
<form action="MemberJoinProc.jsp" method="post">
<table width="500" border="1">
<tr height="50">
<td width="150" align="center"> 아이디 </td>
<td width="350" align="center"><input type="text" name="id" size="40" placeholder="id넣으세요"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 패스워드 </td>
<td width="350" align="center"><input type="password" name="pass1" size="40" placeholder="비밀번호는 영문자만 넣어주세요"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 이메일 </td>
<td width="350" align="center"><input type="email" name="email" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 전화번호 </td>
<td width="350" align="center"><input type="tel" name="tel" size="40"></td>
</tr>
<tr height="50">
<td width="150" align="center"> 주소 </td>
<td width="350" align="center"><input type="text" name="address" size="40"></td>
</tr>
<tr height="50">
<td align="center" colspan="2">
<input type="submit" value="회원가입"></td>
</tr>
</table>
</form>
</center>
</body>
</html>
[ MemberJoinProc.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<!-- request로 넘어온 데이터를 자바빈즈랑 매핑을 시켜주는 userBean -->
<!-- 객체 생성 MemberBean mbean = new MemberBean() -->
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
<!-- jsp 내용(폼에서 쓴거)을 자바빈 클래스에 데이터를 매핑(넣어준다) -->
<!-- 자동으로 모두 다 매핑(*) 시켜라 -->
<jsp:setProperty name="mbean" property="*"></jsp:setProperty>
</jsp:useBean>
<h3>아이디는 <jsp:getProperty property="id" name="mbean" /></h3>
<h3>이메일은 <jsp:getProperty property="email" name="mbean" /></h3>
<h3>전화번호는 <jsp:getProperty property="tel" name="mbean" /></h3>
</body>
</html>
[ 문제 풀이 ]
forward1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<jsp:forward page="forward2.jsp">
<jsp:param name="message" value="Hello, Forward!" />
</jsp:forward>
</body>
</html>
forward2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<p>Message: <%= request.getParameter("message") %></p>
</body>
</html>
favo.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="favorite.jsp" method="post">
좋아하는 색 : <input type="text" name="color"><br>
좋아하는 음악 : <input type="text" name="song"><br>
<input type="submit" value="확인">
</form>
</body>
</html>
favoBean.java
package kr.co.bit;
public class favoBean {
private String color;
private String song;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getSong() {
return song;
}
public void setSong(String song) {
this.song = song;
}
}
favorite.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.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="like" class="kr.co.bit.favoBean">
<jsp:setProperty name="like" property="*"/>
</jsp:useBean>
좋아하는 색상 : <jsp:getProperty property="color" name="like"/><br>
좋아하는 노래 : <jsp:getProperty property="song" name="like"/>
</body>
</html>
'네이버 클라우드 부트캠프 > 복습 정리' 카테고리의 다른 글
45일차 JSP [ EL언어 ] (0) | 2024.04.24 |
---|---|
44일차 JSP [ 커넥션풀, 마이페이지 만들기 ] (5) | 2024.04.23 |
40~41일차 JSP [ 개념, Tomcat 연결 ] (0) | 2024.04.17 |
37일차 [ 톰캣 다운로드, Ajax ] (0) | 2024.04.12 |
35~36일차 jQuery [ 복습 ] (0) | 2024.04.11 |