자세한 내용은 SpringMVC 차단기를 사용하여 Controller 반환 값을 제어합니다.
5084 단어 spring가로막다controller
StringResult 메모를 정의하여 메서드에 액세스할 때 StringResult의 컨텐트를 반환합니다.Debug 메모를 사용하여 StringResult의 컨텐트를 반환할 방법을 정의합니다.
Debug 기본값은 TRUE
package com.tiamaes.dep.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Debug {
boolean value() default true;
}
package com.tiamaes.dep.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface StringResult {
String value();
}
메모를 정의한 후 차단기 클래스를 씁니다. 차단기는 Handler Interceptor를 실현해야 합니다.
package com.tiamaes.dep.interceptor;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.tiamaes.dep.annotation.Debug;
import com.tiamaes.dep.annotation.StringResult;
public class DebugInterceprot implements HandlerInterceptor {
private boolean debug = true;
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
// Debug ( ),
if(!this.debug) return true;
if(handler instanceof HandlerMethod){
HandlerMethod method = (HandlerMethod)handler;
Debug isDebug = method.getMethodAnnotation(Debug.class);
StringResult stringResult = method.getMethodAnnotation(StringResult.class);
// @StringResult
// Debug ,
if(stringResult==null||(isDebug !=null && isDebug.value() == false)){
return true;
}else{
// , stringResult
PrintWriter out = response.getWriter();
out.print(stringResult.value());
}
}
return false;
}
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
public boolean isDebug() {
return debug;
}
public void setDebug(boolean debug) {
this.debug = debug;
}
}
XML 구성
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.tiamaes.dep.interceptor.DebugInterceprot">
<property name="debug" value="true"/>
</bean>
</mvc:interceptor>
</mvc:interceptors>
Controller의 쓰기
package com.tiamaes.dep.system.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.tiamaes.dep.annotation.Debug;
import com.tiamaes.dep.annotation.StringResult;
@Controller
@RequestMapping("/test")
public class AspectTestController {
@RequestMapping("/1")
@ResponseBody
//@Debug(false)
@StringResult("Interceptor")
public String test1(){
return "The controller request!";
}
}
이 방법은 컨트롤러에 있는 방법이 제대로 작성되지 않았을 때 프론트 데스크톱 기능을 테스트할 수 있다. 사고방식은 대체로 이렇다. 더욱 강력한 기능은 여러분의 개발이 필요하다.이것은 단지 나의 돌발적인 기상일 뿐, 실제로 프로젝트에서 시험해 본 적이 없다.프로젝트에서 시험해 본 사람이 있으면 효과를 알려주세요. 감사합니다.만약 누군가가 사용한다면, String Result 주석을 보류하는 것을 권장합니다. 왜냐하면 이 주석은 당신의 방법이 어떤 결과를 되돌려야 하는지 알 수 있기 때문입니다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.