文章目录
前言
SpringMVC的核心是前端控制器
① Model:只适合存数据
② ModelMap:继承LinkMap,和他的一些方法
③ ModelAndView:存数据、控制图层跳转
一、配置文件法
web.xml
<!--注册ServletDispatcher 前端控制器-->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>configConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--启动级别-->
<load-on-setup>1</load-on-setup>
</servlet>
<!--
匹配请求
/ :不包括jsp
/* :包括jsp
-->
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc-servlet.xml
<!--1.处理器映射器 HandlerMapper-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--2.处理器适配器 HandlerAdapter-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--3.视图解析器 模板引擎:Thymeleaf Freemarker-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/">
<!--后缀-->
<property name="suffix" value=".jsp">
</bean>
<bean id="/hello" class="com.controller.HelloController"/>
HelloController
public class HelloController{
@Overrides
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//模型和视图
MedelAndView mv = new ModelAndView();
//封装对象,存在mv中
mv.addObject("msg","HelloServlet");
//封装要跳转的路径在mv中
mv.setViewName("test") // /WEB-INF/jsp/test.jsp
return mv;
}
}
二、注解法
web.xml
同上
spring-sevlet.xml
<!--自动扫描包,使注解生效-->
<context:conponent-scan base-package="com.controller">
<!--让Spring不处理静态资源-->
<mvc:default-servlet-handler/>
<!--代替DefaultAnnotationHandlerMapping和AnnotationMethod-->
<mvc:annotation-driver>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="resourceViewResolver">
<property name="prefix" value="/WBE-INF/jsp/">
<property name="suffix" value=".jsp">
</bean>
HelloController
@Controller
public class UserController{
//响应地址
@RequestMapping(/hello)
public String hello(Model model){
//封装数据
model.addAttribute("msg","HelloSpringMVC");
return "test"; // /WEB-INF/jsp/test.jsp
}
}
三、Restful规范
方法一
/*
RequrestMethod.GET
RequrestMethod.POST
RequrestMethod.PUT
RequrestMethod.DELETE
*/
@RequestMapper(value="/test/{a}/{b}",method=RequestMethod.Get)
public String test(@PathVariable int a,@PathVariable int b,Model model){
xxx
}
方法二
/*
@GetMapping 查
@PostMapping 增
@PutMapping 改
@DeleteMapping 删
*/
@GetMapping("/test/{a}/{b}")
public String test(@PathVariable int a,@PathVariable int b,Model model){
xxx
}
五、其他
1.转发、重定向
//代替视图解析器
return "forward"index.jsp"; //转发
return "redirect"index.jsp"; //重定向
2.传参
传变量
public String test(@RequestParam("name") String name,Model model){}
传对象
//属性会自动匹配
public String test(User user,Model model){}