SPRING CRUD(5) CREATE

Happy_JG·2023년 10월 19일
0

Spring CRUD

목록 보기
5/8

게시글 작성

글쓰기버튼을 클릭하면 게시글을 작성할 수 있는 기능을 만들어보자.

<a href="boardForm.do" class ="btn btn-primary btn-sm">글쓰기</a>

a태그 특징

<a> 태그는 주로 웹 페이지나 다른 자원에 대한 하이퍼링크를 생성할 때 사용된다. 기본적으로,<a> 태그는 URL을 통해 리소스에 연결되지만, 직접적으로 "forward" 방식을 사용하여 서버 내에서의 데이터 전달을 지원하지는 않는다.

따라서 해당 a태그의 url을 요청받을 경우 Controller에서 맞는 응답을 해주어야 한다.

Board Controller

	@RequestMapping("/boardForm.do")
	public String createList() {
	
		return "boardForm";
	}

a태그 href속성으로 url요청이 왔을 때 새로운 게시글을 작성할 수 있는 createList함수를 정의했다. boardForm.jsp파일을 응답해준다.

boardForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
	  <h2>project01</h2>
	  <div class="panel panel-default">
	    <div class="panel-heading">Board</div>
	    <div class="panel-body">
	    <form action = "boardInsert.do" method ="post"> <!-- 내가입력한 모든값이 여기로 이동 -->
	    	<table class = "table">
	    		<tr>
	    			<td>제목</td>
	    			<td><input type = "text" name = "title" class ="form-control"></td>
	    		</tr>
	    		<tr>
	    			<td>내용</td>
	    			<td><textarea class ="form-control" name = "content" rows="7" cols=""></textarea></td>
	    		</tr>
	    		<tr>
	    			<td>작성자</td>
	    			<td><input type = "text" name = "writer" class ="form-control"></td>
	    		</tr>
	    		<tr>
	    			<td colspan ="2" align="center">
	    				<button class="btn btn-success btn-sm" type = "submit">등록</button>
	    				<button class="btn btn-warning btn-sm" type = "reset">취소</button> <!-- 컨트롤+알트 아래화살표하면 복사됨 -->
	    				<a href ="boardList.do" class="btn btn-info btn-sm">목록</a> <!-- 컨트롤+알트 아래화살표하면 복사됨 -->
	    			</td> 		
	    		</tr>
	    	</table>
	    </form>
	    </div>
	    <div class="panel-footer">Board</div>
	  </div>
	</div>
</body>
</html>

boardForm.jsp파일 생성완료

글쓰기 버튼을 누르면 글쓰기 폼이 나온다.

<form>태그에서 post전송방식으로 데이터를 보내주기 때문에 사용자가 입력한 데이터를 저장하기 위한 함수를 작성해주어야한다.

boardController

boardInsert라는 함수를 mapper 인터페이스에서 정의하지 않았기 때문에 mapper.xml에 작성해보자.

boardForm에서 보낸 데이터를 MyBatis를 통해 DB에 저장해야하기 때문에 Board vo를 보내주어야 한다.

작성 기능을 완성하였다.

다음과 같이 인코딩에 문제가 발생하였다.

web.xml파일에 다음과 같이 인코딩을 도와주는 코드를 작성하자.

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

한글까지 잘 출력되는 모습이다.

profile
hello!

0개의 댓글