본문 바로가기
자바웹프로그래밍/전자정부프레임워크

전자정부프레임워크를 이용 쇼핑몰 만들기 #5-insert

by 디찌s 2020. 4. 26.
728x90
반응형

5번째 시간

 

오늘은 글쓰기 과정을 생각해봅시다!

 

Articlelist.jsp

<div class="btn btn-primary pull-right">
	<span><a href="<c:url value='/pet/bbs/insertArticleView.do?bbsId=${searchVO.bbsId}' />">글쓰기</a></span>
</div>

 

1.사용자가 Articlelist.jsp 에서 글쓰기 버튼을 누르면 

2.기존에 jsp 박혀있던 serachVO에 bbsId를 insertArticleView.do url에 파라미터에 저장하여 컨트롤러에 보냅니다.

 

3.컨트롤러에서는 RequestMapping("insertArticleView.do")로 컨트롤러에서 url을 받고

 

4.@ModeladdAttribute("searchVO") BoardVO boardVO) 가 바인드객체이므로 자동으로 bbsId를 맵핑하여 boardVO에 저장하고

 

5. 컨트롤러는 Register.jsp 인  글쓰기 view화면 페이지를 사용자에게 보여줍니다.

 

6. 글쓰기 view화면페이지 를 받은 사용자는 내용 ,제목을 작성하여 form 태그를 통해 bbsID , 내용,제목을 url "insertArticle.do" 로 전달한뒤 

 

7.컨트롤러에서 RequestMapping("insertArticle.do")로 url을 확인하고.

 

8.service Articleinsert메서드를 실행한뒤 commonDAO를 통해 db와 접근하여 sql(PetArticle_SQL_mysql.xml) insert문을 실행하여 db에 저장합니다.

 

위에 과정을 통해 글쓰기 과정은 완성됩니다 그럼 시작해보겠습니다.

 

일단 기본 글작성 페이지인 jsp 페이지를 만들겠습니다.

 


Register.jsp

 

 

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<div class="container">
	<div class="row">
		<form:form commandName="articleVO" action="${pageContext.request.contextPath}/pet/bbs/insertArticle.do" method="post" enctype="multipart/form-data">
			<table class="table table-striped" style="text-align: center; border: 1px solid #dddddd">
				<thead>
					<tr>
						<th colspan="2" style="background-color: #eeeeee; text-align: center;">게시판 글쓰기 양식</th>
					</tr>
				</thead>
				
						<tbody>
							<tr>
								<td><form:input path="nttSj" class="form-control" placeholder="글 제목" name="nttsj" maxlength="50"/></td>
							</tr>
							<tr>
								<td><form:textarea path="nttCn" class="form-control" placeholder="글 내용" name="nttCn" maxlength="2048" style="height: 350px;"/></td>
							</tr>

						</tbody>
					</table>	
				<span><input type="submit" class="btn btn-primary pull-right" value="글쓰기"/></span>	
				
			</div>
		</div>
		<input type="hidden" name="bbsId" value="<c:out value='${articleVO.bbsId}'/>">
		</form:form>
</body>
</html>

 

이번 jsp에서 form 태그가 등장합니다.  form 태그는 단순히 웹페이지에서 입력 양식을 의미합니다. 

 

로그인창이나 , 글쓰기작성, 등등이 이에 해당되죠

 

텍스트필드에 글자를 입력하거나, 체크박스나 라디오 버튼을 클릭하고 submit제출 버튼을 누르면 was서버(tomcat)에 양식이 전달되어 정보를 처리하게됩니다. was서버는 그냥 쉽게말하면  controller에 제출한다고 생각하세요

 

지금 사용하는 form태그는 일반 html폼태그와 약간 생김새가 다른데 이건 스프링에서 제공하는 <form:form>태그라고 합니다. 자세한건 구글링해서 검색하기 바랍니다.

 

구성을 보면 submit을 bbsId,nttSJ(제목),nttCn(내용) 등이 insertArticle.do url로 넘어가게됩니다 

 

당연히 컨트롤러에서는 저 값들이 자동 바인드 되겠죠? (커맨드 객체를 통해서)

 

jsp까지 만들었으니 이제 글쓰기 버튼을 누르면 지금만든 Register.jsp를 사용자에게 보여주는 로직을 짜봅시다.

 

 


 

 

ArticleController.java

@RequestMapping("pet/bbs/insertArticleView.do")
	public String ArticleinsertView(@ModelAttribute("searchVO") BoardVO boardVO,ModelMap model) throws FdlException{
		
		LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
		
		Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
		
		if(!isAuthenticated) {
			return "egovframework/com/uat/uia/EgovLoginUsr";
		}
		
		model.addAttribute("articleVO",boardVO);
		
		
		return "/pet/bbs/Register";
				
		
		
	}

 

이제 새로운 내용이 나왔다 LoginVO 타입을 가진 user변수와 Boolean 타입을 가진 isAuthenticated이다

 

이둘은 정부프레임워크에서 제공하는 user관련 클래스에서 user정보를  및 user가 로그인되었는지에 관한 변수이다

 

if문을 해석하자면 로그인 되어있지않으면 EgovLoginUsr.jsp를 돌려줘라는 뜻이다. 직관적으로 말하면

 

네이버같은곳에서 로그인이 되어있지 않은상태에서 글쓰기 버튼을 누르면 다시 로그인화면창으로 가지않는가?

 

그런 맥락이다.

 

model.addAttribute에 Register.jsp안에 form태그인 commandname과 똑같이 써서 맵핑시킨다.

 

컨트롤러를 이렇게만들면 그전에 Articlelist.jsp에서 bbsId를 insertArticeView.do로 파라미터로 넘기고

 

그것을 받은 컨트롤러는 bbsId를 boardVO에 자동 바인드시켜서

 

다시 Register.jsp를 사용자에게 articleVO(bbsId)를 함께 돌려준다.

 

여기까지 한번 실행해보자

 

여기까지 했으면 이제 내용을 넣고 글쓰기 버튼을 누르면

 

db에 insert해야된다.

 

Controller 추가

 

 

 

728x90
반응형

댓글