국비지원학원/JSP

95일차-JSP_내장 객체

초코맛 2019. 3. 31. 02:07
반응형

*파라메터처리(접속자가 입력한 값)

=>HTML Form Control이 입력된 값을 서버에서 처리

  • 이름 유일

    • =>request.getParameter("이름");=>String

  • 이름 중복

    • =>request.getParameterValues("이름");=>String[]

  • 파라메터의 이름만 얻기

    • =>request.getParameternames( );=>Enumeration

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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; min-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(){
           $("#btnGet").click(function(){
                //HTML Form Control의 유효성 검증 후 submit날림
                $("#getFrm").submit();
           });//click
           $("#btnPost").click(function(){
                //HTML Form Control의 유효성 검증 후 submit날림
                $("#postFrm").submit();
           });//click
     });//ready
</script>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     
     <div id="container">
           <div id="getDiv">
                <h2>이름이 유일한 HTML Form Control의  값전송-GET</h2>
                <form method="get" action="parameter.jsp"  id="getFrm">
                <table>
                <tr>
                     <td><label>이름</label></td>
                     <td><input type="text" name="name"  class="inputBox"></td>
                </tr>
                <tr>
                     <td><label>나이</label></td>
                     <td><input type="password" name="age"  class="inputBox"></td>
                </tr>
                <tr>
                     <td><label>메일링 여부</label></td>
                     <!-- checkbox가 하나라면 배열로 처리되지  않는다. -->
                     <td><input type="checkbox"  name="mailing">수신</td>
                </tr>
                <tr>
                     <td><label>성별</label></td>
                     <td>
                     <input type="radio" name="gender"  value="남자">남자
                     <input type="radio" name="gender"  value="여자"checked="checked">여자
                     </td>
                </tr>
                <tr>
                     <td><label>숨김값</label></td>
                     <td><input type="hidden" name="addr"  value="서울시 강남구 역삼동 한독빌딩"></td>
                </tr>
                <tr>
                     <td><label>사용메일</label></td>
                     <td>
                     <select name="email" class="inputBox">
                           <option  value="gmail.com">--지메일--</option>
                           <option  value="naver.com">--네이버메일--</option>
                           <option  value="daum.net">--다음메일--</option>
                           <option  value="korea.com">--코리아메일--</option>
                           <option  value="hotmail.com">--핫메일--</option>
                     </select>
                     </td>
                </tr>
                <tr>
                     <td><label>가입인사</label></td>
                     <td><textarea  style="width:300px;height:100px;"name="greeting"></textarea></td>
                </tr>
                
                <tr>
                     <td><label>취미</label></td>
                     <td>
                           <input type="checkbox" name="hobby"  value="야구">야구<br/>
                           <input type="checkbox" name="hobby"  value="댄스">댄스<br/>
                           <input type="checkbox" name="hobby"  value="축구">축구<br/>
                           <input type="checkbox" name="hobby"  value="흡연">흡연<br/>
                     </td>
                </tr>
                
                <tr>
                     <td colspan="2">
                           <input type="button" value="전송"  class="btn" id="btnGet"/>
                     </td>
                </tr>
                </table>
                </form>
           </div>
           
           <div id="postDiv">
                <h2>이름이 유일한 HTML Form Control의  값전송-POST</h2>
                <form method="post" action="parameter.jsp"  id="postFrm">
                <table>
                <tr>
                     <td><label>이름</label></td>
                     <td><input type="text" name="name"  class="inputBox"></td>
                </tr>
                <tr>
                     <td><label>나이</label></td>
                     <td><input type="password" name="age"  class="inputBox"></td>
                </tr>
                <tr>
                     <td><label>메일링 여부</label></td>
                     <!-- checkbox가 하나라면 배열로 처리되지  않는다. -->
                     <td><input type="checkbox"  name="mailing">수신</td>
                </tr>
                <tr>
                     <td><label>성별</label></td>
                     <td>
                     <input type="radio" name="gender"  value="남자">남자
                     <input type="radio" name="gender"  value="여자"checked="checked">여자
                     </td>
                </tr>
                <tr>
                     <td><label>숨김값</label></td>
                     <td><input type="hidden" name="addr"  value="서울시 강남구 역삼동 한독빌딩"></td>
                </tr>
                <tr>
                     <td><label>사용메일</label></td>
                     <td>
                     <select name="email" class="inputBox">
                           <option  value="gmail.com">--지메일--</option>
                           <option  value="naver.com">--네이버메일--</option>
                           <option  value="daum.net">--다음메일--</option>
                           <option  value="korea.com">--코리아메일--</option>
                           <option  value="hotmail.com">--핫메일--</option>
                     </select>
                     </td>
                </tr>
                <tr>
                     <td><label>가입인사</label></td>
                     <td><textarea  style="width:300px;height:100px;"name="greeting"></textarea></td>
                </tr>
                
                <tr>
                     <td><label>취미</label></td>
                     <td>
                           <input type="checkbox" name="hobby"  value="야구">야구<br/>
                           <input type="checkbox" name="hobby"  value="댄스">댄스<br/>
                           <input type="checkbox" name="hobby"  value="축구">축구<br/>
                           <input type="checkbox" name="hobby"  value="흡연">흡연<br/>
                     </td>
                </tr>
                
                <tr>
                     <td colspan="2">
                           <input type="button" value="전송"  class="btn" id="btnPost"/>
                     </td>
                </tr>
                </table>
                </form>
           </div>
     </div>
     
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info ="Web Parameter 처리"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%
           //post방식의 요청일때 한글처리
           request.setCharacterEncoding("UTF-8");
           String method=request.getMethod();
     %>
     <strong><%=method %></strong>
     <%
           //Web Parameter 받기(사용자가 HTML Form Control에  입력한 값 받기)
           //Tomcat 8.x 이상은 GET방식일때 한글처리가  된다.(자동으로)
           /////////////////////////parameter name이 유일한  경우=>String으로 처리/////////////////////////
           String name=request.getParameter("name");//text
           String age=request.getParameter("age");//password
           String  mailing=request.getParameter("mailing");//checkbox가 하나인  경우-선택on/Xnull
           String gender=request.getParameter("gender");//radio
           String addr=request.getParameter("addr");//hidden
           String email=request.getParameter("email");//select
           String  greeting=request.getParameter("greeting");//textarea
                     
           /////////////////////////parameter name이 중복된  경우=>String[]로 처리////////////////////////
           String[] hobby=request.getParameterValues("hobby");
           
     %>
     <div id="paramOutput">
     <ul>
           <li>---HTML Form Control의 name속성이 가지는 이름이  유일---</li>
           <li>이름 : <%=name %></li>
           <li>나이 : <%=age %></li>
           <li>메일 수신 여부 : <%=mailing %></li>
           <li>성별 : <%=gender %></li>
           <li>주소 : <%=addr %></li>
           <li>이메일 : <%=email %></li>
           <li>가입인사 : <textarea  style="width:300px;height:100px;"><%=greeting %></textarea></li>
           <li>가입인사 : <%=greeting.replaceAll("\n", "<br/>")  %></li><!-- 보기편하게 줄바꿈을 나타나게 하는것 -->
           <li>---HTML Form Control의 name속성이 가지는 이름이  중복---</li>
           <li>
           <%if(hobby!=null){
                for(int i=0; i<hobby.length; i++){
                     //번거롭게 닫고 열고 하지 않고 출력에 대한  내장객체를 사용할 수 있다.(편리//항상은 아님)
                     //출력 내장객체 : out
                     out.print(hobby[i]);
                     out.println(" ");
                }//end for
           }else{
                out.print("선택하신 취미가 없습니다.");
           }//end else %>
           </li>
     </ul>
     </div>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>

 

