JSP
JAVA Servlet Page
자바를 통해 웹페이지를 만들기 위해 필요한 기술
구체적으로, 클라이언트가 어떤 요청을 했을 때 그 결과를 다시 전송하는 역할
페이지-페이지간 통신 가능
페이지-서버도 통신 가능
페이지=서버 이렇게 보는듯
jsp는 동적활용하기 위해 자바를 씀 (html을 동적활용하기 위해 자바스크립트를 썼듯)
web
요청(request, 클라이언트가 요청을 하고)- 응답(response, 서버에서 응답을 하는) (이 둘은 객체)
클라이언트(client) - 서버(server)
웹은 이렇게 4가지로 구성되어있다
TOMCAT
html을 통해서 자바로 구현가능하지만 너무 복잡함, 후에 할거임
웹서버의 역할도 하면서 jsp를 java코드로 바꿔주는게있음 = TOMCAT
WAS(web application server와스)라고 부름 톰캣을
근데 웹서버 없이 톰캣으로만 쓰진 않음, 쓰긴 씀
-> 클라이언트 - 톰캣
만 먼저 해볼거임
local : 8080에서 local을 지우고 ip 주소를 넣어도 제대로 작동함(ip주소는 cmd에서 찾을 수 있음)
ip주소 : 집주소 특정한 컴으로 가기위한 주소(ex 서울특별시 금천구 가산동 123-34566)
도메인 : 가산동 아파트 처럼 사람이 기억하기 쉬운라고 만든 이름 (ex 네이버)
8080은 포트번호고 방 번호라고 생각하면돼
web.xml에서 welcome file list(웰컴파일리스트)에 index2라는게 없어서 파일 이름을 index2로 바꾸면 404가 뜨는거임, index2같은거 없어!!!! 라고 하는거
스크립트 언어
: 컴파일없이 인터프리터로 즉시 실행될 수 있는 언어
컴파일이 없다는건 목적 파일이 없다는 것,
PHP, ASP, JSP, Java Script 등
php나asp는 웬만한건 함수로 제공이 됨
jsp는 자바문법 / 우리가 만들어서 써야함
p = page
jsp쓸 때는 <% %> 태그 달고 써야함 이런걸 scriptlet 이라고 함
내장객체
request와 rsponse 2개가 너무 자주써서 객체화도 안하고 자체적으로 객체화해서 저장시켰음
사용자는 객체화하지 않아도돼
request객체
request객체는 client로부터 온 모든 정보를 다루고 있다-
여기서 port와 service name은 바꿀 수 있음 service name은 지워도 돼
scriptlet
jsp에서는 scriptlet을 사용하여 JAVA CODE 사용 가능하다 <% %>
page 속성 정의하는 영역 <%@ %>
변수나 메서드 선언하는 영역 <%! %>
변수나 메서드 반환 결과를 출력하는 영역 <%= %>
<body>
<ul>
<% // java 로직 영역만을 지정해줘야함
for(int i=0;i<10;i++){
%>
<!--<li>i</li> 얘는 html임, 그래서 이렇게 하면 서버에 i만 찍힘(자바에서 온줄 몰라, 자바의 값을 html에
찍고 싶을 때 아래처럼 코딩 -->
<li><%=i%></li>
<%
}
%>
</ul>
</body>
순수jsp 이런식으로 힘들게 만들었었음, 지금은 거의 존재하지 않음
주석
<%-- --%>
단축키 : ctrl + shift + /
<%! // 변수나 메서드를 (값 넣지 않고) 선언만해놓은거니까 앞에 느낌표 써주기
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE); //대문자인거 보니까 상수인거임
int sec = c.get(Calendar.SECOND);
//원본에 직접 접근중 (static에 있는거)
%>
form action
특정 서버로 값을 내보내는 tag
<form action="usejs.jsp" method="get" >
클라이언트가 보낸걸 받는 것
request.getParameter("userName")
request.getParameterValues("hobby")
<%@ 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>
<!-- 뭔가를 보냈을때 자바스크립트로 적용하는 것을 배워볼 것임 -->
<h1>클라이언트에서 보낸 내용</h1>
<p>이름 : <%= request.getParameter("userName") %></p> <!-- 내장 객체여서 바로 부를 수 있음 -->
<p>성별 : <%= request.getParameter("gender") %></p>
<p>취미 :
<%
String[]hobby = request.getParameterValues("hobby");
for(int i=0;i<hobby.length;i++){
%>
<!--한 이름으로 여러 값이 오니까 배열로 불러
근데 자바문이라서 for문으로 하나씩 빼줘야함...-->
<%=
hobby[i] //자바값을 '출력'해주기 위해 <%= 라고 해줌 <%이 아니라
%>
<%
}
%>
</p>
<hr/>
<h1>그 밖의 내용</h1>
<p>전송 방식 : <%= request.getMethod() %></p>
<p>IP 주소(IpV4가 아니라 IpV6임) : <%= request.getRemoteAddr() %></p>
<p>요청쿼리 : <%= request.getQueryString() %></p>
<p>요청 URL : <%= request.getRequestURL() %></p> <!-- URL:주소 -->
<p>요청 URI : <%= request.getRequestURI() %></p> <!-- URI:인터페이스, 위치를 설명ㅗ -->
</body>
</html>