SpringMVC学习 ---- @RequestMapping
基于注解配置SpringMVC环境
配置前端控制器
不论是基于xml文件,还是注解,都必须在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:*.xml</param-value>
</init-param>
</servlet>
<!--将前端控制器映射到/-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
开启SpringMVC注解,及配置视图解析器
<context:component-scan base-package="com.github.excellent.controller"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix" value=".jsp"/>
<property name="prefix" value="myjsp/"/>
</bean>
基于注解的配置会默认配置处理器映射器,处理器适配器
编写Controller
@Controller
public class HelloControler {
// 决定请求的url
@RequestMapping(path = "/hehe")
public ModelAndView hello(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("hello","hello");
// 必须和对应的jsp名字一致,否则404
modelAndView.setViewName("hello");
return modelAndView;
}
}
- @Controller,就和在xml文件中配置处理器的作用一样,将对象交给spring容器管理
- @RequestMapping(path = “/hehe”) 指定访问的url
@RequestMapping的常用属性
- 路径相关
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
这两个属性的作用一样,都是指定访问的url。
- 请求方式相关
RequestMethod[] method() default {};
public enum RequestMethod {
GET,
HEAD,
POST,
PUT,
PATCH,
DELETE,
OPTIONS,
TRACE;
private RequestMethod() {
}
}
只有当请求参数一致时,才可以访问成功,当参数不匹配时会报405.
- 请求参数相关
String[] params() default {};
当只指定参数的名称时,只需要提交的参数中包含指定的参数名称即可,当参数值被指定时,要求提交的参数值也必须一致,否则报400.