Java

Java,Servlet, Jsp를 활용한 레거시 코드에 대해 이해해보자 - 2탄

Terror123 2025. 2. 6. 12:04

개요

  • 이전에는 기초적인 Java,Servlet,xml을 활용한 매핑 구성 방식에 대해 알아 보았다.
  • 오늘은 클라이언트 - 서버구조의 컨트롤러의 역할을 수행시켜보자

게시글 생성 프로젝트

파일을 먼저 만들어주자


  • 음 일단 잘 나오는모습이다
  • 화면을 좀 꾸며주도록 하자
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>게시글 생성 페이지</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div class="container">
    <div class="card">
        <h1>📌 게시글 생성</h1>
        <p>게시글을 작성하려면 아래 내용을 입력하세요.</p>

        <form action="board-post" method="post">
            <label for="title">제목</label>
            <input type="text" id="title" name="title" placeholder="제목을 입력하세요" required>

            <label for="content">내용</label>
            <textarea id="content" name="content" placeholder="내용을 입력하세요" required></textarea>

            <button type="submit">게시글 생성</button>
        </form>
    </div>
</div>
</body>
</html>

web.xml

    <servlet>
        <servlet-name>boardPost</servlet-name>
        <servlet-class>com.example.legacyjavapractice.servlet.BoardServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>boardPost</servlet-name>
        <url-pattern>/board/board-post</url-pattern>
    </servlet-mapping>

  • url-pattern시 상대경로가 아닌 항상 절대경로로 표시해주어야한다

  • /board/board-post의 URL로 post 메서드가 요청되었을떄, 서블릿은 서블릿 class의doPost()를 찾아서 요청하기 떄문에, 하나의 클래스안에 doPost()가 두개 존재할 수 없다.

  • 굳 잘나오는 모습이다

클라이언트로부터의 데이터를 받아보자

  • 사실 간단하다, 이미 doPost에서 req,res Servlet을 인자로 받고있기때문에 이를 활용하면된다
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        String title = request.getParameter("title");
        String content = request.getParameter("content");
        System.out.println(title);
        System.out.println(content);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        String title = request.getParameter("title");
        String content = request.getParameter("content");
        PrintWriter out = response.getWriter();
        out.println("<h1> " + title + "</h1>");
        out.println("<p> " + content + "</p>");
    }

TMI

  • 상대경로
  • 절대경로
    • 자신이 지정한 경로로만 가능하게함
    • 현재 URL과 상관없이 자신이 지정한 URL로 고정된 값이 들어감

다음시간

  • 다음 시간에는 JDBC, MyBatis를 활용하여 데이터베이스에 저장하는 작업을 해보자