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.