반응형

프로젝트를 진행 중에, spring security 를 이용해서 로그인을 하는 과정에서 로그인을 성공한 후에 jsp 로 로그인한 정보를 보내는 과정을 뒤져보는 과정에서 발견한 방법!!!

그건 HttpServletResponse 의 printWriter를 이용한 방법이었다. 

 

1. login.jsp

ajax를 이용하여 spring security 를 이용하여 로그인 프로세스를 타게 했다.

$.ajax({
    url: './loginCheck',
    data: datas,
    type: 'POST',
    dataType: 'json',
}).done(function(body) {
    console.log(body);
    var error = body.response.error;
});

login 로직을 탄 후에 받아오는 데이터 타입을 json으로 정의를 해두었다. 그래서 java에서도 보내는 데이터타입이 json 형태이어야한다. 아니면? 에러뜸!!! 주의해야함

 

2. AuthenticationSuccessHandlerImpl.java

로그인 로직이 성공했을 때 타게 spring-security.xml 에 설정해둔 implement 에 있는 메서드에 response를 받아오는 변수로 넣어두고 reponse.getWriter().print() 를 이용하여 위에 설정해둔 ajax의 결과값에 보내보자!

※주의! contentType, characterEncoding 을 설정해주어야하고,  print할 데이터는 꼭! json 값이어야함!! 아니길원하면 ajax 의 dataType 을 원하는 타입으로 수정하면 된다.

public void onAuthenticationSuccess(HttpServletRequest req, HttpServletResponse res, Authentication auth) throws IOException, ServletException {
	String rUrl = defaultUrl;
    res.setContentType("application/json"); 
    res.setCharacterEncoding("utf-8"); 
    
    String data = "{\"response\":{\"error\":false,\"url\":\""+rUrl+"\", \"id\": \""+"userId"+"\", \"role\": \""+"roleId"+"\"}}";
	PrintWriter out = res.getWriter();
    out.print(data);
}

 

3. 로그인 후, console 확인

response object가 보내졌고, 보낸 data가 console에 찍혀있는걸 확인할 수 있다!!!!!

 

반응형

 

반응형
반응형

Controller에서 List형태로 주소값에 보내줄 때, 이 list의 길이를 EL을 이용해서 뿌려주고 싶을때,

나는 이걸 몰랐을, Controller를 이용해서 list.size()해서 다시한번 modelAndView로 보내줬다. 하지만, 그런경우에는 쿼리를 반복해야하고 또한 보내는 수가 늘어나기때문에 데이터의 수가 많아지면 로딩하는데 오래 걸릴 수 있다. 그래서 jstl을 이용한 방법!!! 

(다른 블로그에서 fn.length(list) 를 이용해서 하시던데.... 그건 나에겐 되지않았다. fn라이브러리가 있었는데도 불구하고)

아주 간단하다!!!! list로 받아온거.size() 해주면 자바에서 받아오는 것처럼 사용할 수 있다!!! 완전 편함

반응형
반응형

Controller에서 addObject를 이용해서 List객체를 넘겨줬다. 저 getPerformanceOneWeek() 은 List<HashMap<String,Object>> 이다.

반복되고자하는 하는 부분은 <c:forEach>태그로 감싸주고

var : 내가 jsp파일에서 가져와서 대체해서 사용할 그 List의 명칭,
items :  Controller에서 보내줄 때의 객체 이름
varStatus : 반복되는 수라고 생각하면됨.

그래서 나는 List안에 HashMap으로 되어있기 떄문에 객체 이름 적고 . key 값 적어주면 값가져와준다!

ajax로 보낼까 생각했는데 Controller로 한번에 받는게 좋다고 하셔서 addObject와 JSTL을 이용해서 사용했다!

taglib에 이아이가 꼭 있는지 먼저 확인하자!! 나는 여기서 varStatus는 사용하지 않았다. 

 

 

반응형

+ Recent posts