Back-end/Spring-핵심& webMVC

JSP 태그 라이브러리

prden 2021. 5. 5. 10:45

스프링 MVC는 <form:form>, <form:input> 등 HTML 폼과 커맨드 객체를 연동하기 위한 JSP 태그 라이브러리를 제공한다.

1. <form:form>

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<form:form modelAttribute="loginCommand"> -> id대신 modelAttribute 지정하면 커맨드 객체 이름 설정할 수 있다. 

예를 들어 modelAttibute = "loginCommand"라는 커맨드 객체와 연결해주고 여기서 이메일, 비밀번호 꺼내와서 authInfo라는 커맨드 객체에 다시 값을 넣어준 뒤 세션을 만드는 컨트롤러를 보자.

@PostMapping
    public String submit(
    		LoginCommand loginCommand, Errors errors, HttpSession session,
    		HttpServletResponse response) {
        new LoginCommandValidator().validate(loginCommand, errors);
        if (errors.hasErrors()) {
            return "login/loginForm";
        }
        try {
            AuthInfo authInfo = authService.authenticate(
                    loginCommand.getEmail(),
                    loginCommand.getPassword());
            
            session.setAttribute("authInfo", authInfo);
~~~~~

2. <spring :???> -> Spring Security를 이용할 때는?

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:message code="rememberEmail" /> - resources/message/label.properties에 지정해주는 값

<form action='<spring:url value="/loginAction"/>' method="post">-여기서는 spring security이용하는데 form 태그 이용해서 어느 커맨드 객체와 연결되는 건가??? spring security 구조를 보면 결국에 authentication에 저장되는데 authentication에서 getAuthorities()로 권한 불러오고 이름은 Principal에서 get.name()을 통해 불러오면 될 거 같다. 

 

 

disabled, readonly <-사용자가 쓰지 못하게 막는 기능

 

disabled <- form데이터를 Submit하면 해당 부분만 전송되지 않음.

 

readonly <- form데이터를 Submit하면 전송됨.

 

c:choose, c:when, c:otherwise 

http://www.devkuma.com/books/pages/1184  

 

indexOf

int indexOf( String string, String substring ): string에서 substring의 첫 위치에 해당하는 인덱스를 반환한다. 찾는문자열이 없을 경우 -1을 리턴한다.

${fn:indexOf("abcdefg", "f")} // 5