springMVC最重要的就是前端控制器DispatchServlet了。他是整个springMVC应用的核心。
需要将它配置在web.xml中。
1.DispatchServlet的配置
<!--配置前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化加载配置文件 spring ioc 初始化-->
//如果没有配置init-param,应用程序默认会到WEB-INF目录下找servletName-servlet.xml的配置文件
//servletName指的是前端控制器的名称
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。-->
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.Controller注解类型:使用该注解时不需要实现Controller接口。只需要将该注解标注在类上面就表示他是一个控制器了,然后通过spring的扫描机制找到该类就行,<context:component-scan>
与实现接口相比较,使用注解可以同时处理多个请求,而使用接口一次只能处理一个请求。
3.RequestMapping注解类型
RequestMapping用于映射一个请求或者一个方法。可以标注在类上,也可以标注在方法上。
例如
@Controller
@RequestMapping("/jason")
public class FirstController {
@RequestMapping("/test")
public String handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model)
throws Exception {
model.addAttribute("msg", " hello springMVC "); return "redirect:http://www.baidu.com";
}
}
请求路径则变为http://localhost:8080/springmvc/jason/test 3.1RequestMapping注解的属性
RequestMapping注解的属性有7个,都是可选属性,默认为value,例如
@RequestMapping(value="/jason"),但是当只有一个属性的时候,与@RequestMapping("/jason")是一样的
4.组合注解
GetMapping:匹配get方式的请求
PostMapping:匹配post方式的请求
PutMapping:匹配put方式的请求
DeleteMapping:匹配Delete方式的请求
PatchMapping:匹配Patch方式的请求 get和post的区别:
最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的;
GET请求的URL传参有长度限制,而POST请求没有长度限制;
GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制
详情参见:https://www.cnblogs.com/logsharing/p/8448446.html 5.请求处理方法的参数类型和返回类型
请求处理方法的参数类型比较多,这里主要说返回类型 请求处理的返回类型主要有:
ModelAndView,Model,Map,View,String,void,HttpEntity<?>或者ResponseEntity<?>,Callable<?>,DeferredResult<?> 最常见的就是ModelAndView,String,void了
其中ModelAndView类型中可以添加Model数据,并指定视图,
String类型的返回值可以跳转视图但是不能携带数据,要与Model参数一起搭配使用。
而void类型主要在异步请求时使用,它只返回数据,不会跳转视图。 String类型除此之外还可以(redirect)重定向和(forward)请求转发。 6.视图解析器
<!--定义视图解析器-->
<bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
可以设置前缀和后缀,将路径简化。