1. DispatcherServlet

DispatcherServlet在程序中充当着中英控制器的角色。在使用时,需要将其配置在项目的web.xml文件中。

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
          org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

如果没有通过 init-param 元素配置,则应用程序会默认去WEB-INF目录下寻找以servletName-servlet.xml方式命名的配置文件.

2.@Controller注解类型

Controller注解类型用于指示Spring类的实例是一个控制器,注解形式为@Controller。该注解在使用时不需要再实现Controller接口,只需要将@Controller注解加入到控制器类上,然后通过Spring的扫描机制找到有注解的控制器即可。

为了保证Spring能够找到控制器类,还需要在Spring MVC的配置文件中添加相应的扫描配置信息以及mvc注解驱动,

<context:component-scan base-package=“cn.lctvu.controller” />

<mvc:annotation-driven />

3.RequestMapping注解类型

Spring通过@Controller注解找到相应的控制器类后,还需要知道控制器内部对每一个请求是如何处理的,这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法。使用时,可以标注在一个方法或一个类上。

1.标注在方法上:作为请求处理方法在程序接收到对应的URL请求时被调用:

@Controller
public class TestController{
    @RequestMapping(value="/test")
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
        //创建ModelAndView对象
        ModelAndView mav=new ModelAndView();
        //向模型对象中添加数据
        mav.addObject("msg","RequestMapping标注在方法上");
        //设置视图名
        mav.setViewName("/WEB-INF/jsp/test1.jsp");
        //返回ModelAndView对象
        return mav;
        
    }
}

2.标注在类上:该类中的所有方法都将映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所指定的路径下。

@Controller
@RequestMapping(value="/hello")
public class FirstController{
    @RequestMapping(value="/testController2")//窄化请求
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) {
        //创建ModelAndView对象
        ModelAndView mav=new ModelAndView();
        //向模型对象中添加数据
        mav.addObject("msg","RequestMapping标注在类上");
        //设置逻辑视图名
	        mav.setViewName("/WEB-INF/jsp/test2.jsp");
        //返回ModelAndView对象
        return mav;
    }
}

4 controller方法返回值

1、返回void
在异步请求时使用,它只返回数据,而不会跳转视图 ,所以不推荐使用。
2、 返回字符串
可以跳转视图,但不能携带数据
3、 Redirect重定向
将返回结果重定向到一个url地址
4、forward 请求转发
控制层方法执行后继续执行另一个控制层方法

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