JSP 1일차 : 기본태그, 내장객체

JSP

  • Java Server Page

  • HTML5 구조 + Java

  • Java언어를 사용 : 맨 위 페이지 디렉티브 부분

  <%@ **page** language=*"java"* contentType=*"text/html; charset=UTF-8"* pageEncoding=*"UTF-8"*%>
  • cf) Survlet : Java 구조 + HTML

  • JSP -> Servlet으로 변환됨 -> 화면에 출력
  • JSP 핵심정리

JSP 태그

  • 주석

    • 일반주석 : 소스보기에서 보임. 주로 코딩에 대한 설명을 쓸 때 사용

      <!-- 주석내용 -->
      
    • JSP주석 : 소스보기에서 안보임. 안에있는 명령들은 실행하지 않음

      <%-- 주석내용 --%>
      
  • 자바영역표시 : Scriptlet

    <% 자바코드 %>
    
  • 자바의 변수, 문자열 출력 : 표현식, 모두 지역변수로 취급됨

    <%= 출력할 변수 또는 문자열 =%> 
    
  • 멤버변수선언 : 선언문

    <!% 변수 또는 메서드 %>
    

예제

  • import 확인하기
  • out 내장객체 이용해 브라우저에 출력하기
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ 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>

    <h2>JSP 공부하기</h2>
    HTML 주석 <!--  안녕!!! 나는 HTML주석 소스코드에서 보이지! -->
    JSP 주석 <%-- 반가워 나는 JSP주석! --%>
    <%
    // 이곳은 자바 영역 입니다.
    System.out.println("printed on console");
    out.println("printed on browser<br>"); //PrintWriter타입. 내장객체~
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm EEE");
    out.println(sdf.format(date) + "<br>");
    %>

  </body>
</html>

표현식 공부하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>표현식에 대한 공부를 해봅시다</title>
  </head>
  <body>

    <%
    //스크립트릿 영역 안의 변수는 지역변수로 등록된다. => 이영역 아랫에서만  변수들을 꺼내   있다.
    String msg = "have a nice day!";
    String color = "magenta";

    %>

    <h1 style="color: <%=color %>;"><%=msg %></h1> <!-- 표현식을 이용하여 자바영역의 변수를 출력하기 -->

    <%= msg2 %><br>
    <%!

  //선언문 : 멤버변수, 멤버메서드로 등록된다. =>  영역  어디서든 꺼내쓸  있다.
  String msg2 = "this is msg2";
    public String getDay(){
      return "getDay method printed";
    }

    %>
    <%=getDay() %>

  </body>
</html>

자바 코드와 HTML코드 번갈아가며 코딩하기 연습

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>자바코드와 HTML코드!</title>
    <style>
      table{
        border: 5px groove grey;
        width: 200px;
      }
      tr, td, th{
        font-size: 20px;
        border: 1px solid olive;
      }
    </style>
  </head>
  <body>

    <%

    String str[] = {"rose", "daisy", "tulip", "sunflower", "sakura"};
    String color[]={"pink","orange","skyblue","purple","grey"};

    %>

    <table>

      <caption><b>배열 출력</b></caption>
      <%
      for(int i = 0 ; i<str.length ; i++ ){
        %><tr>
      <td align="center"> <%=i+1 %></td>
      <td align="center" style="color:<%=color[i]%>"> <%=str[i] %> </td>
      <%
      }
      %>

    </table>

  </body>
</html>

2단부터 9단까지 구구단 출력

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>구구단 출력해보기~</title>

    <style>
      table{
        border: 1px dotted grey;
        width: 500px;
      }
      tr, td, th{
        font-size: 10px;
        border: 1px solid grey;
        text-align: center;
      }
      #title{
        color: skyblue;
      }
      #contents{
        color: lightpink;
      }

    </style>


  </head>
  <body>


    <table>
      <tr>
        <
        for(int i=2 ; i<=9 ; i++){ 
          %><td id="title"> <%=i +" !"%></td><% 
        }
        %>

      </tr>
      <tr>
        <%
        for(int i=2 ; i <= 9 ; i++){
          %><td id="contents"><br><%
        for(int j=1 ; j <=9 ; j++){
          %><%=i + " x " + j + " = " + i*j %><br><%
        }
        %><br></td><%
        }

        %>
      </tr>
    </table>

  </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>
    <style>
      img{
        width:100px;
      }

    </style>

  </head>
  <body>


    <%
    for(int i = 1 ; i <=10 ; i++){
      String imgName = "ani" + (i<10?"0":"") + i + ".gif";
      %><img src="../image/<%=imgName%>"><%
    }
    %>

  </body>