*페이지 이동

  • ////내장객체는 아니지만 request이용해...

  • 요청시 페이지 이동(Forward)

    • 1.이동할 페이지 설정

      • RequestDispotcher rd=request.getReguestDispotcher("uri");

    • 2.이름

      • rd.forward(reueqst,resonse);

    • 브라우저는 페이지의 이동을 알 수 없다.(URL이 그대로이기 때문에)

    • 데이터 처리 페이지화면 구성 페이지가 분리될 수 있다.(단점은 파일의 갯수가 많아지고 장점은 분리!(일의 구분))//잘쓰면 mvc?pattern

    • =>Servlet =>JSP

    • (이미지) -n자 이동

    •  

    • 서버내의 이동만 가능(URI만 받기 때문)

    • 사용법)

  • 응답시 페이지 이동(Redirect)

    • 브라우저는 페이지의 이동을 알게 된다.(브라우저가 지정된 페이지를 재요청)

    • 정상적인 요청인 경우 보여줄 페이지에서 비정상적인 요청이 발생한 경우에 대한 대비 페이지

    • (이미지) -M자 이동

    •  

    • 서버외부로 보낼 수 있다.(URL을 받기 때문)

    • //URL : Uniform Resource Locator(만든이 : 팀버너즈리)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="접속자에게 응답되지않고 데이터처리를 목적으로 하는  페이지"%>
