在SpringMVC 中,控制器Controller的作用非常重要,它能够通过对应的接口,检查相关业务,帮助我们快速的检索代码中存在的漏洞缺陷。那springmvc怎么找到controller?下面来我们就来给大家讲解一下。
1. 首先应该检查对应的spring配置文件,检查对应的扫描包以及bean配置;
2. 然后通过配置文件反馈的信息,可以直接定位bean定义的以及注解标记的Contoller;
3. 关键字检索;
4. 命名规范(controller);
5. 两个重要的注解(@Controller、@RequestMapping);
找到Controller后即可快速理解对应的接口业务,然后根据对应的service实现以及dao层的SQL交互,结合Filter、Inteceptor过滤等场景进行漏洞缺陷的审计了。
Spring MVC 执行流程:
1. 用户点击某个请求路径,发起一个 HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器);
2. 由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
3. DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
4. HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller);
5. Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
6. HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
7. DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
8. ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
9. DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
10. 视图负责将结果显示到浏览器(客户端)。
springmvc如何创建controller?
在 src 目录下创建 net.biancheng.controller 包,并在该包中创建 RegisterController 和 LoginController 两个传统风格的控制器类(实现 Controller 接口),分别处理首页中“注册”和“登录”超链接的请求。
Controller 是控制器接口,接口中只有一个方法 handleRequest,用于处理请求和返回 ModelAndView。
RegisterController 的具体代码如下。
package 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 LoginController implements Controller { public ModelAndView handleRequest(HttpServletRequest arg0 , HttpServletResponse arg1) throws Exception { return new ModelAndView("/WEB-INF/jsp/register.jsp"); } }
LoginController 的具体代码如下。
package 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 RegisterController implements Controller { public ModelAndView handleRequest(HttpServletRequest arg0 , HttpServletResponse arg1) throws Exception { return new ModelAndView("/WEB-INF/jsp/login.jsp"); } }
其实Controller可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求,而对于创建Controller以及寻找Controller,作为程序员一定要掌握,才能更好的使用springmvc。最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: