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 请求转发
控制层方法执行后继续执行另一个控制层方法