<%
     //응답화면을 만들지 않아 업무로직에 집중할 수 있다.
     String[]  names={"공선의","이재현","김건하","최혜원","오영근","박정미"};
     //처리한 결과를 내가가지는것이 아니라 VIEW-화면 구성 페이지로  전달하게 된다(이때, Scope객체를 사용하는데, 값의 사용범위를 정하는  객체)
     //request내장객체는 값을 forward로 이동한 페이지에서 사용할  수 있다.
     request.setAttribute("gruop2", names);
     
     //1.이동할 페이지의 URI 설정(도메인+port번호가 빠진경로)
     RequestDispatcher  rd=request.getRequestDispatcher("forward_b.jsp");
     //2.이동
     rd.forward(request, response);
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="업무처리 페이지에서 처리한 결과를 받아 화면을 구성하는  일만 하는 페이지"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%
           //이전페이지에서 처리된 결과 받기
           String[]  member=(String[])request.getAttribute("gruop2");
           if(member==null){
                response.sendRedirect("forward_a.jsp");
                return;
           }//end if 아랫줄의 코드를 실행하기 때문에 return;
     %>
     <table border="1">
     <tr>
           <th width="100">이름</th>
     </tr>
     <% for(int i=0; i<member.length; i++){ %>
     <tr>
           <td><%= member[i] %></td>
     </tr>
     <%}//end for %>
     </table>
     <a href="forward_a.jsp?name=jungyun&age=30">parameter  요청</a>
     <br/>
     <!-- forward로 이동한 페이지에서 이전페이지의 Parameter를 사용할 수 있게된다.값이 넘어오기 때문에 -->
     파라메터 이름 : <%=request.getParameter("name") %><br/>
     파라메커 나이 : <%=request.getParameter("age") %><br/>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="redirect의 사용"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     
     <div id="container">
     <%
     //정상적인 요청으로 이 페이지를 방문하면 정상적인 응답을 해  주지만
     //비정상적인 요청이 있다면 다른페이지로 이동할 때  사용한다.(가릴수 없어서 난수발생으로 보여줄 예정)
     if(new Random().nextBoolean()){//비정상적인 요청
           //response 내장객체를 사용하여 이동
           response.sendRedirect("redirect_b.jsp");//URL을  받으므로 외부 site로 이동도 가능하다.
           return;
     }//end if
     %>
     <img src="../common/images/img.png" title="내 목뼈는  정상임...아마도"/>
           
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="redirect의 연습"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     비정상적인 요청이 있을 때 보여질 페이지<br/>
     <a href="redirect_a.jsp?name=jungyun&age=20">요청</a>
     <div>
     <!-- forward와는 다르게 이동한 페이지에서 파라메터의 값을  사용할 수 없다.
           비정상적인 요청이 있을 때 제공될 페이지이므로  이전페이지의 값들을 사용할 필요가 없다.
           forward와는 완전히 동작이 달라 명확히 알고 사용해야  한다. -->
           파라메터 이름 : <%=request.getParameter("name")  %><br/>
           파라메터 나이 : <%=request.getParameter("age") %><br/>
     </div>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="브라우저로 출력하는 내장객체"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%
           //out 내장객체의 사용.(장점은 scriptlet안에서 끊지 않고  브라우저로 출력할 수 있다.)
           String subject="JSP(Java Server Page)-SSS(Server Side  Script)중 하나";
           out.println(subject);
     
           String[]  link={"http://daum.net","http://youtube.com","http://naver.com"};
           String[] link_name={"공선의","이재찬","김건하"};
     %>
     <table border="1">
     <tr>
           <th width="100">out사용</th>
     </tr>
