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

posted @   程序人生♨︎  阅读(334)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

点击右上角即可分享
微信分享提示