서버는 크게 어플리케이션 서버와 웹 서버로 나뉘어진다.
어플리케이션 서버는 톰캣과 같이 WAS의 역할을 하는 것이고, 웹 서버는 프로젝트의 경로를 갖고 있는 서버이다.
보통은 아파치 톰캣이 웹 서버의 일부 기능을 갖고 있기 때문에 별도의 웹 서버를 이용하지 않아도 된다.
단, JAVA만을 이용할 경우이다. JSP가 아닌, PHP 같은 언어로 웹 개발을 할 경우에는 웹 서버의 기능을 할 수 없다.
JAVA의 웹 서버를 한 번 이용해보자.
1. Web.xml에 어느 서블릿을 사용할 것인지 알려주기.
톰캣에 요청이 들어왔을 때, 어느 서블릿을 사용할 것인지 알려줘야한다.
/WEB-INF/web.xml 을 생성하여 다음을 추가해주자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>mean servlet</servlet-name> <servlet-class>MeanServlet</servlet-class> </servlet> <!-- 이때는 요청이 오면 요청이 오고 나서 메모리에 로드시킨다 (그래서 맨 처음 요청시에는 조금 느릴 수 있음) <load-on-startup>1</load-on-startup>을 쓴다면 톰캣이 로드되자마다 메모리에 모든 서블릿을 올리지만 이는 당장 필요하지 않은 것들도 메모리에 올리기 때문에 수행성능이 좋지 않을 수 있다. --> <!-- 어떤 url요청이 오면 이 요청은 어플리케이션 서버에게 맡겨라 하는 지시서를 만들기 위한 공간 --> <servlet-mapping> <servlet-name>mean servlet</servlet-name> <url-pattern>/mean</url-pattern> <!-- /mean이라는 url요청이 오면 예외적으로 해당하는 하나의 함수만 실행시켜라/ url당 서비스함수 1개 --> </servlet-mapping> </web-app> | cs |
Servlet-Mapping은 URL 요청이 들어왔을 때, 연결해줄 Servlet을 명시해주는 것이고,
Servlet은 Java Class로 연결을 해주는 역할을 해준다.
요청을 처리할 MeanServlet이란 클래스 파일에는 HttpServlet을 상속 받아 Request객체와 Response 객체를 이용한다.
import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class MeanServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");String d = (String) request.getParameter("data");System.out.println(d);String[] strD = d.split(",");double[] data = new double[strD.length];for(int i=0;i<strD.length;i++){data[i] = Double.valueOf(strD[i]);System.out.println(data[i]);}//double[] data=dourequest.getAttribute("data");Statistics stat = new Statistics(data);double result = stat.mean();System.out.println(result);response.getWriter().write(String.valueOf(result));}}이 방법 외에도 어노테이션을 이용하여 서블릿 매핑을 해줄 수도 있다. ex) @WebServlet("/")
'공부 > Java' 카테고리의 다른 글
Concat 과 + 연산의 차이 (0) | 2017.10.15 |
---|---|
리스트 비교를 위한 Comparator 사용해보기 (0) | 2017.10.07 |
웹 소켓(Web Socket) 서버로 채팅하기 (0) | 2017.05.08 |