Servlet : 웹 어플리케이션으로서 웹서비스를 제공하기 위한 자바 클래스이다.
HTML파일에서 백엔드로 데이터를 전송 및 HTML에서 보내는 요청을 Servlet에서 받아 줄 수 있다. 즉, Servlet은 MVC패턴에서 Controller의 역할을 한다.
import javax.servlet.http.HttpServlet
Servlet을 사용하기 위해 Class 클래스명 extends HttpServlet
즉, HttpServlet Class의 상속을 받아 클래스를 작성해야한다.
HttpServletRequest
요청 : View단에서 Controller로 요청하기 위한 메소드 View에서 데이터, 정보등을 작성하고, Controller로 보내는 역할
HttpServletResponse
응답 : Controller에서 View페이지에 데이터처리 결과를 반환한다.
@override
doPost(HttpServletRequest, HttpServletResponse)
doGet(HttpServletRequest, HttpServletResponse)
View에서 데이터 전송 method에 따른 데이터 처리 메소드이다.
method='post' : 데이터 입력 정보가 Header에 담기지 않고, body에 담겨 데이터를 전송한다. 때문에, 사용자 입력정보가 Header에 나타나지 않아, 보안유지에 좋다.
하지만 Content-Type을 인식하지 못하기 때문에, request.setCharacterEncoding("UTF-8") 메소드를 사용하여 입력방식을 세팅한다.
method='get' : 데이터 입력 정보가 Header에 담겨 데이터를 전송한다.
데이터들이 Header에 담기기 때문에 데이터가 노출되고, 보안에 미흡한점이 있다.
데이터가 Header에 담기기 때문에 body는 빈상태로 전송되고 Content-Type을 바로 인식하는 장점이 있다.
Request.getParameter("html.name") : String
Request.getParameterValues("html.name") : String Array
HTML태그내에 지정한 name안 value의 값이 담겨 Servlet 클래스로 전송되어진다.
작성한 Servlet클래스에서 "name"을 key로 인지하여 담긴 value의 값을 가져올 수 있다.
webapp\WEB-INF\web.xml : Servlet Mapping
<servlet>
<servlet-name>Servlet명</servlet-name>
: 서블릿명을 동일하게 작성.
<servlet-class>package.class</servlet-class>
: Servlet class
</servlet>
<servlet-mapping>
<servlet-name>Servlet명</servlet-name>
: 서블릿명을 동일하게 작성.
<url-pattern>/URL</url-pattern>
: ★action과 비교하여 상대적 url을 작성해야한다.
</servlet-mapping>
localhost:8080/어플리케이션명
<form action="/어플리케이션명">
<url-pattern>/어플리케이션명<url-pattern>
html파일 위치, url을 상대적으로 작성하고, 일치시켜 Mapping한다.
<form>
태그를 이용하여 action에 " / "가 포함되어있어 절대적URL로 이동,
데이터를 전송하면 해당 Servlet클래스에 데이터를 전송한다.