<%
           for(int i=0; i<link.length; i++){
                out.println("\t\t<tr>");
                out.print("\t\t\t<td><a href='");
                out.print(link[i]);
                out.print("'>");
                out.print(link_name[i]);
                out.println("</a></td>");
                out.println("\t\t</tr>");       
           }//end for
%>
     </table>
     
     <table border="1">
     <tr>
           <th width="150">Expression사용</th>
     </tr>
<%   for(int i=0; i<link.length; i++){%>
           <tr>
                <td><a href="<%=link[i] %>"><%=link_name[i]  %></a></td>
           </tr>
<%   }//end for %>
     </table>
     
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>

 

 

*session

  • 접속자의 정보를 서버측 메모리에 저장

  • page directive의 session="true"인 상태에서 내장객체로 지원되고 사용할 수 있다.(비연결성 웹에서 접속자의 정보 저장)

  • 값 설정

    • session.setAttribute("이름", 값); //이때 값은 object

  • 값얻기

    • session.getAttribute("이름"); =>object

  • 생존시간 설정(Tomcat : 30분)-한번만 설정하면 모든 페이지에 동일하게 적용된다.

    • session.setMaxInactiveInterval(초); //초*분*시*일

  • 값 삭제(값만 삭제-공간은 남아 있다)-세션은 살아있기 때문에 값 삭제 이후 값을 얻으면 null이 나온다.

    • session.removeAttribute("이름");

  • 세션 무효화(세션 자체 삭제)-세션자체가 죽기 때문에 값을 얻을 수 없다.

    • session.invalidate();

  • 흐름도)(이미지)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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.jsp">
     <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&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    session="true"
    info="session 내장객체 사용"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%!
     private Map<String,String> logMap=new  HashMap<String,String>();
     {
           logMap.put("gong", "공선의");
           logMap.put("lee", "이재찬");
           logMap.put("kim", "김희철");
     }//instance영역 : 클래스가 실행 될때 자동 호출되며, 한번만  실행된다.
     //(이름이 없으므로 개발자가 직접 호출 할 수 없다.)
     %>
     <%
     String id=request.getParameter("id");
     String pass=request.getParameter("pass");
     
     if(logMap.containsKey(id)&& "1234".equals(pass)){
           //로그인 성공
           //세션에 값 설정
           session.setAttribute("user_id", id);
           session.setAttribute("user_name", logMap.get(id));
           
           //세션의 생존시간 설정
           session.setMaxInactiveInterval(60*1);
           //Servlet이나 JSP에서 Console로 출력할때 log method  사용.
           /*  log("--------------로그!!!"+session.getAttribute("user_id"));  //쉽게 출력*/
           String  name=(String)session.getAttribute("user_name");
     %>
     로그인 성공<br/> <a  href="use_session_c.jsp">로그아웃</a><br/>
     <%=name %>님 로그인 하셨습니다.<br/>
     <a href="job_a.jsp">작업페이지</a>
     <%
     }else{
           //로그인 실패
     %>
           아이디나 비밀번호를 확인해주세요.<br/>
           <a href="use_session.html">로그인</a>
     <%   
     }//end else
     %>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="job_a&b에서 사용할 jsp"%>
<%
     //세션에서 값을 얻어와서 값이 존재하지 않는다면 로그인  페이지로 이동
     String ses_id=(String)session.getAttribute("user_id");
     String ses_name=(String)session.getAttribute("user_name");
     
     if(ses_id==null|| "".equals(ses_id)){//세션이 없어
          response.sendRedirect("http://localhost:8080/jsp_prj/day0312/use_session.html");
           return;
     }//end if
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    session="true"
    info="session은 기본이 true라 명시하지 않아도 됨"
    %>
