Free Lines Arrow
본문 바로가기
Spring/spring framework 구현 스터디

[Spring] 서블릿, JSP 예제

by skahn1215 2021. 10. 11.
728x90
반응형

Servlet 예제

  • JSP 같은 경우 JAVA 코드에 html 을 작성한다.
  • response 로 작성한 HTML 을 응답해주는 형식이다.

 

url 로 회원등록을 요청하면 응답으로 회원등록 HTML 을 받는 부분이다.

너무 불편하다. 쓸수가 없다.

package hello.servlet.web.servlet;

import hello.servlet.basic.domain.member.MemberRepository;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form")
public class MemberFormServlet extends HttpServlet {
    private MemberRepository memberRepository = MemberRepository.getInstance();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");

        PrintWriter w = resp.getWriter();
        w.write("<!DOCTYPE html>\n" +
                "<html>\n" +
                "<head>\n" +
                " <meta charset=\"UTF-8\">\n" +
                " <title>Title</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "<form action=\"/servlet/members/save\" method=\"post\">\n" +
                " username: <input type=\"text\" name=\"username\" />\n" +
                " age: <input type=\"text\" name=\"age\" />\n" +
                " <button type=\"submit\">전송</button>\n" +
                "</form>\n" +
                "</body>\n" +
                "</html>\n");
    }
}

전체코드

https://github.com/rnrl1215/spring-mvc-1/tree/main/src/main/java/hello/servlet/web/servlet

 

GitHub - rnrl1215/spring-mvc-1

Contribute to rnrl1215/spring-mvc-1 development by creating an account on GitHub.

github.com

 

 

JSP 예제

  • 지금은 사장되었지만 JSP 로 위 예제를 그대로 구현해 본다.
  • 회원을 저장하는 jsp 부분
  • <% ~자바코드 ~%>
  • <%= 자바코드 %> = 이 있으면 내용을 출력을 한다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="hello.servlet.domain.member.Member" %>
<%@ page import="hello.servlet.domain.member.MemberRepository" %>

<%
        // request, response 그냥 쓸수 있도록 지원된다.
        MemberRepository
                memberRepository = MemberRepository.getInstance();

        String username = request.getParameter("username");
        int age = Integer.parseInt(request.getParameter("age"));

        Member member = new Member(username, age);
        memberRepository.save(member);
%>
<html>
<head>
    <title>Title</title>
</head>
<body>
성공

<ul>
    <li> id=<%=member.getId()%> </li>
    <li> username=<%=member.getUsername()%> </li>
    <li> age=<%=member.getAge()%> </li>
</ul>
<a href="/index.html">메인</a>
</body>
</html>

 

전체코드

https://github.com/rnrl1215/spring-mvc-1/tree/main/src/main/webapp/jsp

 

GitHub - rnrl1215/spring-mvc-1

Contribute to rnrl1215/spring-mvc-1 development by creating an account on GitHub.

github.com

 

 

 

서블릿과 JSP 의 한계

서블릿

  • 뷰화면을 java 코드에서 만들어야 하기 때문에 복잡하고 깔끔하지 않다.

JSP

  • 위코드를 보면 비즈니스로직과 뷰영역이 합쳐져 있다 유지보수가 힘들다

 

 

그래서 MVC 패턴이 등장한다.

다음페이지에 정리

 

 

https://vprog1215.tistory.com/243

 

 

 

 

 

 

참고: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/lecture/71183?tab=curriculum&speed=1 

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

728x90
반응형

댓글