JSP response
response : 사용자에게 응답
response.sendRedirect("경로") : 사용자에게 경로를 전달(서버를 실행하면 해당 경로로 바로 이동)
<%@ 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>
login.jsp<br>
<form action="check.jsp" method="post">
<input type="text" name="id" placeholder="아이디 입력"><br>
<input type="text" name="pwd" placeholder="비밀번호 입력"><br>
<input type="submit" value="login"><br>
</form>
</body>
</html>
<%@page import="java.io.PrintWriter"%>
<%@ 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>
check.jsp<br>
<%
request.setCharacterEncoding("utf-8");
String DB_id = "1", DB_pwd = "1";
String userId = request.getParameter("id");
String userPwd = request.getParameter("pwd");
String msg = null;
if(DB_id.equals(userId) && DB_pwd.equals(userPwd)){
//response.sendRedirect("main.jsp");
msg = "<script>alert('로그인 성공');";
msg += "location.href='main.jsp'</script>";
}else{
//response.sendRedirect("login.jsp");
msg = "<script>alert('로그인 실패!!!');";
msg += "location.href='login.jsp';</script>";
}
PrintWriter pr = response.getWriter();
pr.print(msg);
%>
</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>
main.jsp<br>
<h1>로그인 성공 페이지</h1>
</body>
</html>
실행 결과
JSP scope
.setAttribute() : 영역의 속성을 저장
.getAttribute() : 속성 값을 가져옴
session : 해당하는 브라우저가 바뀌기 전까지는 유지
applicaion : 서버가 종료되기 전까지는 유지
request.getRequestDispatcher("get01.jsp").forward(request, response) : request를 해당페이지까지 유지
<%@ 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>
set_scope.jsp<br>
<%
pageContext.setAttribute("name", "page");
request.setAttribute("name", "request");
session.setAttribute("name", "session");
application.setAttribute("name", "application");
%>
page : <%= pageContext.getAttribute("name") %><br>
request : <%= request.getAttribute("name") %><br>
session : <%= session.getAttribute("name") %><br>
application : <%= application.getAttribute("name") %><br>
<%--
request.getRequestDispatcher("get01.jsp").forward(request, response);
--%>
<a href="get01.jsp">get01.jsp</a>
</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>
page : <%= pageContext.getAttribute("name") %><br>
request : <%= request.getAttribute("name") %><br>
session : <%= session.getAttribute("name") %><br>
application : <%= application.getAttribute("name") %><br>
<a href="get02.jsp">get02.jsp</a>
</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>
page : <%= pageContext.getAttribute("name") %><br>
request : <%= request.getAttribute("name") %><br>
session : <%= session.getAttribute("name") %><br>
application : <%= application.getAttribute("name") %><br>
<a href="get01.jsp">get01.jsp</a>
<a href="set_scope.jsp">set_scope.jsp</a>
</body>
</html>
실행 결과
JSP cookie
Cookie cookie = new Cookie("키값", "밸류값")
cookie.setMaxAge(5) : 얼마나 쿠키를 유지할지 지정(5초)
response.addCookie(cookie) : 쿠키를 응답하겠다(사용자에게 전달)
쿠키명.getName() : 쿠키의 키 값 가져옴
쿠키명.getValue() : 쿠키의 밸류 값 가져옴
* cookie값은 하위에 위치한 폴더에게는 전달 가능하나, 상위에 위치한 폴더에겐 전달 불가
cookie.setPath("/") : 쿠키를 사용할 수 있는 범위 지정(/ = 최상위 폴더이므로 다 사용 가능)
<%@ 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>
ex01.jsp<br>
<h1>쿠키 확인</h1>
<%
Cookie cookie = new Cookie("testCookie", "myCookie");
cookie.setMaxAge(5);
cookie.setPath("/");
response.addCookie(cookie);
boolean bool = true;
Cookie[] cookieArr = request.getCookies();
for(Cookie c : cookieArr){
out.print("name : " + c.getName() + "<br>");
out.print("value : " + c.getValue() + "<hr>");
if( c.getName().equals("testCookie") ){
bool = false;
}
}
%>
<% if(bool){ %>
<script type="text/javascript">
window.open("popup.jsp", "", "width=400, height=200, top=500, left=500");
</script>
<% } %>
<a href="../test.jsp">test.jsp</a>
<a href="delete.jsp">delete.jsp</a>
</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>
<h1> - 공 지 사 항 - </h1>
<h3>내용 . . . .</h3>
<input type="checkbox" id="chk" onClick="window.close()">
<label for="chk">하루동안 열지 않음</label>
</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>
<h3>test.jsp</h3>
<%
for( Cookie c :request.getCookies()){
out.print("name : " + c.getName() + "<br>");
}
%>
<a href="cookie/ex01.jsp">es01.jsp</a>
</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>
<h3>쿠키 삭제</h3>
<a href="../test.jsp">test.jsp</a><br>
<%
Cookie[] cookieArr = request.getCookies();
for(Cookie c : cookieArr){
out.print("name : " + c.getName() + "<br>");
out.print("value : " + c.getValue() + "<hr>");
if( c.getName().equals("testCookie") ){
c.setMaxAge(0);
c.setPath("/");
response.addCookie(c);
}
}
%>
</body>
</html>
실행 결과
JSP session
session.removeAttribute("세션명") : 세션명에 해당하는 세션만 삭제
session.setMaxInactiveInterval(5) : 5초후에 모든 세션 만료
session.invalidate() : 바로 모든 세션 만료
<%@ 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>
login.jsp<br>
<%if(session.getAttribute("loginUser") == null){ %>
<form action="check.jsp" method="post">
<input type="text" name="id"><br>
<input type="text" name="pwd"><br>
<input type="submit" value="로그인"><br>
</form>
<% } else {%>
<%= session.getAttribute("nick") %>님 로그인 상태입니다.
<a href="logout.jsp">로그아웃</a>
<a href="main.jsp">main 이동</a>
<%} %>
</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>
<%
String id="1", pwd="1", nick="홍길동";
if(id.equals( request.getParameter("id")) &&
pwd.equals(request.getParameter("pwd")) ){
session.setAttribute("nick", nick);
session.setAttribute("loginUser", id);
response.sendRedirect("main.jsp");
}else{
response.sendRedirect("login.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>
<%if(session.getAttribute("nick") == null){
response.sendRedirect("login.jsp");
} %>
<h3>로그인 성공 사용자 접근 가능</h3>
<%= session.getAttribute("nick") %>님 환영합니다.
<a href="logout.jsp">로그아웃</a>
<a href="login.jsp">로그인</a>
</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>
<%
session.invalidate();
%>
<script type="text/javascript">
alert("로그아웃 되었습니다!");
location.href="login.jsp";
</script>
</body>
</html>
실행 결과
JSP database
db 접속 방법
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String id = "c##LTY", pwd="1213";
Connection con = DriverManager.getConnection(url, id, pwd);
* 11번전은 orcl => xe, c##LTY => LTY
db sql 실행 방법
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
* ResultSet : bof - 내용1 - 내용2 - ... - eof (ResultSet.next() = true or false)
* sql문 안에 ?가 있으면, ps.setString(순서, 값)을 사용한다
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ 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 driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String id="c##LTY", pwd="1213";
Connection con = DriverManager.getConnection(url, id, pwd);
System.out.println("--- 연결 성공 ---");
%>
</body>
</html>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ 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>
<%@ include file="driver.jsp" %>
con : <%= con %><br>
<%
String sql = "select * from member_jsp";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){ %>
id : <%= rs.getString("id") %><br>
name :
<a href="select_one.jsp?id=<%= rs.getString("id") %>">
<%= rs.getString("name") %>
</a>
<br>
kor : <%= rs.getInt("kor") %><br>
eng : <%= rs.getInt("eng") %><br>
math : <%= rs.getInt("math") %><hr>
<% } %>
</body>
</html>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@ 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>
<%@ include file="driver.jsp" %>
<%
String paramId = request.getParameter("id");
String sql = "select * from member_jsp where id = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, paramId);
ResultSet rs = ps.executeQuery();
if(rs.next()){ %>
id : <%= rs.getString("id") %><br>
name : <%= rs.getString("name") %><br>
kor : <%= rs.getInt("kor") %><br>
eng : <%= rs.getInt("eng") %><br>
math : <%= rs.getInt("math") %><hr>
<% } %>
<a href="select_all.jsp">모든 목록 확인</a>
</body>
</html>
실행 결과
JSP 액션 태그 (1)
<jsp:forward>
<%@ 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 msg = (String)request.getAttribute("msg");
if(msg != null){
out.print("msg : " + msg + "<br>");
out.print(request.getParameter("id") + " : 존재하지 않는id<br>");
}
%>
<form action="check.jsp" method="post">
<input type="text" name="id"><br>
<input type="text" name="pwd"><br>
<input type="submit" value="로그인"><br>
</form>
</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.setCharacterEncoding("utf-8");
String DB_id = "aaa", DB_pwd = "aaa";
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
if(DB_id.equals(id) && DB_pwd.equals(pwd)){ %>
<jsp:forward page="main.jsp">
<jsp:param value="로그인 성공!!" name="msg"/>
</jsp:forward>
<% }else{
request.setAttribute("msg", "로그인 실패!!!");
//response.sendRedirect("login.jsp");
request.getRequestDispatcher("login.jsp").forward(request, response);
} %>
%>
</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("id") %>님<br>
<%= request.getParameter("msg") %><hr>
<a href="javascript:history.back()">이전</a>
</body>
</html>
실행 결과
JSP 액션 태그 (2)
<jsp:include> : 각각의 파일을 따로따로 번역 (변수를 같이 못쓴다)
<%@ include %> : 한꺼번에 번역 (변수를 같이 쓸 수 있다)
<%@ 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>
<h3>ex01.jsp</h3>
<a href="jsp_include.jsp">jsp이동</a>
<a href="tag_include.jsp">tag이동</a>
<hr>
<%
String name = "홍길동";
%>
</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>
<jsp:include page="ex01.jsp"></jsp:include>
<h1>jsp include 페이지</h1>
<%-- name : <%= name %> --%>
</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>
<%@ include file="ex01.jsp" %>
<h1>tag include 페이지</h1>
name : <%= name %>
</body>
</html>
실행 결과
JSP 액션 태그 (3)
<jsp:useBean>, <jsp:setProperty>, <jsp:getProperty>
<jsp:useBean id="객체명" class="객체 타입(위치)" />
<jsp:setProperty property="변수명" name="객체명" value="값" />
<jsp:getProperty property="변수명" name="객체명" />
<%@ 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>
<h3>기본 페이지 입니다</h3>
<hr>
<a href="show_list.jsp">회원 목록</a>
<a href="register_form.jsp">회원 가입</a>
</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>
<jsp:include page="/bean/index.jsp"></jsp:include>
<form action="register.jsp">
<input type="text" name="id" placeholder="id"><br>
<input type="text" name="pwd" placeholder="pwd"><br>
<input type="text" name="name" placeholder="name"><br>
<input type="text" name="addr" placeholder="addr"><br>
<input type="text" name="tel" placeholder="tel"><br>
<input type="submit" value="등록"><br>
</form>
</body>
</html>
<%@page import="member.MemberDAO"%>
<%@page import="member.MemberDTO"%>
<%@ 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 = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String addr = request.getParameter("addr");
String tel = request.getParameter("tel");
MemberDTO dto = new MemberDTO();
dto.setId(id); dto.setPwd(pwd);
dto.setName(name); dto.setAddr(addr);
dto.setTel(tel);
%>
id : <%= dto.getId() %><br>
pwd : <%= dto.getPwd() %><br>
name : <%= dto.getName() %><br>
addr : <%= dto.getAddr() %><br>
tel : <%= dto.getTel() %><br>
<hr>
<h3>useBean</h3>
<jsp:useBean id="mDto" class="member.MemberDTO" />
<jsp:setProperty property="*" name="mDto"/>
id : <%= mDto.getId() %><br>
pwd : <%= mDto.getPwd() %><br>
name : <%= mDto.getName() %><br>
addr : <%= mDto.getAddr() %><br>
tel : <%= mDto.getTel() %><br>
<%
MemberDAO dao = new MemberDAO();
dao.register(mDto);
response.sendRedirect("show_list.jsp");
%>
</body>
</html>
<%@page import="member.MemberDTO"%>
<%@page import="java.util.ArrayList"%>
<%@page import="member.MemberDAO"%>
<%@ 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>
<jsp:include page="/bean/index.jsp"></jsp:include>
<hr>
show_list 페이지 입니다
<%
MemberDAO d = new MemberDAO();
%>
<jsp:useBean id="dao" class="member.MemberDAO" />
<%
ArrayList<MemberDTO> list = dao.getList();
System.out.println("size : " + list.size());
%>
<table border="1">
<tr>
<th>아이디</th>
<th>이름</th>
<th>주소</th>
</tr>
<% for(MemberDTO dd : list){ %>
<tr>
<td><%= dd.getId() %></td>
<td><%= dd.getName() %></td>
<td><%= dd.getAddr() %></td>
</tr>
<% } %>
</table>
</body>
</html>
package member;
public class MemberDTO {
String id, pwd, name, addr, tel;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
package member;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class MemberDAO {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "c##LTY", pwd="1213";
Connection con;
PreparedStatement ps;
ResultSet rs;
public MemberDAO() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("--- 드라이브 로드 성공 ---");
} catch (Exception e) {
e.printStackTrace();
}
}
public ArrayList<MemberDTO> getList() {
String sql = "select * from mem_jsp";
ArrayList<MemberDTO> list = new ArrayList<>();
try {
con = DriverManager.getConnection(url, user, pwd);
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
MemberDTO dto = new MemberDTO();
dto.setId(rs.getString("id"));
dto.setPwd(rs.getString("pwd"));
dto.setName(rs.getString("name"));
dto.setAddr(rs.getString("addr"));
dto.setTel(rs.getString("tel"));
list.add(dto);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public void register(MemberDTO dto) {
String sql =
"insert into mem_jsp(id,pwd,name,addr,tel) values(?,?,?,?,?)";
try {
con = DriverManager.getConnection(url, user, pwd);
ps = con.prepareStatement(sql);
ps.setString(1, dto.getId());
ps.setString(2, dto.getPwd());
ps.setString(3, dto.getName());
ps.setString(4, dto.getAddr());
ps.setString(5, dto.getTel());
ps.execute();
} catch (Exception e) {
e.printStackTrace();
}
}
}
실행 결과