【学习笔记】注解开发SpringMVC
步骤:
-
注册DispatcherServlet,关联spring配置文件
<!--注册DispatherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--关联spring配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.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>
-
添加spring配置文件
在之前我们需要在spring配置文件中注册处理器映射器(xxxHandlerMapping),处理器适配器(xxxHandlerAdapter),现在通过annotation-dirven帮助我们自动完成上面两个的注入
视图解析器还是需要我们手动添加
<!--自动扫描该包下的注解,使之生效--> <contest:component-scan base-package="com.wang.controller"/> <!--让springmvc不处理静态资源--> <mvc:default-servlet-handler/> <!--自动注入处理器适配器和处理器映射器--> <mvc:annotation-driven/> <!--视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
除了annotation-dirven之外,我们还需要contest:component-scan来扫描某个包下的注释,使之生效,还有mvc:default-servlet-handler来让springmvc不处理静态资源
-
写一个Controller,用@Controller来注解,不需要在spring配置文件中注册bean了,在这个Controller中的方法,返回值为String的,返回值就是视图的名字,会被视图解析器处理。
封装数据可以使用对象Model来完成,调用Model的addAttribute()方法
要访问的url,通过注解@RequestMapping来指定,如果把@RequestMapping放在类名上是表示多级路径。url必须要逐级访问 localhost:8080/hello/h1 或 localhost:8080/h1
package com.wang.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/hello") public String helloSpringMVC(Model model){ model.addAttribute("msg","注解开发springMVC"); return "hello"; } }
使用springMVC开发必须配置的三大件:
处理器映射器、处理器适配器、视图解析器
前两个通过开启注解驱动就可以省去
关于视图解析器
用@RequestMapping注解修饰方法后,可以不配置视图解析器,直接return即可,但是需要将资源的全路径都写出来,如下:
@RequestMapping("/hello")
public String helloSpringMVC(Model model){
model.addAttribute("msg","注解开发springMVC");
return "/WEB-INF/jsp/hello.jsp";
}
这种方式是通过转发的方式,进行跳转,也可以显示地定义,需要将路径前面加上forword:
return "faword:/WEB-INF/jsp/hello.jsp";
如果想要使用重定向,只需要把forword: 改成 redirect:
上面是没有配置视图解析器,如果配置了视图解析器,可以省略全路径
//默认是转发
return "hello";
//重定向
return "redirect:/hello.jsp";