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