</html>

벡터 출력하기

<%@page import="test.code.DataDTO"%>
<%@page import="java.util.List"%>
<%@page import="test.code.JavaEx6"%>
<%@page import="java.util.Vector"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>벡터에 있는 데이타를 출력해봅시다!</title>

    <style>
      div{
        width:100px;
        height: 100px;
        margin: 10px;
        text-align: center;
        font-size: 15px;
        float:left;
      }
      table{
        border: 1px dotted grey;
        width: 500px;
      }
      tr, td, th{
        font-size: 15px;
        border: 1px solid grey;
        text-align: center;
      }
      th{
        background-color: lightpink;
      }

    </style>
  </head>
  <body>

    <

    Vector<String> list1 = new Vector<String>();

    list1.add("olive");
    list1.add("skyblue");
    list1.add("hotpink");
    list1.add("lightgrey");
    list1.add("coral");
    for(int i = 0 ; i<list1.size() ; i++){
      String color = list1.get(i);
      %><div style="background:<%=color%>;"> >_< </div><%
    }
    %>
    <hr style="clear:both;">
    <h1>Java클래스의 메서드로부터 데이타불러서 출력해보깅~</h1>

    <%
    JavaEx6 jj = new JavaEx6();
    List<DataDTO> list = jj.getDatas();
    %>
    <table>
      <tr>
        <th>이름</th>
        <th>나이</th>
        <th>주소</th>
      </tr>
      <%
      for(int i = 0 ; i < list.size() ; i++){
        %>
      <tr>
        <td><%=list.get(i).getName() %></td>
        <td><%=list.get(i).getAge() %></td>
        <td><%=list.get(i).getAddr() %></td>
      </tr>
      <%
      }
      %>
    </table>
    <%

    %>
    </body>
    </html>


내장객체 Request, Response

  • Request : ServletRequest타입으로, 클라이언트의 http요청을 담고있는 객체
  • Response : ServletResponse타입으로, 요청에 대한 응답
메서드 기능
getParameter 폼태그에서 입력한 값을 읽어온다
getParameterValues 폼태그에서 여러개의 값을 한번에 반환하는 경우(checkbox, 멀티 select)

Ex7_FormTag.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>간단한 폼태그 1</title>
  </head>
  <body>

    <div style="margin:auto;">
      <form action="Ex7_Action.jsp" method="post">
        <table style="500px">
          <tr>
            <th>이름</th>
            <td>
              <input type="text" size="10" name="name" placeholder="name">
            </td>
          </tr>
          <tr>
            <th>비밀번호</th>
            <td>
              <input type="password" size="10" name="password" placeholder="password">
            </td>
          </tr>
          <tr>
            <td colspan="2" align="center">
              <input type="submit" value="서버로 전송">
              <input type="reset" value="초기화">
            </td>
          </tr>
        </table>
      </form>
    </div>

  </body>
</html>

Ex7_Action.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>간단한 폼태그</title>
  </head>
  <body>
    <%
    //한글 인코딩 해주자~ 글자 안깨지게
    request.setCharacterEncoding("UTF-8");
    //폼태그를 읽어오자~~
    String name = request.getParameter("name");
    String pass = request.getParameter("password");

    %>

    <h2>이름 : <%=name %>, 비밀번호: <%=pass %></h2>
    <a href="javascript:history.back()">자료가 남아있는 형태로 이전으로 돌아가기</a><br>
    <a href="javascript:history.go(-1)">go(-1)로 이전으로 돌아가기</a><br>
    <a href="Ex7_FormTag.jsp">자료가 모두 초기화 된 형태로 이전으로 돌아가기</a> 

  </body>
</html>

  • 한번에 여러개의 값을 가져오는 경우(체크박스,셀렉트 복수개)

    FormTag.jsp

