Web
apache tomcat
낮은 버젼부터 다운로드 tomcat 7은 아카이브 에서 zip 파일로 다운 받기
- jdk경로가 JAVA_HOME 환경 변수로 저장되어있어야한다.
- 다운 받은 tomcat 의 경로가 CATALINA_HOME 환경변수로 저장되어있어야한다.
- 시스템 path 변수에 %JAVA_HOME%\bin 추가
- tomcat의 bin 폴더에서 cmd창 열어서 startup.bat 파일을 실행하면 서버가 열림(cmd 닫으면 닫힘)
- 테스트로 localhost:8080으로 접속하면 톰캣 기본 화면 등장
apache-tomcat-7.0.109 -> webapps -> ROOT 폴더에 파일을 넣어 두고 읽을 파일의 경로를 입력하면 웹에 해당 파일을 보여줌
ex) localhost:8080/lec1/test.txt
ROOT 바깥, 즉 같은 선상의 경로들에 있는 파일을 읽을 수 있는데 ROOT안의 파일보다 우선순위가 높다.
파일을 지정하는게 아닌 폴더만 불러들일 경우 index.html, index.jsp 파일을 읽는다.
HTML
여러번 띄울때는 이스케이프 문자를 사용해서 띄워쓰기를 해야한다. ( 또는 )
자주쓰는 것들은 문자열 표현으로 되어있고 사실 쓰는 것 만 쓰기때문에 필요한 이스케이프문자를 찾아서 이용하면 된다.
&, <, >, 를 직접 작성하고 싶을 때 이스케이프 문자로 표현해야한다. & < >
Eclipse Web 개발 세팅
perspective - Java EE 로 변경

서버 생성

웹 프로젝트 생성

웹서버는 I/O 통해서 일방적으로 웹을 읽어주는 역할을 하되 특정 상황에서 즉 기능이 필요한 경우에는 어플리케이션 서버로 전달하여
기능을 수행하고 다시 웹서버에선 그 결과를 읽어 들여 와서 웹브라우저에 뿌려줌
웹서버에 동작을 시킬 수 있는 기능 모듈을 올려서 기능을 추가하여 실행
tomcat에 apache 웹서버의 최소한 기능의 일부를 이식시켜버림 그래서 html같은 웹서버의 기능을 이용할 수 있게 되는 것
최종적으로 웹서버의 기능을 더 사용하기 위해 nginx를 끼워 넣을 예정
자바의 웹 프로젝트는 소스코드를 만들고 그 클래스파일을 만들기 때문에 최초 실행은 느릴지 몰라도 프로젝트 크기가 크면 클수록 자바로 만드는 프로젝트가 유리하다.
웹 개발 표준
- Servlet : 실행 코드 방식의 특징 (컴파일된 실행파일만 보내면되므로 보안에 훨씬 유리)
- JSP : 스크립트 코드 방식의 특징 (코드가 소스파일이자 실행파일)
웹 컨테이너 (WAS 컨테이너)
웹 서버의 컴포넌트 중 하나로 자바 서블릿과 상호작용한다.
웹 컨테이너는 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장한다
아파치 톰캣이 웹 컨테이너의 일종이다.
JSP
디렉티브 <%@ %>
page, taglib, include
<%@ page language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="java.util.Date"%>
스크립틀릿 <% %>
자바 코드와 똑같이 위에서 부터 읽어 내려간다. main method 와 같다.
<%
// 자바코드
int su1 = 1234;
out.println(su1);
%>
표현식 <%= %>
<%=su1 %>
선언부 <%! %>
<%!
class Inner{} // 이너클래스
int su2 = 4321; // 전역변수
public void func(){
System.out.println("선언부");
}
%>
<%func(); %>
이클립스 에서 생성되는 jsp 파일 위치
나중에 파일 업로드했는데 업로드가 제대로 안되는 경우 해당 위치를 확인해봐야할 경우가 생길 수 있다.
E:\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\day30\org\apache\jsp
Request 기본 내장 객체
웹 브라우저가 웹서버에 전송한 요청 관련 정보 제공
- 클라이언트(웹 브라우저)와 관련된 정보 읽기
- 서버와 관련된 정보 읽기
- 클라이언트가 전송한 파라미터, 헤더, 쿠키 읽기
- 속성 처리 가능
<p><%=request.getRemoteAddr() %></p>
<p><%=request.getMethod() %></p>
<p><%=request.getRequestURL() %></p>
<p><%=request.getContextPath() %></p>
<p>id : <%=request.getParameter("id") %></p>
Response 기본 내장 객체
<h1>에러페이지</h1>
<% response.setStatus(404); %>
데이터 전달을 위한 input 태그의 다양한 type
<body>
<h1>go ex06</h1>
<form action="ex06.jsp">
id : <input type="text" name="id" value="default" readonly="readonly"><br>
name : <input type="text" name="name" placeholder="이름"><br>
pwd: <input type="password" name="pwd"><br>
item1<input type="radio" name="ra" value="ra1" checked="checked">
item2<input type="radio" name="ra" value="ra2">
item3<input type="radio" name="ra" value="ra3">
<br>
item1<input type="checkbox" name="cb" value="cb1" checked="checked">
item2<input type="checkbox" name="cb" value="cb2">
item3<input type="checkbox" name="cb" value="cb3">
<br>
list
<select name=sel size="3" multiple="multiple">
<option value="sel0" selected="selected">opt0</option>
<option value="sel1">opt1</option>
<option value="sel2">opt2</option>
</select>
<br>
<textarea rows="10" cols="10" name="ta"></textarea>
<br>
<input type="submit" value="이동">
</form>
</body>
form태그를 통해 전달한 데이터를 request 객체로 받기
<body>
<%
Enumeration en = request.getParameterNames();
while(en.hasMoreElements()){
System.out.println("Parameter " + en.nextElement()); // 넘어오는 파라미터의 목록
}
Enumeration en2 = request.getHeaderNames();
while(en2.hasMoreElements()){
System.out.println("Header " + en2.nextElement()); // 넘어오는 헤더의 목록
}
%>
<h1>사용자 요청 파라미터</h1>
<p>id : <%=request.getParameter("id") %></p>
<p>name : <%=request.getParameter("name") %></p>
<p>pwd : <%=request.getParameter("pwd") %></p>
<p>ra : <%=request.getParameter("ra") %></p>
<p>cb : <%
String[] vals = request.getParameterValues("cb");
for(String str : vals){
out.println(str);
}
%></p>
<p>sel : <%=request.getParameter("sel") %>
<p>ta : <%=request.getParameter("ta") %></p>
</body>
'회고록(TIL&WIL)' 카테고리의 다른 글
TIL 2023.01.18 Java Web3 (pagination search) (0) | 2023.01.27 |
---|---|
TIL 2023.01.17 Java Web 2 (0) | 2023.01.18 |
TIL 2023.01.12 mongoDB, JDBC - mongoDB (0) | 2023.01.16 |
TIL 2023.01.10 JDBC - MySQL (0) | 2023.01.16 |
TIL 2023.01.09 ~ 2023.01.11 MySQL (0) | 2023.01.16 |