TIL 25 - JSP, Servlet

eyan31·2022년 7월 21일
0

TIL

목록 보기
25/25
post-thumbnail

TIL | 07.21의 기록
어려워ㅓㅓㅓㅓㅓㅓㅓㅓ

JSTL (JSP Standard Tag Library)

  • 사용법 : JSTL은 라이브러리이기 때문에 지시부에 추가해줘야 한다.

    • <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    • core 태그 라이브러리를 사용하는 선언문이다. (prefix="c")

  • set, remove 태그 : 변수의 선언 및 삭제

    • //변수 선언하기
      
      <%
       int a = 123;
      %>
      
      <c:set var="num" value="<%=a%>"/>
      <c:set var="no" value="${456}"/>
      <c:set var="name">홍길동</c:set>
      
      //변수 사용하기
      num = ${num}
      no = ${no}
      name = ${name}
      
      //데이터 request하기 : param.변수
      <c:set var="name" value="${param.name}"/>
    • //변수 삭제하기
      
      <c:remove var="no"/>
  • if 태그 : 조건문 사용하기

    • <c:set var="x" value="${10}"/>
      <c:set var="y" value="${5}"/>
      
      <c:if test="${x>y}">
      	조건문이 참일때 실행된다....
      </c:if>
  • forEach 태그 : 반복문 사용하기

    • //숫자를 이용한 반복문
      //					시작      종료     증가(생략시 1씩 증가)
      <c:forEach var="n" begin="2" end="9" step="2">
      	%{n}
      </c:forEach>
      
      //배열을 이용한 반복문
      <%
      	int arr[] = {23,43,5,65}
      %>
      <c:forEach var="date" items="<%=arr%>">
      	[${data}]
      </c:forEach>
      
      //컬렉션 : ArrayList를 이용한 반복문
      <%
      	List<String> lst = new ArrayList<String>();
      	lst.add("홍길동");
      	lst.add("유재석");
      	lst.add("김연아");
      %>
      <c:forEach var="name" items="<%=lst%>">
      	[${name}]
      </c:forEach>
      
      //Map을 이용한 반복문
      <%
      	HashMap<String,String> hm = new HashMap<String,String>();
      	hm.put("name", "홍길동");
      	hm.put("addr", "서울시 영등포구");
      	hm.put("tel", "010-2334-2543");
      %>
      <c:forEach var="mapData" items="<%=hm%>">
      	key : ${mapData.key}, value : ${mapData.value}
      </c:forEach>
  • forTokens 태그 : 문자열을 특정문자로 조각내기

    • <c:forTokens var="t" items="빨강색,파랑색,,노랑색.보라색.오렌지색-갈색" delims=",.-">
      	[${t}]
      </c:forTokens>
  • url 태그 : url주소를 가지는 태그

    • <c:url var="home" value="/index.jsp"/>
      <c:url var="login" value="/jsp_response/login.jsp">
      	//데이터 보내기
      	<c:param name="userid" value="gildong"></c:param>
      </c:url>	
      
      //url 사용하기
      <a href="${home}"></a>
      <a href="${login}">로그인</a>
  • choose 태그 : switch문, if문과 비슷하게 사용

    • <c:set var="name" value="${param.name}"/>
      <c:set var="age" value="${param.age}"/>
      
      <c:choose>
      	<c:when test="${name=='hong'}">
      		당신의 이름은 ${name}입니다.
      	</c:when>
      	<c:when test="%{age>20}">
      		당신은 20세 이상입니다.
      	</c:when>
      	<c:otherwise>
      		당신의 이름은 hong이 아니고 나이가 20세 이상이 아닙니다.
      	</c:otherwise>
      </c:choose>
  • redirect 태그 : 자동으로 페이지 이동하기

    • html의 Refresh, js의 location.href, jsp의 response.sendRedirect와 같음

    • <c:redirect url="/login.jsp">
      	<c:param name="username">홍길동</c:param> //데이터보내기 가능
      </c:redirect>

    Servlet이란?

  • 서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로체계적으로 다룰 수 있게 해준다. 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹브라우저에 결과를 전송한다. (참고 : https://velog.io/@falling_star3/Tomcat-%EC%84%9C%EB%B8%94%EB%A6%BFServlet%EC%9D%B4%EB%9E%80)

  • 사용방법

    • tomcat의 web.xml을 webapp/WEB_INF에 붙여넣기
    • web.xml을 열어 <servlet>, <sevlet-mapping> 태그를 추가한다.
    <servlet>
    	<servlet-name>home</servlet-name>
    	<servlet-class>패키지명.서블릿파일명</servlet-class>
    	<init-param>
    		<param-name>userid</param-name>
    		<param-value>gildong</param-value>
    	</init-param>
    </servlet>
    <servlet-mapping>
    	<servlet-name>home</servlet-name>
    	<url-pattern>/main.do</url-pattern>
    </servlet-mapping>
    • main.do 페이지에 접속하면 home으로 실행이 옮겨간다.

    • //서블릿 파일코드
      
      public class ServletTest extends HttpServlet {
      	private static final long serialVersionUID = 1L;
             
          public ServletTest() {
              super();
          }
      
      	protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
      		System.out.println("doGet()메소드 실행됨");
      		
      		//web.xml의 값을 Servlet클래스로 가져오기
      		
      		String userid = getInitParameter("userid");
      		System.out.println("userid->"+userid);
      		
      		//client컴퓨터에 html 데이터 보내기
      		res.setContentType("text/html; charset=UTF-8");
      		
      		PrintWriter pw = res.getWriter();
      		
      		pw.print("<html>");
      		pw.print("<head>");
      		pw.print("<title>로그인 폼</title></head><body>");
      		pw.print("<h1>로그인</h1><form method='post' action=''/>");
      		pw.print("아이디 : <input type='text' name='userid'/><br>");
      		pw.print("비밀번호 : <input type='password' name='userpwd'/><br>");
      		pw.print("<input type='submit' value='Login'/></form></body></html>");
      		pw.close();
      	}
      
      	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		System.out.println("doPost()메소드 실행됨...");
      	}
      
      }
    • getInitParameter() : 데이터 가져오기

    • response.setContentType() : 보낼 데이터 정보

    • response.getWriter() : 데이터 보낼(작성) 기능이 있는 메소드?

profile
터벅터벅 개발자 지망생의 하루

0개의 댓글