Spring MVC

-
Dispatcher Servlet이 설정정보 내용들을 가지고 있어야 함(독립적인 Spring container)
-
controller의 역할 : 비즈니스호출, 결과값 전달, 경로설정
-
ModelAndView보다 Spring이 더 자주쓰임
-
View : 항상 jsp는 아니다
-VO객체, Command객체(DTO객체, 폼객체), 폼으로 값을 넘겨주기 위한 객체
*폼 입력값 검증
Client측에서 폼 입력값 검증을 하는게 나음(Server단에서x)
<validation check>
**폼 입력값 검증(validator)
--BoardController
@RequestMapping(value="/board_insert", method=RequestMethod.GET)
public String insertForm(@ModelAttribute("boardCommand") Board board){//처음 경로설정값이기 때문에 modelAttribute설정 해주어야 함
return "insert_form";
}
BoardController@RequestMapping(value="/board_insert", method=RequestMethod.POST)
public String board_insert(@ModelAttribute("boardCommand") @Valid Board board, BindingResult errors){
if(errors.hasErrors()){
System.out.println("에러발생");
return "insert_form";
}
}
Board.java
@NotEmpty(message = "반드시 제목을 입력하세요.")
@Size(min=2, max=5, message="2~5사이 글자수 입력")
private String title;
@Pattern(regexp="[0-9a-zA-Z가-힣]*",message="특수문자 금지")
private String writer;
form -> controller -> view
(command객체) (ModelAttribute사용)
(valid체크)
--insert_form.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>����기</title>
<style type="text/css">
.error{
color: #ff0000;
}
</style>
</head>
<body>
<h3> 게시글 올리기 </h3>
<hr><br>
<form:form action = "board_insert" method="post"
commandName="boardCommand" >
제목 <br> <form:input type="text" path = "title"/>
<form:errors path="title" cssClass="error"/> <br>
작성자<br> <form:input type ="text" path ="writer"/>
<form:errors path="writer" cssClass="error"/> <br>
내용 <br>
<form:textarea rows="7" cols="70" path= "contents"></form:textarea><br>
<br><input type="submit" value="등록">
</form:form>
</body>
</html>
**DB와 연동
-
DAO 지원 클래스 사용

dependency Injection으로 만들어야지 new로 만들면 안됨!! -> spring container가 이 모든것을 관리해주기 때문
<!-- DB Setting -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="/WEB-INF/mybatis-config.xml"/>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/oracle"/>
<property name="resourceRef" value="true"/>
</bean>
**@RequestParam 어노테이션을 이용한 파라메터 매핑 : integer로 변환할 필요 없음
@RequestParam("name") String name, @RequestParam("age") int age)
@RequestMapping("/board_detail")
public String board_detail(Model model, @RequestParam("seq") int seq){
Board board = dao.detailBoard(seq);
model.addAttribute("board",board);
return "detail";
}
**RESTful방식
url-> 의미있는 data전달
detail_board?
=>
@RequestMapping(“/game/users/{userId}/characters/{characterId}”)
public String characterInfo( @PathVariable String userId
, @PathVariable int characterId, ModelMap model){
@RequestMapping("/board_detail{seq}")
public String board_detail(Model model, @PathVariable int seq){
Board board = dao.detailBoard(seq);
model.addAttribute("board",board);
return "detail";
}
<td><a href="board_detail?seq=${board.seq }">${board.title }</a></td>
=>
<td><a href="board_detail${board.seq }">${board.title }</a></td>
**템플릿만들기
tiles => Template
'FULLSTACK > SPRING' 카테고리의 다른 글
12/7~8 Spring Boot, JPA (0) | 2020.12.08 |
---|---|
STS기반 SPRING - 구멍가게코딩단 책과 함께합니다 (0) | 2020.11.13 |
SPRING 4차시 - AOP, TRANSACTION, FILE UP/DOWN (0) | 2020.11.13 |
SPRING 2차시 - AOP (0) | 2020.11.13 |
SPRING 1차시 - Dependency Injection (0) | 2020.11.13 |