반응형
*Session(비연결성을 해결하기 위해 사용->관계유지)
-
접속자의 정보를 서버 측 메모리에 저장한다.(해킹어렵)
-
=>Web browser : 접속자의 browser당 ID를 저장 (ID는 겹치지 않는다.)
-
모든 브라우저에 적용할 수 있다.
-
모든 데이터형이 저장될 수 있다.(클라이언트가 서버에 던지는건 String만 된다.)
-
HttpSession interface를 사용한다.
-
사용법)
-
1.HttpSession 얻기(Container에는 정보를 저장하기 위한 Session이 생성되어있다.)
-
<<<<(요청객체-HTTP Servlet request로 부터 얻는다)>>>>
-
HTTPSession session=request.getSession();
-
<<<<말을 잘 듣지않아 Container성능에 민감>>
-
2.생존 시간 설정(Tomcat은 기본시간이 30분 이다.)
-
=>사용자가 동작을 멈춘상태에서 다음동작이 일어나는 사이의 시간(인터벌) 설정
-
=>Servers->tomcat->web.xml-><session-config><session-timeout>을 확인해 보면 30이다.
-
session.setMaxInactiveInterval(초);//60*60*24*30(초/분/시/일)이렇게 계산.->모든 Session에 적용
-
=>변경시간은 계속 유지된다.
-
3.값 설정
-
Session.setAttribute(이름,값); //KVP
-
4.값얻기
-
Session.getAttribute("이름")=>값
-
5.값 삭제
-
Session.removeAttribute("이름")
-
6.세션을 무효화(세션자체를 없앰)
-
Session.invalidate();//getSession하면 다시 얻어옴..세션이 없으면 무조건 로그인
-
///DB에서 조회한 많은 양의 데이터, 민감한 정보는 저장하지 않는다.(메모리 감당이 안된다=돈多)
<!-- use_session.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="http://localhost:8080/servlet_prj/common/main_v190130.css"/>
<style type="text/css">
#wrap{margin:0px auto;width:800px; height:860px;}
#header{width:800px; height:140px; background:#FFFFFF url(http://localhost:8080/servlet_prj/common/images/header_bg.png) repeat-x;
position: relative; }
#headerTitle{font-family: HY견고딕,고딕; font-size:35px; font-weight:bold; text-align:center;
/* padding-top: 35px */ position:absolute; top:40px; left:290px; }
#container{width:800px; height:600px; }
#footer{width:800px; height:120px; }
#footerTitle{float: right; font-size:15px; padding-top:20px; padding-right:20px; }
</style>
<!-- jQuery CDN -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$(".btn").click(function(){
chkNull();
});//click
$("[name='id']").keydown(function(evt){
if(evt.which==13){
chkNull();
}//end if
});//keydown
$("[name='pass']").keydown(function(evt){
if(evt.which==13){
chkNull();
}//end if
});//keydown
});//ready
function chkNull(){
var id=$("[name='id']").val();
var pass=$("[name='pass']").val();
if(id==""){
$("[name='id']").focus();
return;
}//end if
if(pass==""){
$("[name='pass']").focus();
return;
}//end if
$("form").submit();//tag selector
}//chkNull
</script>
</head>
<body>
<div id="wrap">
<div id="header">
<div id="headerTitle">SIST Class4</div>
</div>
<div id="container">
<div>
<form method="post" action="../use_session_a">
<table>
<tr>
<td colspan="2" align="center">
세션사용 로그인
</td>
</tr>
<tr>
<td>
<input type="text" name="id" placeholder="아이디" autofocus="autofocus" class="inputBox"/>
</td>
<td rowspan="2">
<input type="button" value="로그인" class="btn" style="height:50px; width:50px;"/>
</td>
</tr>
<tr>
<td>
<input type="password" name="pass" placeholder="비밀번호" class="inputBox"/>
</td>
</tr>
</table>
</form>
</div>
</div>
<div id="footer">
<div id="footerTitle">copyright© all right reserved. class 4.</div>
</div>
</div>
</body>
</html>
<!-- UseSessionA -->
package day0304;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class UseSessionA extends HttpServlet {
private Map<String, String> loginMap;
public void init() {
loginMap =new HashMap<String,String>();
loginMap.put("kim","김");
loginMap.put("lee","이");
loginMap.put("park","박");
loginMap.put("roh","노");
}//init-생명주기 method 최초1번만 만들어짐
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//응답 방식 설정
response.setContentType("text/html;charset=UTF-8");
//출력스트림 얻기
PrintWriter out=response.getWriter();
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta charset=\"UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://localhost:8080/servlet_prj/common/css/main_v190130.css\"/>\r\n");
out.write("<style type=\"text/css\">\r\n");
out.write("#wrap{ margin:0px auto; width:800px; height: 860px; }\r\n");
out.write("#header{ width:800px; height: 140px; background: #FFFFFF url(http://localhost:8080/servlet_prj/common/images/header_bg.png) repeat-x;\r\n");
out.write("\t\t\tposition: relative; }\r\n");
out.write("#headerTitle{ font-family: HY견고딕, 고딕; font-size: 30px; font-weight: bold;text-align: center;\r\n");
out.write("\t\t\t\t\tposition: absolute; top:30px; left:290px}\r\n");
out.write("#container{ width:800px; height: 600px; }\r\n");
out.write("#footer{ width:800px; height: 120px; }\r\n");
out.write("#footerTitle{ float:right; font-size: 15px; padding-top:20px; padding-right: 20px }\r\n");
out.write("</style>\r\n");
out.println("<script type='text/javascript'>");
out.println("window.onload=function(){");
out.println("document.getElementById('job').addEventListener('click',movePage);");
out.println("}//onload");
out.println("function movePage(){");
out.println("\tlocation.replace('use_session_b');");
out.println("}//movePage");
out.println("</script>");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div\tid=\"wrap\">\r\n");
out.write("\t<div id=\"header\">\r\n");
out.write("\t\t<div id=\"headerTitle\">SIST Class4</div>\r\n");
out.write("\t</div>\r\n");
out.write("\t<div id=\"container\">\r\n");
//접속자가 입력한 parameter 받기
String id=request.getParameter("id");
String pass=request.getParameter("pass");
if(loginMap.containsKey(id) && "123".equals(pass)) {
//로그인 성공
String name=loginMap.get(id);
//로그인 정보를 세션에 추가
//1.세션 얻기
HttpSession session=request.getSession();
//2.세션 생존시간 설정(Tomcat의 기본은 30분)-한번설정되면 모든페이지에 설정
session.setMaxInactiveInterval(60*2);
//3.세션에 값 설정
session.setAttribute("id", id);
session.setAttribute("user_name", name);
out.println("<h2>세션 사용 로그인</h2>");
out.print("<strong>");
out.print(id);
out.print("</strong>(");
out.print(name);
out.println(")님 로그인 하셨습니다.<br/>");
out.println("작업페이지로 <a id='job'>이동</a>");
}else {
out.println("<strong>아이디나 비밀번호를 확인해주세요.</strong><br/>");
out.println("다시<a href='day0304/use_session.html'>로그인</a>");
}//end else
out.write("\t</div>\r\n");
out.write("\t<div id=\"footer\">\r\n");
out.write("\t\t<div id=\"footerTitle\">copyright© all right reserved. class 4 </div>\r\n");
out.write("\t</div>\r\n");
out.write("</div>\r\n");
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
}//doPost
}//class
<!-- UseSessionB -->
package day0304;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class UseSessionB extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta charset=\"UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://localhost:8080/servlet_prj/common/css/main_v190130.css\"/>\r\n");
out.write("<style type=\"text/css\">\r\n");
out.write("#wrap{ margin:0px auto; width:800px; height: 860px; }\r\n");
out.write("#header{ width:800px; height: 140px; background: #FFFFFF url(http://localhost:8080/servlet_prj/common/images/header_bg.png) repeat-x;\r\n");
out.write("\t\t\tposition: relative; }\r\n");
out.write("#headerTitle{ font-family: HY견고딕, 고딕; font-size: 30px; font-weight: bold;text-align: center;\r\n");
out.write("\t\t\t\t\tposition: absolute; top:30px; left:290px}\r\n");
out.write("#container{ width:800px; height: 600px; }\r\n");
out.write("#footer{ width:800px; height: 120px; }\r\n");
out.write("#footerTitle{ float:right; font-size: 15px; padding-top:20px; padding-right: 20px }\r\n");
out.write("</style>\r\n");
out.println("<script type='text/javascript'>");
out.println("window.onload=function(){");
out.println("document.getElementById('logout').addEventListener('click',movePage);");
out.println("}//onload");
out.println("function movePage(){");
out.println("\tlocation.replace('use_session_c');");
out.println("}//movePage");
out.println("</script>");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div\tid=\"wrap\">\r\n");
out.write("\t<div id=\"header\">\r\n");
out.write("\t\t<div id=\"headerTitle\">SIST Class4</div>\r\n");
out.write("\t</div>\r\n");
out.write("\t<div id=\"container\">\r\n");
//다른 페이지(UseSessionA-다른 페이지)에서 사용한 값을 이동한 페이지(UseSessionB)에서
//사용하려면 세션이 필요하다.(비연결성의 관계유지)
//1.세션얻기
HttpSession session=request.getSession();
//2.세션에서 값 얻기
String id=(String) session.getAttribute("id");
String name=(String) session.getAttribute("user_name");
if(id==null) {
//세션에 값이 없다면
//이 페이지의 URL을 직접 넣고 들어온 경우(비정상적인 요청발생)/
//정상적인 요청을 했지만 세션의 인터벌(사용시간)을 초과한 경우
response.sendRedirect("day0304/use_session.html");
//아래줄에 실행이 되므로 막아준다.
return;
}//end if
out.println("<h2>세션 사용</h2>");
out.print(name);
out.print("(<strong>");
out.print(id);
out.println("</strong>)님의 작업 페이지입니다.<br/>");
out.println("<a id='logout'>로그아웃</a><br/>");
out.print("<img src='day0304/images/job.png'/>");
out.write("\t</div>\r\n");
out.write("\t<div id=\"footer\">\r\n");
out.write("\t\t<div id=\"footerTitle\">copyright© all right reserved. class 4 </div>\r\n");
out.write("\t</div>\r\n");
out.write("</div>\r\n");
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
}//doGet
}//class
<!-- UseSessionC -->
package day0304;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@SuppressWarnings("serial")
public class UseSessionC extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//세션 삭제 페이지(로그아웃)
//1.세션 얻기
HttpSession session=request.getSession();
//2.세션 값 삭제
session.removeAttribute("id");
session.removeAttribute("user_name");
//3.브라우저에 할당 된 세션자체 무효화
session.invalidate();
//이동할 페이지 설정
//response.sendRedirect("day0304/use_session.html");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//(뒤로가기 막음)막지 않으면 뒤로가기를 눌렀을때 로그인한 상태로 되돌아감
out.println("<script type='text/javascript'>");
out.println("window.onload=function(){");
out.println("\tlocation.replace('day0304/use_session.html');");
out.println("}//onload");
out.println("</script>");
/*
세션이 무효화 되고난 이후에는 세션에서 값을 얻을 수 없다.
String id=(String)session.getAttribute("id");
String name=(String)session.getAttribute("user_name");
System.out.println("아이디 "+id+" 이름 "+name);
*/
}//doGet
}//class
*Cookie
-
//HDD에 저장되어 보안이 안좋다.
-
접속자의 정보를 접속자 컴퓨터에 File로 저장하여 사용하는 관계유지 방식
-
쿠키를 지원하지 않는 브라우저에서는 사용할 수 없다.
-
//쿠키는 더더욱 중요한 정보를 저장하지 않는다. 절대 중요정보 저장ㄴㄴ
-
중요정보를 저장하지 않는다.(객체는 저장할 수 없다.)
-
String (문자열) 만 저장가능 (한글은 쿠키로 심어지지 않는다)
-
//쿠키는 class로 제공되어 객체화를 하여 사용해야한다.
-
//요즘은 HTML Storage를 쓰는 추세.
-
사용법)
-
1.객체화
-
Cookie c=new Cookie(키,값);
//(String,String) //키와 값의 쌍을 가지는 Map, Cookie, Json, Session.setAttribute(이름,값); (?)//KVP
-
2.쿠키의 생존시간 설정
-
c.setMaxAge(초);
-
3.쿠키 심기 (심어진 쿠키는 생존 시간만큼 유지)
-
response.addCookie(쿠기 객체);
-
4.쿠키 읽기 (다른 서버에서 심은 쿠키는 읽어들일 수 없다.)
-
Cookie[] cookies=request.getCookies()
-
for (int i=0; i<cookies.length; i++){
-
Cookie c=cookies[i];
-
//쿠키이름 얻기
-
String name=c.getName();
-
//쿠키의 값 얻기
-
String value=c.getValue();
-
}
-
5.쿠키 삭제
-
1.지우려고 하는 쿠키의 이름과 같은 이름을 가진 쿠키 생성
-
Cookie c= new Cookie(이름,"");
-
2.생존시간을 0으로 설정
-
c.setMaxAge(0);
-
3.쿠키 심기
-
response.addCookie(c); //2번은 생략가능하나 심기까지 해주어야 그때 지워짐
<!-- GetCookie -->
package day0304;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class GetCookie extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//응답 방식 설정
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta charset=\"UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://localhost:8080/servlet_prj/common/css/main_v190130.css\"/>\r\n");
out.write("<style type=\"text/css\">\r\n");
out.write("#wrap{ margin:0px auto; width:800px; height: 860px; }\r\n");
out.write("#header{ width:800px; height: 140px; background: #FFFFFF url(http://localhost:8080/servlet_prj/common/images/header_bg.png) repeat-x;\r\n");
out.write("\t\t\tposition: relative; }\r\n");
out.write("#headerTitle{ font-family: HY견고딕, 고딕; font-size: 30px; font-weight: bold;text-align: center;\r\n");
out.write("\t\t\t\t\tposition: absolute; top:30px; left:290px}\r\n");
out.write("#container{ width:800px; height: 600px; }\r\n");
out.write("#footer{ width:800px; height: 120px; }\r\n");
out.write("#footerTitle{ float:right; font-size: 15px; padding-top:20px; padding-right: 20px }\r\n");
out.write("#non_cookie{color:#FF0000; font-size:15px; font-weight:bold;}");
out.write("</style>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div\tid=\"wrap\">\r\n");
out.write("\t<div id=\"header\">\r\n");
out.write("\t\t<div id=\"headerTitle\">SIST Class4</div>\r\n");
out.write("\t</div>\r\n");
out.write("\t<div id=\"container\">\r\n");
//접속자에게 심어진 쿠키 읽기
Cookie[] cookies=request.getCookies();
if(cookies!=null) {
Cookie temp=null;
out.println("<ul>");
for(int i=0; i<cookies.length; i++) {
temp=cookies[i];
out.print("<li>쿠키 이름 : <strong>");
out.print(temp.getName());
out.print("</strong> 쿠키 값 : ");
out.print(temp.getValue());
out.print("</li>");
}//end for
out.println("</ul><br/>");
out.println("<a href='remove_cookie'>쿠키 삭제</a>");
}else {
out.println("<div id='non_cookie'>쿠키가 존재하지 않습니다.</div>");
out.println("<div><a href='add_cookie'>쿠기 심기</a></div>");
}//end else
out.write("\t</div>\r\n");
out.write("\t<div id=\"footer\">\r\n");
out.write("\t\t<div id=\"footerTitle\">copyright© all right reserved. class 4 </div>\r\n");
out.write("\t</div>\r\n");
out.write("</div>\r\n");
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
}//doGet
}//class
<!-- AddCookie -->
package day0304;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class AddCookie extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta charset=\"UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://localhost:8080/servlet_prj/common/css/main_v190130.css\"/>\r\n");
out.write("<style type=\"text/css\">\r\n");
out.write("#wrap{ margin:0px auto; width:800px; height: 860px; }\r\n");
out.write("#header{ width:800px; height: 140px; background: #FFFFFF url(http://localhost:8080/servlet_prj/common/images/header_bg.png) repeat-x;\r\n");
out.write("\t\t\tposition: relative; }\r\n");
out.write("#headerTitle{ font-family: HY견고딕, 고딕; font-size: 30px; font-weight: bold;text-align: center;\r\n");
out.write("\t\t\t\t\tposition: absolute; top:30px; left:290px}\r\n");
out.write("#container{ width:800px; height: 600px; }\r\n");
out.write("#footer{ width:800px; height: 120px; }\r\n");
out.write("#footerTitle{ float:right; font-size: 15px; padding-top:20px; padding-right: 20px }\r\n");
out.write("</style>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div\tid=\"wrap\">\r\n");
out.write("\t<div id=\"header\">\r\n");
out.write("\t\t<div id=\"headerTitle\">SIST Class4</div>\r\n");
out.write("\t</div>\r\n");
out.write("\t<div id=\"container\">\r\n");
//쿠키 심기 (한글은 심어지지 않는다)
//1.쿠키 생성
Cookie nameCookie=new Cookie("name", "jungyun.kim");
Cookie ageCookie=new Cookie("age", "31");
//2.생존 시간 설정 : 생존시간을 설정하지 않으면 브라우저가 떠있는 동안에만 유지
nameCookie.setMaxAge(60*60*24);
//3.쿠키 심기
response.addCookie(nameCookie);
response.addCookie(ageCookie);
out.println("쿠키 심기 완료<br/>");
out.println("<a href='get_cookie'>쿠키 읽기</a>");
out.write("\t</div>\r\n");
out.write("\t<div id=\"footer\">\r\n");
out.write("\t\t<div id=\"footerTitle\">copyright© all right reserved. class 4 </div>\r\n");
out.write("\t</div>\r\n");
out.write("</div>\r\n");
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
}//doGet
}//class
<!-- RemoveCookie -->
package day0304;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class RemoveCookie extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.write("<!DOCTYPE html>\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta charset=\"UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://localhost:8080/servlet_prj/common/css/main_v190130.css\"/>\r\n");
out.write("<style type=\"text/css\">\r\n");
out.write("#wrap{ margin:0px auto; width:800px; height: 860px; }\r\n");
out.write("#header{ width:800px; height: 140px; background: #FFFFFF url(http://localhost:8080/servlet_prj/common/images/header_bg.png) repeat-x;\r\n");
out.write("\t\t\tposition: relative; }\r\n");
out.write("#headerTitle{ font-family: HY견고딕, 고딕; font-size: 30px; font-weight: bold;text-align: center;\r\n");
out.write("\t\t\t\t\tposition: absolute; top:30px; left:290px}\r\n");
out.write("#container{ width:800px; height: 600px; }\r\n");
out.write("#footer{ width:800px; height: 120px; }\r\n");
out.write("#footerTitle{ float:right; font-size: 15px; padding-top:20px; padding-right: 20px }\r\n");
out.write("</style>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<div\tid=\"wrap\">\r\n");
out.write("\t<div id=\"header\">\r\n");
out.write("\t\t<div id=\"headerTitle\">SIST Class4</div>\r\n");
out.write("\t</div>\r\n");
out.write("\t<div id=\"container\">\r\n");
//쿠키 삭제
//1.삭제할 쿠키가 가진 같은 이름의 쿠키 생성
Cookie co=new Cookie("name", "");
Cookie co1=new Cookie("age", "");
//2.생존 시간을 설정
co.setMaxAge(0); //즉시 지원
co1.setMaxAge(0); //즉시 지원
//3.쿠키 심기
response.addCookie(co);
response.addCookie(co1);
out.println("쿠키 삭제 완료<br/>");
out.println("<a href='get_cookie'>쿠키 읽기</a>");
out.write("\t</div>\r\n");
out.write("\t<div id=\"footer\">\r\n");
out.write("\t\t<div id=\"footerTitle\">copyright© all right reserved. class 4 </div>\r\n");
out.write("\t</div>\r\n");
out.write("</div>\r\n");
out.write("\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
}//doGet
}//class
반응형
'국비지원학원 > HTML,JavaScript,jQ' 카테고리의 다른 글
91일차-JavaEE_DBCP (0) | 2019.03.14 |
---|---|
90일차-JavaEE_popup/DBCP (0) | 2019.03.12 |
88일차-JavaEE_parameter처리/페이지 이동(forward,redirect) (0) | 2019.03.09 |
87일차-JavaEE_HttpServletRequest (0) | 2019.03.08 |
86일차-JavaEE_Servlet/Life cycle (0) | 2019.03.07 |