<%@ 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>

    <form action="Ex8_Action.jsp">
      <table border="1">
        <tr>
          <th>취미</th>
          <td>
            <input type="checkbox" name="hobby" value="game">game
            &nbsp
            <input type="checkbox" name="hobby" value="cooking">cooking
            &nbsp
            <input type="checkbox" name="hobby" value="travel">travel
            &nbsp
            <input type="checkbox" name="hobby" value="reading">reading
            &nbsp
          </td>
        </tr>
        <tr>
          <th>외국어</th> 
          <td>
            <select style="width:150px" multiple="multiple" size="5" name="lang">
              <option value="kor">kor</option>
              <option value="eng">eng</option>
              <option value="jpn">jpn</option>
              <option value="spn">spn</option>
            </select>
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" value="submit!">
          </td>
        </tr>
      </table>
    </form>

  </body>
</html>

Action.jsp

<%@ 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");
    //hobby
    String hobby[] = request.getParameterValues("hobby");
    String lang[] = request.getParameterValues("lang");
    %>

    <h2>취미: 

      <
      if(hobby ==null){
        %><b style="color:red">취미가 없음.</b><%
      }else{
        for(int i = 0 ; i < hobby.length ; i++){
          %><b style="color:skyblue"><%=hobby[i] + " " %> </b> <%
      }
      }

      %>
    </h2><br>
    <h2>언어: 

      <
      if(lang ==null){
        %><b style="color:red">할줄아는 언어가 없음.</b><%
      }else{
        for(int i = 0 ; i < lang.length ; i++){
          %><b style="color:skyblue"><%=lang[i] + " " %> </b> <%
      }
      }

      %></h2>
  </body>
</html>

  • 날짜, 컬러 등등 받아보기

    FormTag.jsp

<%@ 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>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">

    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>

    <style>
      th{
        text-align:center;
        font-size:15pt;
        color:white;
      }

      tr{
        text-align:center;
      }

    </style>

  </head>
  <body>
    <form action="Ex9_Action.jsp" method="post" class="form-inline">
      <table class="table table-striped">
        <tr>
          <th bgcolor="lightgrey">name</th>
          <td>
            <input type="text" name="name" class="form-control">
          </td>
        </tr>
        <tr>
          <th bgcolor="lightgrey">start</th>
          <td>
            <input type="date" name="startday" class="form-control">
          </td>
        </tr>
        <tr>
          <th bgcolor="lightgrey">end</th>
          <td>
            <input type="date" name="endday" class="form-control">
          </td>
        </tr>
        <tr>
          <th bgcolor="lightgrey">font color</th>
          <td>
            <input type="color" name="fontcolor" class="forn-control" value="red">
          </td>
        </tr>
        <tr>
          <th bgcolor="lightgrey">location</th>
          <td>
            <label class="radio-inline">
              <input type="radio" name="location" class="form-control" checked="checked" value="thailand">thailand
            </label>
            <label class="radio-inline"> 
              <input type="radio" name="location" class="form-control"  value="usa">usa
            </label>
            <label class="radio-inline"> 
              <input type="radio" name="location" class="form-control"  value="france">france
            </label>
            <label class="radio-inline">
              <input type="radio" name="location" class="form-control"  value="japan">japan
            </label>
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" value="submit" class="btn btn-success btn-lg">
            <input type="reset" value="reset" class="btn btn-danger btn-lg">
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

Action.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>My Itinerary</title>
  </head>
  <body>

    <%
    //한글 인코딩 해주자~ 글자 안깨지게
    request.setCharacterEncoding("UTF-8");
    String name = request.getParameter("name");
    String startday = request.getParameter("startday");
    String endday=request.getParameter("endday");
    String fontcolor=request.getParameter("fontcolor");
    String location = request.getParameter("location");

    %>

    <h2>My Itinerary</h2>
    <img src="../image/ani09.gif">
    <br><br>
    <b style="color: <%=fontcolor %>">

	<pre>
	name : <%=name %>
	start : <%=startday %>
	end : <%=endday %>
	location : <%=location %>
	</pre>

    </b>
  </body>
</html>

Categories:

Updated:

Comments