JSP
<%@ %> 지시자 : page / include
<% %> 자바코드 영역
<%= %> 간단한 연산 결과 및 변수 값 바로 출력
<%! %> 변수 / 메서드 선언
Servlet : extends HttpServlet
doGet() / doPost() : 매개변수
HttpServletRequest / HttpServletResponse
doGet() : 전송방식 get 방식일 경우 자동 호출
form 태그 method="get" 또는 설정하지 않았을 경우,
웹 주소줄을 통해 http://~~~/~~~/~~.jsp?파라미터=값
a 태그의 href 속성을 이용하여 링크를 사용할 경우
doPost() : 전송방식 post 방식일 경우 자동 호출
form 태그 method="post" => 웹 주소줄에 파라미터와 값이 보이지 않는다..
Servlet 요청 시, 전달된 파라미터 값을 추출 : 내장객체 request.getParameter("파라미터");
JSP에서 요청 시, 전달된 파라미터 값을 추출 : 내장객체 request.getParameter("파라미터");
HTML 태그에서 입력된 모든 값은 문자열로 전달된다!!!!
HTML => JSP : form 태그를 사용 / 웹 주소줄 / a 태그의 href 링크
: 문자열로 전송!!!!!
JSP <=> JSP : 객체를 전송 가능
JSP <=> Servlet : 객체를 전송 가능
=> request 객체(매개변수) 에 객체(데이터)를 저장하여 전송
Servlet 작동 순서에 대하여...
클라이언트가 Servlet 에게 요청 시, 서버(톰캣)에서는 servlet 컨테이너를 생성하고, 요청이 있을 때마다 스레드가 생성
된다!!!!
* 참고 : 서버(SW / HW)는 기본적으로 다수에 대한 대응을 처리할 때 사용...
Servlet 라이프 사이클(생명주기)
1. 최초 요청 시, : Servlet 객체 생성
2. init() 메서드 호출 : 서블릿 구동 직전에 처리해야 할 일들....
3. service() / doGet() , doPost() 호출 :요청 시, 매번
4. destroy() : 맨 마지막에 한번 호출 : 불필요한 자원들 자원 해제( close() )...
HTML 태그와 Servlet (JSP) 간의 데이터 주고 받을 경우,
post 방식은 한글 설정을 아무리 잘 하더라도 깨져서 전달된다...
따라서 한글 데이터를 전달 받는 쪽에서는 인코딩을 재설정 해야 한다...
=> request.setCharacterEncoding("UTF-8");
============================================
Servlet 등록 방법
1. @(어노테이션을 이용) : @WebServlet("/hello")
: 이클립스 마법사를 이용하여 Servlet 클래스를 생성할 때, 설정 가능
: Servlet 클래스 생성 후, @WebServlet("/hello") 를 추가 하여 설정도 가능.
=> hello 변경 가능 (단, 서버구동 중지 상태에서.. 수정)
사용(요청) 방법 : @WebServlet("/hello")
<form action="hello" > ~~~ </form>
예)@WebServlet("/hello")
<form action="heollo" > ~~~ </form> <====== 404
=> http://localhost:9000/프로젝트명/heollo
<form action="/heollo" > ~~~ </form> <====== 404
=> http://localhost:9000/heollo
<form action="/hello" > ~~~ </form> <====== 404
=> http://localhost:9000/hello
<form action="hello" > ~~~ </form> <====== 응답(reponse) 가능 (500 / 505 서블릿 내부 오류 : 컴파일, 실행)
=> http://localhost:9000/프로젝트명/hello
어노테이션의 단점 : 유지보수가 어렵다..
2. web.xml 에 직접 등록하는 방법 : 수시로 변경 가능..
즉, Java 원본 코드를 변경하지 않고.. 유지보수가 용이...
단점 : 매번 개발자가 일일히 등록 해야 하고,
web.xml 문서내에 문제가 발생할 경우, 프로젝트 구동이 안된다!!! (404)
2-1. xml 문서내에는 가급적 한글 주석를 사용하지 않는다!!!!
xml 문서내에 주석(comment) <!-- -->
xml 문서의 첫 줄은 선언부로 시작
<?xml version="1.0" encoding="UTF-8"?>
xmlns 는 xml namespace의 약어..
xml은 기본적으로 태그를 제공하지 않고, 개발자가 태그를 생성하여 작성..
톰캣에서는 web.xml 문서를 위한 xml 태그가 정의되어 있기 때문에
xml 태그를 해석하기 위한 namespace 가 반드시 필요...
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID"
version="3.1"
<display-name>day5_servlet</display-name>
톰캣이 어플리케이션을 구별할 때 사용되는 태그 : 생략 가능...
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
사용자가 프로젝트명으로 요청했을 경우, 기본 페이지를 설정하는 부분
예) www.naver.com => 메인페이지
* AWS : 아마존 웹 서비스
web.xml 문서에 서블릿을 등록할 경우
<servlet></servlet> 와 <servlet-mapping></servlet-mapping> 가 한쌍을 이루어야 한다!!!!!
<servlet>
<servlet-name>서블릿클래스의 별명(id)</servlet-name>
<servlet-class>서블릿 클래스의 풀 네임</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>서블릿클래스의 별명(id)</servlet-name>
<url-pattern>/웹에서 요청할 서블릿 이름</url-pattern>
</servlet-mapping>
서블릿 초기화 파라미터 : ServletConfig
특정 Servlet 이 생성 될 때, 초기에 필요한 데이터들을 설정하는 방법
1. 이클립스 마법사를 이용하여 서블릿 생성시 설정하는 방법
@WebServlet(
urlPatterns = { "/initParam2" },
initParams = {
@WebInitParam(name = "name", value = "홍길동"),
@WebInitParam(name = "phone", value = "01022221111")
})
2. web.xml 문서에 서블릿 등록할 때 설정하는 방법
<servlet>
<servlet-name></servlet-name>
<servlet-name></servlet-class>
<init-param>
<param-name>초기 파라미터 이름</param-name>
<param-value>해당 값</param-value>
</init-param>
<servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
<servlet-mapping>
서블릿 초기화 파라미터 추출하는 방법 : ServletConfig
String 변수 = getInitParameter("초기 파라미터명");
'IT > Web' 카테고리의 다른 글
【web기본】2021 11 01 : JSP & Servlet - Session을 이용한 로그인 / 로그아웃 기능 (0) | 2022.04.13 |
---|---|
【web기본】2021 11 01 am : JSP & Servlet - 데이터 공유 : ServletContext 와 액션 태그(forward/include) (0) | 2022.04.13 |
【web기본】2021 10 28 : jsp & servlet - excel 문서 다루기 까지.. (0) | 2022.04.13 |
【web기본】2021 10 28 : eclipse Encoding 변경 (0) | 2022.03.31 |
【web기본】2021 10 27 : Servlet & JSP (0) | 2022.03.31 |