인텔리제이로 바꾸기
이래야 롬복 정상동작
?뒷부분 = 쿼리파라미터
@WebServlet(name = "helloServlet", urlPatterns = "/hello")
// /hello로 오면 이클래스가 실행
public class HelloServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet.service");
System.out.println("request = " + request); //was 서버들이 서블릿 표준스펙을 구현한 구현체가 출력됨
System.out.println("response = " + response);
String username = request.getParameter("username");
System.out.println("username = "+ username);
response.setContentType("text/plain");
response.setCharacterEncoding("utf-8");
response.getWriter().write("hello"+ username);
}
// 서블릿이 호출되면 서비스 메소드가 호출됨
}
동작원리
HTTP REQUEST
http 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법
@WebServlet(name = "requestBodyJsonServlet", urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);
HelloData hellodata =objectMapper.readValue(messageBody, HelloData.class);
System.out.println("hellodata = " + hellodata.getUsername());
System.out.println("hellodata = " + hellodata.getAge());
}
텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고,
HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다. 자바 객체로 변환하려면 jackson같은게 필요 jackson의 ObjectMapper
로 읽는다 스프링mvc는 기본 제공
HTTP RESPONSE
HTTP 응답, 헤더, 바디 생성
Content-Type, Cookie, Redirect 등의 기능 제공
private void redirect(HttpServletResponse response) throws IOException {
//Status Code 302
//Location: /basic/hello-form.html
//response.setStatus(HttpServletResponse.SC_FOUND); //302
//response.setHeader("Location", "/basic/hello-form.html");
response.sendRedirect("/basic/hello-form.html");
}
리다이렉트
단순 텍스트 응답 -http 응답으로 html를 반환할땐, content-type을 text/html
로 지정한다.
json뿌리기
@WebServlet(name = "responseJsonServlet", urlPatterns = "/response-json")
public class ResponseJsonServlet extends HttpServlet {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("application/json");
resp.setCharacterEncoding("utf-8");
HelloData helloData = new HelloData();
helloData.setUsername("kim");
helloData.setAge(20);
String result = objectMapper.writeValueAsString(helloData);