Pemintas Spring MVC adalah serupa dengan penapis dalam pembangunan Servlet, yang digunakan untuk pra-memproses dan selepas memproses pemproses. Pemintas disambungkan ke dalam rantaian dalam susunan tertentu Rantai ini dipanggil Rantai Pemintas. Apabila kaedah atau medan yang dipintas diakses, pemintas dalam rantaian pemintas akan dipanggil mengikut susunan yang telah ditakrifkan sebelum ini. Pemintas juga merupakan pelaksanaan khusus idea AOP.
区别 | 过滤器(Filter) | 拦截器(Intercepter) |
使用范围 | 是 servlet 规范中的一部分,任何 Java Web 工程都可以使用 | 是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用 |
拦截范围 | 在 url-pattern 中配置了/*之后, 可以对所有要访问的资源拦截 | 在 |
Sesuaikan langkah pemintas:
① Cipta kelas pemintas untuk melaksanakan antara muka HandlerInterceptor
public class MyHandlerInterceptor1 implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { System.out.println("preHandle running..."); return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { System.out.println("postHandle running..."); } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { System.out.println("afterCompletion running..."); } }
② Konfigurasikan pemintas
<!--配置拦截器--> <interceptors> <interceptor> <mapping></mapping> <bean></bean> </interceptor> </interceptors>
③ Uji kesan pemintas pemintas (tulis kaedah sasaran)
@RequestMapping("/quick23") @ResponseBody public ModelAndView quickMethod23() throws IOException, ParseException { System.out.println("目标方法执行...."); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name","modelname"); modelAndView.setViewName("index"); return modelAndView; }
(lawati URL)
http://localhost:8080/project/quick23
Hasil cetakan konsol
Langkah Sama seperti di atas, semasa menulis operasi MyHandlerInterceptor2, cuma uji urutan pelaksanaan.
方法名 | 说明 |
preHandle() | 方法将在请求处理之前进行调用,该方法的返回值是布尔值Boolean类型的, 当它返回为false 时,表示请求结束,后续的Interceptor 和Controller 都不会 再执行;当返回值为true 时就会继续调用下一个Interceptor 的preHandle 方 法 |
postHandle() | 该方法是在当前请求进行处理之后被调用,前提是preHandle 方法的返回值为 true 时才能被调用,且它会在DispatcherServlet 进行视图返回渲染之前被调 用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象 进行操作 |
afterCompletion() | 该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图 之后执行,前提是preHandle 方法的返回值为true 时才能被调用 |
Atas ialah kandungan terperinci Cara menggunakan pemintas SpringMVC Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!