- Cookie
Client ๊ณต๊ฐ์ ์ ์ฅ , String์ผ๋ก๋ง ์ ์ฅ๋๋ค.
ID, PW, ๋ฐฉ๋ฌธํ์ ๋ฑ
JavaScript์์๋ ์ ๊ทผ ๊ฐ๋ฅ
- Session
Server์ ์ ์ฅ.
์ ์ฅ ๊ธฐํ์ ์ค์ ๊ฐ๋ฅ.
๊ฐ์ธ์ ๋ณด (ID, PW, Name) , ๋ฐฉ๋ฌธ ํ์ ๋ฑ
ํ๊ธ ์ฌ์ฉ์ด ๊ธ์ง๋๋ค.
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="hello">hello servlet</a> <!-- ์ฟ ํค ํ์ -->
<br>
<a href="world">world servlet</a> <!-- ์ธ์
ํ์ -->
</body>
</html>
HelloServlet.java (Cookie ์ฌ์ฉ)
package hello;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("HelloServlet doGet");
// ์ฟ ํค๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ ์ฅํ๋ ์ ๋ณด๋ก์,
// ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ด ๋์ด์ ธ๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋ ์ ๋ณด๊ฐ ์ ์ง๋์ด ์๋ฒ์
// ์ฌ ๋ฐฉ๋ฌธํ ๋ ์์ฒญ์ ๋ณด์ ํค๋ ์์ ํฌํจ๋์ด ์๋ฒ๋ก ์ ๋ฌ๋ฉ๋๋ค.
Cookie cookie = new Cookie("id", "abc123"); //์ฟ ํค ๊ฐ์ฒด ์์ฑ
resp.addCookie(cookie); // ํด๋ผ์ด์ธํธ์ ์ฟ ํค ์ ์ฅ
cookie = new Cookie("pwd", "aaaa1111");
resp.addCookie(cookie);
resp.setContentType("text/html; charset=utf-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>์ ๋ชฉ</title>");
pw.println("</head>");
pw.println("<body>");
Cookie cookies[] = req.getCookies(); //getCookies() : ์ฟ ํค ์ถ์ถ. ์ ์ฅ๋ ์ฟ ํค๋ค์ ๊ฐ์ ธ์จ๋ค.
for (int i = 0; i < cookies.length; i++) {
String cookieName = cookies[i].getName();
String cookieValue = cookies[i].getValue();
pw.println("<p>" + cookieName + " : " + cookieValue + "</p>");
};
pw.println("</body>");
pw.println("</html>");
pw.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
WorldServlet.java (session ์ฌ์ฉ)
์๋ธ๋ฆฟ์์ ์ธ์ ์์ฑ
HttpSession session = req.getSession(false);
- getSession(false)
session object๊ฐ ์กด์ฌํ๋ฉด, ํ์ฌ HttpSession์ ๋ฐํํ๋ค.
์กด์ฌํ์ง ์์ผ๋ฉด null์ ๋ฐํํ๋ค
- getSession(true)
session object๊ฐ ์กด์ฌํ๋ฉด, ํ์ฌ HttpSession์ ๋ฐํํ๋ค.
์กด์ฌํ์ง ์์ผ๋ฉด ์๋ก ์์ฑํ๋ค.
package world;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet(urlPatterns = "/world")
public class WorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("WorldServlet doGet");
resp.setContentType("text/html; charset=utf-8");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>์ ๋ชฉ</title>");
pw.println("</head>");
pw.println("<body>");
HttpSession session = req.getSession(false); //request.getSession() : ์ธ์
๊ฐ์ฒด ์์ฑ
if(session == null) { //์ธ์
์ ๋ด๊ธด ์์ฑ์ด ์์ ๋,
session = req.getSession(true); //
//์ธ์
์ ์ ํจ์๊ฐ ์ง์ : ๋ฐ์ดํฐ๋ฅผ ์ด๋ ๊ธฐ๊ฐ๋์ ๋ณด๊ดํ ์ง (์ ํ)
session.setMaxInactiveInterval(30); //30์ด // 365 * 24 * 60 * 60 : 1๋
session.setAttribute("visited", "1"); // setAttribute("์์ฑ๋ช
":"์์ฑ๊ฐ") : ์ธ์
์์ฑ๊ฐ ์ค์
pw.println("<p>์ฒซ๋ฒ์งธ ๋ฐฉ๋ฌธ์
๋๋ค.</p>");
}
else {
String visited = (String)session.getAttribute("visited"); // Object๋ก ๋ฐํํ๊ธฐ ๋๋ฌธ์ ํ๋ณํ ํด์ค๋ค.
int count = Integer.parseInt(visited); //๋ฐฉ๋ฌธ ์ซ์๋ฅผ ์ ์๋ก ๋ฐ๊พผ๋ค.
count++;
pw.println("<p>๋ฐฉ๋ฌธํ์๋ " +count+ "๋ฒ์งธ ๋ฐฉ๋ฌธ์
๋๋ค.</p>");
session.setAttribute("visited", count + ""); // count๋ฅผ ๋ฌธ์์ด๋ก ๋ค์ ๋ฐ๊พผ๋ค.
};
session.setAttribute("id", "abc124");
session.setAttribute("pw", "123456");
pw.println("<a href='deleteObj'>deleteObject</a>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
DeleteObject.java
removeAttribute() : ์ธ์ ์ญ์
Enumeration : ๊ฐ์ฒด์ ์งํฉ ์ฒ๋ฆฌ ( ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํ๋ค. )
invalidate() : ์ธ์ ์ข ๋ฃ
package world;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet(urlPatterns = "/deleteObj")
public class DeleteObject extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession(); //์ธ์
๊ฐ์ฒด ์์ฑ
session.removeAttribute("visited"); // "visited"์ ์ธ์
์ ์ญ์
Enumeration<String> enum_session = session.getAttributeNames(); // getAttributeNames() : ์ด๋ค ์์ฑ๋ค์ด ์ ์ฅ ๋์ด ์๋์ง ํ์ธํ ๋ ์ฌ์ฉ
//Enumeration : ๊ฐ์ฒด์ ์งํฉ ์ฒ๋ฆฌ
//1) ํผ ํ๊ทธ ์์ ์ฌ๋ฌ ๊ฐ์ input ํ๊ทธ๊ฐ ์์ ๊ฒฝ์ฐ ์ฃผ๋ก ์ฌ์ฉ, ๋ชจ๋ name ๊ฐ์ Enumeration ํ์
์ผ๋ก ๋ฆฌํดํ๋ค. (์ฆ ๊ตฌ์ฒด์ ์ธ ํ๋ผ๋ฏธํฐ name์ ๋ชจ๋ฅผ ๋ ์ฌ์ฉํ๋ค.)
//2) ์ป์ name ๊ฐ์ ์ด์ฉํ์ฌ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ป๋๋ค.
while(enum_session.hasMoreElements()) { //hasMoreElements() ํ์ฌ ์ปค์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ค์ ์์น์์ ์์๊ฐ ๋ ์๋์ง
String name = enum_session.nextElement(); // enum_session์ ๋ค์ ์์๋ฅผ ๋ถ๋ฌ์จ๋ค.
String value = (String)session.getAttribute(name); // ๋ถ๋ฌ์จ enum_session์ ์์์ value๋ฅผ ๊ฐ์ ธ์จ๋ค.
System.out.println(name +" "+ value);
}
// session ์ญ์
session.invalidate(); // invalidate() : ์ธ์
์ข
๋ฃ
if(req.getSession(false) == null) {
System.out.println("session์ด ๋น์ด ์์ต๋๋ค");
}
}
}
- JSP (Java Server Page)
Server(Web)๋ฅผ ํตํด์ Client form์ ๋ง๋ค์ด ๋ด๋ ์ฝ๋
HTML๋ฌธ์ ์์ Java ์ฝ๋๋ฅผ ๋ฃ์ด ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ์์ฑํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ๋๊ตฌ
Java์ธ์ด๋ <% %> ์์ชฝ์ ์์ฑํด์ค๋ค๋ฉด ์ด๋๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
<h1>Hello JSP</h1>
<%
String str = "Hello JSP";
%>
<p>str:<%=str%></p> <%-- <%= : Java๋ก ๊ฐ์ ์
๋ ฅํด์ฃผ๋ ํผ --%>
<input type="text" size="20" value="<%=str %>">
<br>
<%
out.println("<h3>์ฒซ๋ฒ์งธ ๋ด์ฅ ๊ฐ์ฒด out</h3>");
%>
<%
for(int i=0; i<5;i++) { <%-- Java๋ฅผ ์ด์ฉํ์ฌ HTML์์๋ for๋ฌธ์ด ๊ฐ๋ฅ --%>
%>
<p>hello p tag <%=i %></p>
<%
}
%>
- ์ ์ธ๋ถ
<%! %> ์ ๊ฐ์ด ์์ฑ
์ ์ญ๋ณ์, class, function ๋ฑ์ ์ ์ธํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
- ์ฝ๋๋ถ
<% %> ์ผ๋ฐ์ ์ธ ์์ฑ๋ฐฉ๋ฒ
์น ํ์ด์ง์ ๋ค์ด์ฌ ๋๋ง๋ค ์์ฑ๋๋ค.
- Value
<%= %> ์ ๊ฐ์ด ์์ฑ
๊ฐ์ ์ถ๋ ฅํ ๋ ์ฌ์ฉ๋๋ค.
- ***JSP์ ๋ด์ฅ ๊ฐ์ฒด
JSP์์๋ ์๋ธ๋ฆฟ๊ณผ ๋ฌ๋ฆฌ ๋ฐ๋ก ํด๋์ค๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
request : ์น ํ์ด์ง์์ JSP๋ก ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ๋๋ ๊ฐ์ฒด
์๋ธ๋ฆฟ์ HttpServletRequest ๊ฐ์ฒด์ ๊ฐ๋ค.
setAttribute, getAttribute, getRequestDispatcher ๋ฑ๊ณผ ํจ๊ป ์ฐ์ธ๋ค.
response : ์น ํ์ด์ง๋ก ์๋ตํ ๋ ์ฌ์ฉ๋๋ ๊ฐ์ฒด
์๋ธ๋ฆฟ์ HttpServletResponse ๊ฐ์ฒด์ ๊ฐ๋ค.
sendHeader, sendRedirect ๋ฑ๊ณผ ํจ๊ป ์ฐ์ธ๋ค.
session : ์น ํ์ด์ง์ ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํ ์ธ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ๊ฐ์ฒด
setAttribute, getAttribute ๋ฑ๊ณผ ํจ๊ป ์ฐ์ธ๋ค.
(*request๋ ์ผํ์ฑ์ด์ง๋ง, session์ ์ ํด์ง ๊ธฐ๊ฐ๊น์ง ๊ณ์ ๋จ์์๋๋ค.)
pageContext : ํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ๊ฐ์ฒด
forward()์ ํจ๊ป ์ฐ์ฌ ์ง์ ํ ํ์ด์ง๋ก ๋์ด๊ฐ ๋ ์ฌ์ฉํ๋ค.
์ 4๊ฐ๋ ๊ผญ ์์๋์.
- Ajax (Asynchronous JavaScript And XML)
- ๋น๋๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ and XML
๋น๋๊ธฐ ๋ฐฉ์ : ์นํ์ด์ง๋ฅผ ์๋ก reloadํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค.
- ๊ธฐ๋ณธ ํ์
$.ajax({ })
๊ดํธ ์์ชฝ์ ํค์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ๋๋ค.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<p id="demo"></p>
<br>
<button type="button">click</button>
<script type="text/javascript">
$(function () {
$('button').click(function() {
$.ajax({ // $.ajax({ }) -- ajax ๋ฐ์ดํฐ ์ ์ก ๊ธฐ๋ณธ ์์
//data.jsp๋ก ์ด๋ํ ๋ (send)
url:"data.jsp",
type:"get", // get/post -- jsp์์ ์๋ฏธ์์ง๋ง ์๋ธ๋ฆฟ์์๋ ์๋ฏธ๊ฐ ์๋ค.
data:
//"t1=XYZ&t2=์์ฐจ์นด"
{t1:"XYY",
t2:"์นด์นด์นด"}, //JSON๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ
//data.jsp์์ ๋ค๋
์์ ๋ (receive)
success:function(data, status, xhr){ //์ฑ๊ณตํ์ ๋ ํจ์
alert(status); //success ๋ฉ์ธ์ง ์ถ๋ ฅ
$('#demo').html(data);
},
error:function(xhr, status, error){ //error์ผ ๋ ํจ์
alert(status); //error ๋ฉ์ธ์ง ์ถ๋ ฅ
alert(error); //console์ ์ด๋ค ์๋ฌ์ธ์ง ๋์จ๋ค.
},
complete:function(xhr, status){ //๋ชจ๋ ์ํํ์ ๋ ํจ์
alert("ํต์ ์ข
๋ฃ");
}
});
});
});
</script>
</body>
</html>
'๐ป ๊ฐ๋ฐ > ๐ TIL (Today I Learned)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
21.04.12 TIL (D+63 Spring) (0) | 2021.04.12 |
---|---|
210323 TIL(JSP EL ํ๊ทธ, JSTL ํ๊ทธ, JSP Action ํ๊ทธ) (0) | 2021.03.23 |
21.03.10(D+40 ์๋ธ๋ฆฟ(Servlet) , WAS) (0) | 2021.03.10 |
21.03.09 TIL(D+39 XML, JSON) (0) | 2021.03.09 |
21.03.05 TIL(D+37 jQuery) (0) | 2021.03.05 |