springMVC controller配置方式总结
第一种:不配置controller 的bean。(注解的方式)
在dispatch-servlet.xml中,在beans节点下配置context:component-scan节点
1 2 | <!-- 启用spring注解--> < context:component-scan base-package="com.loong.controller" /> |
这种方式需要在Controller对象上使用@RequestMapping("hello")指定方法对应处理的路径,比如一下两种方式:
举例1:url:http://localhost:8080/demo1/welcome/hello
1 2 3 4 5 6 7 8 9 | @Controller @RequestMapping ( "/welcome" ) public class HelloWorldController { @RequestMapping (value= "/hello" ,method=RequestMethod.GET) public String printWelcome(ModelMap model){ model.addAttribute( "message" , "Spring 3 MVC Hello World" ); return "hello" ; } } |
举例2:url:http://localhost:8080/demo1/home
1 2 3 4 5 6 7 | @Controller public class HomeController { @RequestMapping ( "home" ) public String home(){ return "home" ; } } |
第二种方式配置controller的bean(url匹配bean)
在xxx-servlet.xml中
1 2 3 4 5 6 7 | < context:component-scan base-package="com.controller" /> <!-- HandlerMapping --> < bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- HandlerAdapter --> < bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 处理器 --> < bean name="/hello" class="com.controller.HelloWorldController" /> |
BeanNameUrlHandlerMapping:表示将请求的URL和Bean名字映射,如URL为 “上下文/hello”,则Spring配置文件必须有一个名字为“/hello”的Bean,上下文默认忽略。
SimpleControllerHandlerAdapter:表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。
提示:关于写不写HandlerMapping 和HandlerAdapter的问题,参考:
http://www.imooc.com/article/4293
这种情况Controller类要实现Controller接口:
1 2 3 4 5 6 7 8 9 10 11 | public class HelloWorldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { // TODO Auto-generated method stub ModelAndView mv = new ModelAndView(); mv.addObject( "message" , "HelloWorld" ); mv.setViewName( "hello" ); return mv; } } |
第三种配置Controller中bean的方式,使用一个统一配置集合,对各个URL对应的Controller做关系映射
在xxx-servlet中
1 2 3 4 5 6 7 8 9 10 | < bean id="loginController" class="com.msm2.controller.LoginController" /> < bean id="mainController" class="com.msm2.controller.MainController" /> < bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> < property name="mappings"> < props > < prop key="login">loginController</ prop > < prop key="userLogin">mainController</ prop > </ props > </ property > </ bean > |
在Controller类中
url:http://localhost:8080/msm2/login
1 2 3 4 5 6 7 8 9 10 | @Controller public class LoginController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject( "login" ); return mav; } } |
原文地址:http://www.cnblogs.com/ysloong/p/6388962.html
谢谢您的来访,欢迎关注交流!以下是我的个人联系方式
电子邮箱:spring.wind2006@163.com,QQ:402085437,微信号:tm402085437
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现