국비지원학원/JSP

93일차-JSP

초코맛 2019. 3. 26. 04:07
반응형

*JSP(Java Server Page)

  • ///// Servlet과 같은 일을 하지만 훨씬 편함
  • Servlet의 단점을 개선한 Server Side Script(SSS)
    • =>개발자와 디자이너간의 업무 구분이 안된다.
  • 디자이너와 개발자간의 업무구분이 어느정도는 가능해진다.//(Servlet2같은 느낌으로 비슷)
  • Java EE(Java  Enterprise Edition)에 제공하는 Servlet의 개선판.
  • Java SE(Java Standard Edition)에서 제공하는 기능(클래스,인터페이스)를 사용할 수 있다.
  • 느리다(장점) 안정적-Thread 지원
  • Server Side Script=>JSP-java,ASP-VB,PHP-C기반 //기반이 다 다르다.
  • //웹의 성능은 동접자 수로 판별 하는데
  • ASP는 속도가 빠른대신 동접자가 많아질수록 떨어지고/ PHP는 속도중간,유지력도 중간/ Servler/JSP는 비교적 느려도 그 속도가 유지된다.
    • ASP : 소형 웹사이트(Thread처리x=>그만큼의 프로세스가 생성되어 순차적 처리) //150명정도면 소형
    • php : 중형 서버 (구조가 별로..)
    • Java : 대형/중형 
    • 다 좋은 언어고 언제 쓸거냐~를 따지려는 것.
  • //HTML에서는 Compile을 하지 않는데,,class>HTML>코드로 계단식 업무가 된다.
  • Compile을 개발자가 하지 않는다. (편의성)
  • Servlet에서 제공하는 요청처리객체, 응답처리 객체, 관계유지 객체를 그대로 사용한다.
        • =>HttpServletRequest : 접속자의 입력값 받기/접속자의 정보 받기/페이지 이동
            • =>HttpServletResponse : 응답방식설정/출력스트림/페이지 이동
                  • =>HttpSession  / Cookie : 접속자의 HDD에 저장
                  • (인터벌 : 요청이 끝나고 다음요청이 들어올때 까지의 시간)-기본 30분
  • HTML tag 사이에 JSP tag's 을 넣어서 정의 사용.
    • HTML(Hyper Text Markup Language) - 팀버너즈리가 만듦
  • JSPtag's, 내장객체, 액션태그, 표준액션(tag library), EL(Exculation Language)
    • 필수                                         몰라도 되지만 알면 편함
<%@ 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 name="코잘잘 이재찬";
%>
안녕 JSP<br/>
내 이름은 <strong><%=name %></strong> 입니다.<br/>
스릉흔드 JSP
</body>
</html>



*JSP tag's
  • ///내가 코딩할수 있는게 분명함.
  • 사용할 java Code를 정의하는 tag
  • JSP tag's 내의 내용이 Java Code로 생성된다.

태그명
태그
사용
directive
(지시자)
<%@ page    %>
페이지 지시자
JSP페이지의 환경설정용 
<%@ inclue    %>
인클루드 지시자
여러 JSP를 한번에 보여줄 때
(HTML tag로는 iframe tag가 있다.)
declaration
(선언)
<%!             %>
JSP에서 
method 정의
instance 변수 정의
Scriptlet
<%                %>
JSP에서 method내 자바코드 작성
->변수선언,연산,제어문,,,등
※ _jspService method 내 코드로 생성
expression
(표현식)
<%=               %>
JSP 내의 값들을 Web browser로 출력 할 때
※ _jspService method 내 코드 생성
Comment
(주석)
<%--             --%>
(mark up언어는 <!-- -->였음)
JSP태그들의 코드생성을 막아 전체적인 실행을 막을 때

  • Servlet이 훨신 동작이 짧아 빠르다. 데이터를 전송할때 주로 사용하게 되고, JSP로 페이지이동은 Forward로 하게된다.(값 넘김 위해)
    • 요청>Tomcat의 .class찾아>JVM에서 Instance>init()>doGet/doPost Servlet으로 Tomcat에 HTML페이지 생성>응답
  • JSP
    • 요청>.jsp>.java>(compile)>.class>JVM에서 Instance>_jspInit()>_jspService()로 Tomcat에 HTML페이지 생성>응답

    • 으로 비교적 동작이 많음.

       

  • Dynamic Web Project : 다양한 웹환경에서 만들 수 있게 해줌

 
*구조
<%@ page                     %>
//어디에 들어가든 상관없다+속성여러개를 넣을 수 있으며, 여러개를 사용할 수도 있다
<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <body>
  <%!     %> //declaration
  <%      %> //Scriptlet
  <%=     %> //Expression
  </body>
</html>
//.jsp는 컴파일 하지 않는다.
==>
class  ??   extends HttpJspBase{//부모가 HttpServlet
  public void _jspInit(){
  }
  public void _jspService(HttpServletRequest, HttpServletResponce){
  //요청과 응답 처리

  }
  public void _jspDestory(){
  }
}
//.java


 

 C:\dev\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\jsp_prj\org\apache\jsp\day0308
  • 이 자바파일을 수정하면...아무리 바꿔도 소용없음ㅋㅋ 돌면서 생성되는거기 때문에
  • 에러를 두군데서 확인해야 한다!! java파일도 jsp파일도~

<body>
  <% int i=0; %>



  <% i=8; %>

  <%= i %>
======>
_jspServise(){

int i=0;

i=8;

out.println(i);

}//멀쩡히 잘 됨!
//코드가 한쪽으로 생성되기 때문에 Error X
//지역변수는 초기화 꼭


  • Preferences>Web>JSP Files>Encoding>UTF-8
<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    info="scriptlet 연습"%>
<!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/css/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; }
td:hover{font-size:10px; background-color:#FF0055}
</style>
<script  src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
     $(".t").click(function() {
           alert($(this).children().val());
     });
     
     var d=new Date();
     var time="";
     time+=d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate()+" "
                +d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
     
     $("#c_time").text(time);
     
});//ready
</script>
</head>
<body>
<div id="wrap">
     <div id="header">
           <div id="headerTitle">SIST Class4</div>
     </div>
     
     <div id="container">
     <%
     //scriptlet은 _jspService method내에 코드가 생성된다.
           int i=3;   //지역변수  : 자동초기화가 되지  않는다.(초기화 하지 않으면 Error)
           //에러의 줄이 일치하지 않으면 자바 파일을 열어 확인해  고쳐준다.
     %>
     <%= i %>
     <%   for(int j=1; j<7; j++){    %>
     <h<%= j %>>오늘은 불금입니다.</h<%= j %>>
     <%  }//end for  %>
     <%
           String[]  names={"노진경","김정윤","박영민","김희철","박소영","이지수"};
     %>
     <table border="1">
     <tr>
           <th width="100">이름</th>
     </tr>
     <%for(int j=0; j<names.length; j++){ %>
     <tr>
           <td><%=names[j] %></td>
     </tr>
     <%}//end for %>
     </table>   
     <!-- 1~100까지 합만 출력 -->
     <%
     int total=0;
     for(int cnt=1; cnt<=100; cnt++ ){
           total=total+cnt;
     }//end for
     %>
     <div>
     1에서 100까지의 합은 <%=total%>입니다.
     </div>
     
     <div>
     <!-- 구구단 3단 출력 -->
     <table border="1">
     <tr>
           <th>구구단 3단</th>
     </tr>
     <% for(int j=1; j<10; j++){ %>
     <tr>
           <td>3*<%=j %>=<%=3*j %></td>
     </tr>
     <%}//end for %>
     </table>
     <table border="1">
     <tr>
           <th colspan="9">구구단 3단</th>
     </tr>
     <tr>
     <% for(int j=1; j<10; j++){ %>
           <td>3*<%=j %>=<%=3*j %></td>
     <%}//end for %>
     </tr>
     </table>
     
     <!-- 2~9구구단 클릭/호버 -->     
     <table border="1">
     <tr>
           <th colspan="9">구구단</th>
     </tr>
     <% for(int j=1; j<10; j++){ %>
     <tr>
           <%for(int z=2; z<10; z++){ %>
           <td id="gugu" value=<%=z*j %>><%=z %>*<%=j %></td>
           <%-- <%z*j %> --%>
           <%}//end for %>
     </tr>
     <%}//end for %>
     </table>
     </div>
     
     <!-- 강사님 부분 -->
     <!-- 구구단 출력 전체-->
   <div>
   <table border="1">
   <% for(int k=1; k<10; k++) {%>
   <tr>
   <% for(int l=2; l<10; l++) {%>
      <%-- <td width=40; align="center" id="dan"  onclick="alert('<%=l*m%>')">  --%>
      <td width=40; align="center" class="t">
      <%= k %> * <%= l %>
      <input type="hidden" name="sum" value="<%=k*l%>">
      </td>
   <% }//end for %>
   </tr>
   <% }//end for %>
   </table>
   </div>
     
     <!-- 년-월-일 요일 시:분 을 서버의 시간으로 얻어와서 문자열로  처리해주세요. 버튼을 클릭하면 해당일자가 3총동안 서서히 사라지도록  만들어 주세요. -->
     <%
     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd EEEE  HH:mm:ss");
     String date =sdf.format(new Date());
     %>
     <div><!-- sss:asp+jsp+,,, -->
           서버시간 : <span id="s_time"><%=date %></span>
           접속자시간 : <span id="c_time"></span>
           <input type="button" id="btn" class="btn"/>     
           <!-- date는 클라이언트의 시간으로 되어있어 서버의  시간으로 설정해야 한다. -->
     </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"%>
<!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>
     
     <div id="footer">
           <div id="footerTitle">copyright&copy; all right  reserved. class 4.</div>
     </div>
</div>
</body>
</html>





 

반응형

'국비지원학원 > 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
95일차-JSP_내장 객체  (0) 2019.03.31
94일차-JSP tag's  (0) 2019.03.27