<%
     //세션의 값 삭제
     session.removeAttribute("user_id");
     session.removeAttribute("user_name");
     
     //세션 무효화
     session.invalidate();
     response.sendRedirect("http://localhost:8080/jsp_prj/day0312/use_session.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>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%@ include file="use_session_b.jsp" %>
     <strong><%= ses_name %></strong>님의 작업 페이지<br/>
     <a href="use_session_c.jsp">로그아웃</a><br/>
     
     <a href="job_b.jsp">작업 페이지2</a><br/>
     <img src="../common/images/img.png"/>
           
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</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>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%@ include file="use_session_b.jsp" %>
     <a href="use_session_c.jsp">로그아웃</a><br/>
     <marquee scrollamount="10"><%= ses_name %>(<%= ses_id
     %>)  님의 꿈의 작업페이지2</marquee>
     <!-- 태그 안에서 줄을 바꾸면 한줄로 잘나와  -->
     <br/>
     <img src="../common/images/img2.jpg"/>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>

 

 

 

-내장객체 : exception

  • isErrorPage="true"인 상태에서 제공되는 내장 객체

  • 예외를 전달받아 처리할 때 사용

  • //예외든 에러든 다 처리 가능

  • errorPage를 가진 JSP에서 발생한 예외 객체를 전달 받는다.

  • 이미지)

  • a.jsp에 <%@ errorPage="b.jsp"%>면 b.jsp에 <%@ isErrorPage="true" %>고 <% exception.getMessage(); %>로 전달 받는데,

  • //이때 a에서 발생하는 예외와 에러를 다 전달 받기 때문에 두개를 통틀어 Throwable이라고 하고 객체다형성이라고 한다. 포워드로 전달된다.

  • //객체 다형성(Throwable) 포워드로 무언가 전달이 된다.

 

<%@page import="java.io.IOException"%>
<%@page import="java.util.Random"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    errorPage="use_exception_b.jsp"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <%
     int num=new Random().nextInt(3);
     if(num==0){
           throw new Exception("최상위 예외");
     }else if(num==1){
           throw new IOException("IO예외");
     }else if(num==2){
           throw new NullPointerException("객체를 생성하시요.");
     }//end else
     
     %>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    isErrorPage="true"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     받아들인 예외의 메세지 :<%=exception %>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>

 

 

*액션태그(표준 액션)

  • JSP에서 제공하는 기능을 가진 태그들

  • 형식)

    • => //마크업언어의 문법

    • prefix : suffix

    • 외부 개발자가 만들어 제공하면 taglib 라고 한다.

  • include - 다른 JSP를 끼워넣어 보여줄 때.(지시자하고는 다르다)

    •  

    • 두개의 jsp가 보여지는 (HTML생성단계) 쪽에서 합쳐진다.

    • 변수나 method의 공유되지 않는다.

    • page directive의 충돌이 발생하지 않는다.

    • 공통디자인을 만들어두고 필요한 곳에서 사용하기 위해 사용한다.(공통디자인)

    • //각각만들어져 공유가 안된다

    • (이미지)

<%@ 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>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
           <div>
           <strong>외부 JSP</strong>
           <jsp:include page="include_action_b.jsp"/><!--  이질감이 덜든다.. -->
           <strong>외부 JSP</strong>
           </div>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="include연습"
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css"  href="http://localhost:8080/jsp_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/jsp_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>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     <div id="container">
     <div>
           외부 JSP
           <%
                String name ="김";
           %>
           <div>
                 <%@include file="include_b.jsp" %>
           </div>
           외부 JSP
           <br/>
           <!-- 외부 JSP에서 끼워지는 JSP의 변수는 에러 없이  사용할 수 있다. -->
           나이 : <%=age %>,주소: <%=addr %>
           <!-- 변수는공유된다. -->
           <%=toDay() %>
     </div>
     </div>
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <div>
           <img src="../common/images/img.png"/>
           <br/>
           내부 JSP
     </div>

 

 

  • forward - 페이지를 이동할 때(forward방식으로 이동)

    • jsp:forward Page ="이동할 jsp명"

    • 이동하는 페이지를 parameter를 붙여서 넘길 때

    • jsp:forward page="

    •  

    • ...

    •  
  • useBean

    • VO나 DTO를 생설 할 때

    •  

    • -setter 호출

    •  

    • ///set을 제외한 메소드명을 소문자로 적으면된다

    • -getter 호출

    •  

jsp:forward Page ="이동할 jsp명"

 

 

반응형

'국비지원학원 > JSP' 카테고리의 다른 글

98일차-JSP_JSTL_forTokens  (0) 2019.04.03
97일차-JSP_JSTL(Jsp Standard Tag Library)  (0) 2019.04.03
96일차-JSP_액션태그  (0) 2019.03.31
94일차-JSP tag's  (0) 2019.03.27
93일차-JSP  (0) 2019.03.26