본문 바로가기
Spring 게시판 기초

3. 웹에서 쓴 글 DB에 등록하기

by dantriss 2022. 10. 5.

결과물

등록 테스트
DB에 저장된 모습
웹에서 출력될 화면

 


sql문 부터 mapper에서 작성 (Tb_Project_SQL)
insert문 <mapper></mapper> 사이에 추가
<>안에 insert인 것 확인
<insert id="insertProject">

	INSERT INTO TEST (
	USERNUM,
	NAME,
	AGE

	) VALUES (
	#{usernum},
	#{name},
	#{age}

	)
</insert>

 

 

service에 insert 추가 (com.project.service 패키지에 ProjectService)
package com.project.service;

import java.util.List;

import com.project.vo.ProjectVO;

public interface ProjectService {
	List<ProjectVO> selectProjectList() throws Exception;
	
	void insertProject(ProjectVO projectVO); //추가된부분
	
}

 

com.project.service.impl 패키지에 ProjectServiceImpl
package com.project.service.impl;

import java.util.List;

import javax.inject.Inject;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import com.project.service.ProjectService;
import com.project.service.dao.ProjectDAO;
import com.project.vo.ProjectVO;


@Service("ProjectService")
public class ProjectServiceImpl implements ProjectService{
	@Autowired
	private ProjectDAO projectMapper;

	@Override
	public List<ProjectVO> selectProjectList() throws Exception {
		// TODO Auto-generated method stub
		return projectMapper.selectProjectList();
	}

	@Override
	public void insertProject(ProjectVO projectVO) {	// 추가된부분
		// TODO Auto-generated method stub
		projectMapper.insertProject(projectVO);
		
	}


}

 

com.project.controller 패키지에 HomeController
package com.project.controller;

import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.project.service.ProjectService;
import com.project.vo.ProjectVO;

import lombok.RequiredArgsConstructor;

/**
 * Handles requests for the application home page.
 */
@Controller
@RequiredArgsConstructor
public class HomeController {
	@Resource(name = "ProjectService")
	private ProjectService projectService;
	
	
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
	@RequestMapping(value = "/projectList")
	public String projectList(Model model) throws Exception {

	    List<ProjectVO> list = projectService.selectProjectList();

	    logger.info(list.toString());

	    model.addAttribute("list", list);

	    return "projectList";
	}
	
	//	게시판 글등록 (추가된부분)
	@RequestMapping(value = "/projectRegisterForm")
	public String projectRegisterForm(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) throws Exception {

	    return "projectRegisterForm";
	}
	
	// 글 등록하기 (추가된부분)
	 
	@RequestMapping(value = "/projectInsert")
	public String projectInsert(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) {

		projectService.insertProject(projectVO);
		
		return "redirect:/projectList";
	}
	
}

 

 

src/main/webapp/WEB-INF/views에  projectRegisterForm.jsp 생성
<!--한글등록-->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!-- src/main/webapp/WEB-INF/view/projectRegisterForm.jsp -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"/>
<title>Home</title>
</head>
<body>
	<h1>Project Register</h1>
	<c:url var="insertUrl" value="/projectInsert" />

	<form:form commandName="projectVO" action="${insertUrl}" name="projectVO" method="post">
		<table>
			<tbody>
				<tr>
					<th>번호</th>
					<td><form:input path="usernum" id="usernum" size="20" maxlength="10" /></td>
				</tr>
				<tr>
					<th>이름</th>
					<td><form:input path="name" id="name" size="20" maxlength="10" /></td>
				</tr>
				<tr>
					<th>나이</th>
					<td><form:input path="age" id="age" size="20" maxlength="3" /></td>
				</tr>
				<tr>
					<td colspan="2"><input type="submit" value="등록" /></td>
				</tr>
			</tbody>
		</table>
	</form:form>

</body>
</html>

 

src/main/webapp/WEB-INF/views에 home.jsp에 a 태그로 글 등록하는 페이지 링크생성
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

<P>  The time on the server is ${serverTime}. </P>

<a href="projectList">move to list</a> <br>
<a href="projectRegisterForm">register</a> 	//추가된부분
</body>
</html>

 

웹에서 값 입력시 DB에 한글이 깨지는 현상이 발생했고 검색 후 해당방법을 찾게 되었다

src/main/webapp/WEB-INF/web.xml에 맨 밑에 </web-app> 바로 위에 해당 코드 입력
<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>

'Spring 게시판 기초' 카테고리의 다른 글

프로젝트 다운로드후 링크 눌렀을때 404 error  (0) 2022.10.05
2. 출력해보기  (2) 2022.10.01
1. Oracle 연동하기  (0) 2022.10.01
0. 프로젝트 생성  (0) 2022.10.01

댓글