Develop/Spring MVC

0819 Spring Redirect AutoWired Valid

포페PostFace 2022. 8. 22. 17:45


Redirect

@RequestMapping(value = "/input")
	public String input(HttpServletRequest request,Model model) {
		String name=request.getParameter("name");
		String age=request.getParameter("age");
		
		model.addAttribute("name", name);
		model.addAttribute("age", age);
		model.addAttribute("addr", "서울");
	//여기서 다른 요청을 따라 모델을 넘기면 해당 모델이 parameter로 취급된다.
		return "redirect:/last"; 
	//다른 컨트롤러 요청(response.sendRedirect와 흡사함)
	}
	@RequestMapping(value = "/last")
	public String last() {
		
		return "redirect/last";
	//redirect폴더의 last.jsp
	}



AutoWired 자동 연결

myPkg2의 CircleImpl 클래스

@Component("myCircleImpl")
public class CircleImpl implements Circle {
	
	@Autowired//pointX 객체만 해당됨. 객체생성.
	@Qualifier("PointX")//어떤 자식 클래스가 적합한지 정의.(자식이 하나면 쓸 필요 없다.)
	Shape pointX;



appContext.xml에
<context:component-scan base-package="myPkg2"/>
추가.

myPkg2의 Main

ApplicationContext text=new ClassPathXmlApplicationContext("appContext.xml");
Circle circle=(Circle)context.getBean("myCircleImpl");
System.out.println(circle.make());





이와 같이 객체를 만드는것을 생략할 수 있다.

PointX px = new PointX();
PointY py = new PointY();
		
CircleImpl circle = new CircleImpl();
circle.setPointX(px);
System.out.println(circle.make());




Valid 유효성 검사

pom.xml

<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>4.2.0.Final</version>
		</dependency>
		<dependency>
			<groupId>javax.xml.bind</groupId>
			<artifactId>jaxb-api</artifactId>
			<version>2.2.8</version>
		</dependency>



MemberBean

	//@NotBlank(message = "NotBlank") <-이건 작동한다.
	//@NotNull(message = "NotNull") <-이건 안됨
	@NotEmpty(message = "아이디 입력 누락")
	private String id;//어노테이션 하나당 하나만 된다.

	@NotEmpty(message = "비번 입력 누락")
	@Length(min = 3,max = 5,message = "3자리 이상 5자리 이하")
	@Size(max = 5,min = 3,message = "size")//이것도 된다 ==Length
	@Pattern(regexp = "^[0-9]+$",message = "pw는 숫자만 입력가능")
	private String pw;



MemberController

	
	@RequestMapping("input")
	public String result(@ModelAttribute("member") @Valid MemberBean mb,
			BindingResult result) {//@Valid 체크하는 역할 문제가 생기면 BindingResult 객체에 에러가 담긴다.
			//BindingResult 는 앞에 쓰면 안된다. 순서체크할 것
		if(result.hasErrors()) {
			return "form"; //form.jsp로 리턴
		}
		return "result";
	}



Form.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>    
<style type="text/css">
	.err{
		font-size: 9pt;
		color : red;
		font-weight: bold;
	}
</style>

form.jsp<br>

<form:form commandName="member" action="input" method="post">
	아이디 : <input type="text" name="id">
		<form:errors cssClass="err" path="id"/>
	<br><br>
	비번 : <input type="text" name="pw">
		<form:errors cssClass="err" path="pw"/>	
	<br><br>
	
	<input type="submit" value="전송">
</form:form>



'Develop > Spring MVC' 카테고리의 다른 글

0818 Spring  (0) 2022.08.22
0817 Spring Start  (0) 2022.08.22