일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 중학수학
- 디버깅
- 자바 실습
- 컴퓨터비전
- JSP
- c언어
- 컴퓨터구조
- html/css
- JDBC
- 데이터분석
- 자바스크립트
- SQL
- 딥러닝
- 혼공머신
- 데이터베이스
- 순환신경망
- 개발일기
- 중학1-1
- 오블완
- 자바스크립트심화
- rnn
- 파이썬
- 정보처리기사필기
- 머신러닝
- CSS
- 상속
- 연습문제
- JSP/Servlet
- 정보처리기사실기
- 자바
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
[Spring반] 중간시험 25 - Web 이론 시험 및 문제 풀이 5 : 문제 11~12번 <서블릿 파일 작성 및 실행> 본문
[Spring반] 중간시험 25 - Web 이론 시험 및 문제 풀이 5 : 문제 11~12번 <서블릿 파일 작성 및 실행>
huenuri 2024. 12. 10. 16:09조금 전에 URL 매핑에 관련한 무척 어려운 문제를 해결해 보았다. 이번에는 웹 프로그래밍에 관한 이론 문제를 이어서 풀어보겠다.
Web 이론 시험 다섯 번째
문제 12번
웹 프로그래밍을 하기 위해 WAS로 톰캣(Tomcat)을 사용했을 때, 사용할 웹 포트번호를 변경하거나 URL인코딩 방식을 바꿀 때에 수정해야 하는 파일명은 무엇인가?
톰캣(Tomcat)에서 웹 포트번호를 변경하거나 URL 인코딩 방식을 바꾸는 설정은 각각 다른 설정 파일에서 이루어집니다. 아래는 이를 수정해야 하는 파일 이름과 위치에 대한 설명이다.
1. 웹 포트번호를 변경하는 파일
- 파일명: server.xml
- 파일 위치: TOMCAT_HOME/conf/server.xml
수정 방법
- server.xml 파일을 열고 <Connector> 태그를 찾는다.
- 기본적으로 톰캣의 포트번호는 8080으로 설정되어 있다.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3. port="8080" 부분을 원하는 포트 번호로 변경한다.
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2. URL 인코딩 방식을 변경하는 파일
- 파일명 : web.xml
- 파일 위치 : TOMCAT_HOME/conf/web.xml
수정 방법
- web.xml 파일을 열고, 인코딩 필터를 추가한다.
- UTF-8 인코딩 설정 예제
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3. 모든 요청과 응답의 문자 인코딩 방식이 UTF-8로 설정된다.
요약
- 포트번호 변경
- 설정 파일 : server.xml
- 경로 : TOMCAT_HOME/conf/server.xml
- <Connector> 태그의 port 속성 값을 변경
- URL 인코딩 방식 변경
- 설정 파일 : web.xml
- 경로 : TOMCAT_HOME/conf/web.xml
- 인코딩 필터를 추가하여 문자 인코딩 방식 지정
톰캣 재시작 후 변경 사항이 적용된다.
문제 12번
request.getParameter() 와 request.getParameterValues()의 차이점에 대해서 서술하시오.
request.getParameter()랑 request.getParameterValues()는 둘 다 클라이언트가 보낸 요청 데이터에서 파라미터 값을 가져오는 데 쓰이는데, 가져오는 값의 형식에 차이가 있다.
1. request.getParameter()
- 설명
- 특정 단일 값을 가져올 때 사용
- 폼 필드나 URL 쿼리 파라미터의 하나의 값만 반환
- 예를 들어, 단일 선택 박스나 일반 텍스트 입력 값에서 값을 가져올 때 유용
- 반환 값
- 값이 존재하면 문자열(String)로 반환
- 값이 없으면 null 반환
- 예제
String username = request.getParameter("username");
System.out.println(username);
- 클라이언트 요청 : http://example.com?username=John
- 출력 결과 : John
2. request.getParameterValues()
- 설명
- 특정 파라미터에 대한 여러 개의 값을 가져올 때 사용
- 주로 체크박스, 멀티 셀렉트 박스 등에서 여러 값을 선택한 경우
- 반환 값
- 값이 존재하면 문자열 배열(String[])로 반환
- 값이 없으면 null 반환
- 예제
String[] hobbies = request.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
}
- 클라이언트 요청 : http://example.com?hobby=reading&hobby=traveling&hobby=gaming
- 출력 결과
reading
traveling
gaming
차이점 요약
구분 | getParameter() | getParameterValues() |
용도 | 단일 값 가져오기 | 여러 값 가져오기 |
반환 데이터 타입 | 문자열 (String) | 문자열 배열 (String[]) |
사용 예 | 텍스트 필드, 라디오 버튼 | 체크박스, 멀티셀렉트 박스 |
값이 없을 때 반환값 | null | null |
정리
- 단일 값 가져올 땐 getParameter()
- 여러 값 가져올 땐 getParameterValues()
실습 프로젝트 만들기
HTML 폼과 서버 코드(Java Servlet)를 결합하여 완성한 예제이다. 폼 데이터를 서버에서 처리하고 출력하는 코드이다.
1. HTML 폼
사용자가 입력한 데이터를 서버로 전송하는 폼
2. Java Servlet (서버 코드)
서버에서 폼 데이터를 처리하고 결과를 출력하는 서블릿
우클릭을 해도 서블릿 파일이 보이지 않으면 Other를 클릭해 이처럼 Web 파일에서 찾으면 된다.
Java Servlet 코드는 주로 서블릿 클래스의 이름과 파일 이름을 일치시키는 게 일반적이다. 예를 들어, 클래스 이름이 HobbyServlet이면 파일 이름은 HobbyServlet.java로 작성한다.
서블릿 클래스 이름 작성 규칙
- CamelCase 사용
- 클래스 이름은 항상 대문자로 시작하고, 단어를 결합할 때는 CamelCase 방식으로 작성
- 예: HobbyServlet, UserLoginServlet, ProductSearchServlet
- Servlet 접미사 사용 (권장)
- 서블릿임을 명확히 하기 위해 이름 끝에 Servlet을 붙이는 것이 일반적
- 예: HobbyServlet, LoginServlet
- 역할에 맞는 이름
- 서블릿의 기능을 반영한 이름을 사용
- 예: 사용자 로그인 처리 서블릿 → LoginServlet
- 예: 게시글 생성 서블릿 → PostCreateServlet
파일 이름 및 위치
- 파일 이름: HobbyServlet.java
- 위치
프로젝트/
├── src/
│ └── com.example.servlet/
│ └── HobbyServlet.java
├── WebContent/
│ ├── index.html
│ └── WEB-INF/
│ └── web.xml
URL 매핑
서블릿 클래스의 URL 매핑은 @WebServlet 애너테이션이나 web.xml에서 정의할 수 있다.
- 애너테이션 방식
@WebServlet("/submit")
- web.xml 방식
<servlet>
<servlet-name>HobbyServlet</servlet-name>
<servlet-class>com.example.servlet.HobbyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HobbyServlet</servlet-name>
<url-pattern>/submit</url-pattern>
</servlet-mapping>
서블릿 파일과 JSP 파일은 역할과 사용 목적이 다르다. 서블릿은 Java 클래스로 작성된 서버 측 코드를 실행하기 위한 것이고, JSP는 HTML과 Java 코드를 섞어서 웹 페이지를 동적으로 생성하기 위해 사용된다. 서블릿은 Java 클래스로 작성해야 하고, JSP는 .jsp 확장자를 가진 파일로 작성한다.
서블릿과 JSP의 차이
구분 | 서블릿 | JSP |
파일 형태 | .java 파일 (Java 클래스) | .jsp 파일 (HTML + Java 코드) |
용도 | 서버 로직(데이터 처리, 비즈니스 로직) 구현 | HTML 뷰를 생성하고 동적 콘텐츠를 표현 |
컴파일 | Java 컴파일러를 통해 수동 컴파일 | 서버가 요청 시 자동으로 Java 코드로 변환 |
가독성 | HTML 출력 코드가 많으면 복잡해짐 | HTML 중심으로 작성되어 가독성이 좋음 |
추천 사용법
- 서블릿 : 데이터 처리, 요청과 응답 제어, 비즈니스 로직에 사용
- JSP : 사용자 인터페이스(UI)와 HTML을 동적으로 생성하는 데 사용
- 통합 사용
- 서블릿에서 데이터를 처리한 뒤 JSP로 전달하여 사용자에게 결과를 보여주는 방식이 일반적
- 예: 서블릿에서 요청을 처리한 후 RequestDispatcher를 사용해 JSP로 포워딩
request.setAttribute("username", username);
request.getRequestDispatcher("result.jsp").forward(request, response);
서블릿 파일 작성법
1. Java Package
- 의미 : 서블릿 클래스가 속할 패키지 이름
- 추천 값 : 패키지 이름은 일반적으로 도메인 이름을 역순으로 작성하거나 프로젝트 구조에 맞게 작성
- 예: com.example.webtest, com.myapp.servlets
- 빈 값으로 두면 안 됨. 반드시 패키지 이름을 작성해야 한다.
예제
- com.example.web
- com.myapp.servlets
이렇게 점을 찍으면 파일이 하나씩 생기며 이러한 구조로 생성된다.
2. Class Name
- 의미 : 생성할 서블릿 클래스의 이름
- 규칙
- 대문자로 시작하고 CamelCase 방식으로 작성
- 클래스 이름에 Servlet을 접미사로 붙이는 것이 일반적
- 예:
- HelloWorldServlet
- HobbyServlet
3. Superclass
- 기본값으로 javax.servlet.http.HttpServlet이 설정돼야 한다.
- 특별한 경우가 아니라면 기본값을 그대로 유지하면 된다.
서블릿 파일을 다음과 같이 만들었다.
그리고 서블릿을 실행한다.
중간에 오류가 엄청 많이 떴으나 결국 해결하고 파일이 실행되었다.
학습을 마치고
문제를 풀며 서블릿과 HTML 파일을 웹 프로젝트로 만들어보았다. 코드를 실행하는데 정말 많은 오류가 떠서 힘들었지만 그래도 마침내 해결했다. 오늘 웹 문제를 빨리 풀고 다른 과목을 공부하려고 했는데 과연 가능할지 모르겠다.
서블릿에 대해서도 그동안 많은 공부를 했지만 실제로 프로젝트를 만들어보니 내 것으로 아직 체화되지 못했음을 느꼈다. 그러나 문제를 풀며 개념이 실제화됨을 경험했다.