일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- JPA
- jar빌드
- 비밀번호 재설정 API
- 스프링부트 OpenAI API
- HttpServletResponse
- swap 메모리
- springboot
- git 충돌 해결
- github 복제
- MySQL
- 자바
- Git
- 넘파이
- 프로그래머스
- 서버 배포
- JPQL
- 두수의 합 자바
- 페이징 정렬
- JDBC
- 값 타입
- Chat GPT
- api 개발
- 저장소 이전
- MVC
- 스프링 이메일 전송
- Json 객체
- 우분투
- Servlet
- 저장소 복제
- Today
- Total
현의 개발 블로그
[Servlet, JSP, MVC 패턴] 서블릿으로 웹 어플리케이션 만들기 본문
Servlet으로 회원 관리 웹 어플리케이션을 만들어보자.
회원 저장 폼 만들기
HttpServlet.service()를 재정의 해준다.
@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form")
public class MemberFormServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
회원 저장 폼을 만들어준다.
자바로 html 코드를 직접 작성해야 하므로 오타날 확률이 높다.
전송 버튼을 누르면 /servlet/members/save로 post 요청을 한다.
해당 url을 매핑하는 서블릿을 아직 생성하지 않았기 때문에 오류가 난다.
white label error 페이지에서 개발자 모드로 열면 form data를 확인할 수 있다.
회원 저장하기
member를 저장하는 servlet을 만들어 /servlet/members/save로 매핑시키자.
MemberSaveServlet을 만들고 HttpServlet.service()를 오버라이딩 해줬다.
@WebServlet(name="memberSaveServlet", urlPatterns = "/servlet/members/save")
public class MemberSaveServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}
사용자가 입력한 form-data를 받아오자.
request.getParameter()는 String을 반환하므로 Integer로 변환해야 한다.
//form-data 받아옴
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
입력 폼으로 받아온 값을 넣고 Member 객체를 생성한다.
Member member = new Member(username, age);
memberRepository.save(member);
Member 객체의 필드를 html로 응답해준다.
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter w = response.getWriter();
w.write(....
" <li>id=" + member.getId() + "</li>\n" +
" <li>username=" + member.getUsername() + "</li>\n" +
" <li>age=" + member.getAge() + "</li>\n" + "</ul>\n" +
"</html>");
form-data에 값을 넣어 전송하면 아래와 같이 response를 받아올 수 있다.
회원 목록 조회하기
회원 목록을 조회하는 MemberListServlet을 만들자.
HttpServlet.Service를 재정의 해주자.
@WebServlet(name = "memberListServlet", urlPatterns="/servlet/members")
public class MemberListServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
저장된 모든 멤버를 조회하는 비즈니스 로직을 작성한다.
List<Member> members = memberRepository.findAll();
회원 목록을 응답해주는 코드를 작성한다.
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter w = response.getWriter();
...
for (Member member : members) {
w.write(" <tr>");
w.write(" <td>" + member.getId() + "</td>");
w.write(" <td>" + member.getUsername() + "</td>");
w.write(" <td>" + member.getAge() + "</td>");
w.write(" </tr>");
}
...
}
아래처럼 Member를 조회해 출력해준다.
정리
서블릿과 자바 코드만으로 HTML을 만들었다.
서블릿 덕분에 동적인 HTML을 만들 수 있었다.
그러나, 자바 내에서 HTML 코드를 작성하는 건 복잡하고 비효율적이다.
HTML 문서에 동적으로 변경되는 부분만 자바 코드로 작성하는게 편리할 것이다.
템플릿 엔진을 사용하면 HTML 내에서 필요한 곳만 코드를 적용해 동적으로 바꿀 수 있다.
이러한 템플릿 엔진에는 JSP, Thymeleaf 등이 있다.
다음 글에서는 JSP로 웹 어플리케이션을 만들 것이다.
Reference
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -
www.inflearn.com
'스프링부트 이론 > MVC' 카테고리의 다른 글
[Servlet, JSP, MVC패턴] MVC 패턴 개요 (0) | 2023.06.20 |
---|---|
[Servlet, JSP, MVC 패턴] JSP로 웹 어플리케이션 만들기 (0) | 2023.06.20 |
[Servlet, JSP, MVC 패턴] 비즈니스 로직 작성 (0) | 2023.06.19 |
[Servlet] HTTP 응답 데이터 (0) | 2023.06.19 |
[Servlet] Http Servlet Response 사용법 (0) | 2023.06.19 |