通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求 。然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet解析,以呈现结果或输出 。
这样就完成了典型的请求-响应周期的往返 。
今天整理了一下编写Spring MVC控制器的14个技巧,你今天get到了吗?(≧▽≦)/
1.使用@Controller构造型这是创建可以处理一个或多个请求的控制器类的最简单方法 。仅通过用构造型注释一个类@Controller,例如:
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMApping;@Controllerpublic class HomeController { @RequestMapping("/") public String visitHome() { return "home"; }}
如你所见,visitHome()方法通过重定向到名为home的视图来处理来自应用程序上下文路径(/)的请求 。
注意:@Controller原型只能在Spring的配置文件中启用注解驱动时使用:
<annotation-driven />
启用注释驱动时,Spring容器自动在以下语句指定的包下扫描类:<context:component-scan base-package="net.codeJAVA.spring" />
由@Controller 注释注释的类被配置为控制器 。这是最可取的,因为它很简单:无需在配置文件中为控制器声明bean 。注意:通过使用@Controller 注解,您可以拥有一个多动作控制器类,该类能够处理多个不同的请求 。例如:
@Controllerpublic class MultiActionController { @RequestMapping("/listUsers") public ModelAndView listUsers() { } @RequestMapping("/saveUser") public ModelAndView saveUser(User user) { } @RequestMapping("/deleteUser") public ModelAndView deleteUser(User user) { }}
正如你可以在上面的控制器类看,有处理三种不同的请求3种处理方法 /listUsers,/saveUser,和/deleteUser分别 。2.实现控制器接口在Spring MVC中创建控制器的另一种(也许是经典的)方法是让类实现 Controller 接口 。例如:
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class MainController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("Welcome main"); return new ModelAndView("main"); }}
实现类必须重写该 handleRequest() 方法,当匹配请求进入时,该方法将由Spring调度程序Servlet调用 。此控制器处理的请求URL模式在Spring的上下文配置文件中定义如下:<bean name="/main" class="net.codejava.spring.MainController" />
但是,此方法的缺点是控制器类无法处理多个请求URL 。3.扩展AbstractController类如果要轻松控制受支持的HTTP方法,会话和内容缓存 。扩展你的控制器 AbstractController 类是理想的选择 。
请考虑以下示例:
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.AbstractController;public class BigController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("You're big!"); return new ModelAndView("big"); }}
这将创建具有有关受支持的方法,会话和缓存的配置的单动作控制器,然后可以在控制器的bean声明中指定这些配置 。例如:
推荐阅读
- 你为什么要有一个自己的独立网站!
- MySQL 的 MRR 到底是什么?
- 静~美味鸡蛋烙饼的做法
- 发面葱香饼的做法
- 奈雪的茶宝藏茶哪个好喝 奈雪蜜桃宝藏撞撞茶好喝吗
- 罗永浩|交个朋友黄贺回应与罗永浩“分手”:没有矛盾、还会回来直播
- 婴儿房装修注意事项
- 华人在柬埔寨危险吗 柬埔寨属于哪个国家
- CVT变速器怕不怕热?高速120km/h连续行驶四五个小时会不会坏?
- 中国乐器图鉴!你了解几个?涨姿势了