1.添加依赖
2.配置文件
a)web.xml 设置前端控制器
1)要设置她的优先级
2)指定SpringMVC配置文件的路径
b)SpringMVC.xml
1)开启包扫描
2)视图解析器:给Controller返回的视图名称添加前缀和后缀
a):视图的前缀
b):视图的后缀
3.自定义Controller
1)@Controller:表示当前的是web层,把当前bean交给spring容器创建
2)@RequestMapping 把方法名称作为一个映射地址
3)方法直接返回视图名称
参数传递
1.表单属性和方法形参一致,不需要做任何处理SpringMVC会自动封装
2.表单属性和方法形参不一致,需要用@RequestParam注解建立映射关系
3.表单属性要和对象属性保持一致,属性会自动封装
4.可以通过@DataTimeFormat指定用户时间格式化格式,默认是yyy/MM/dd
乱码问题
编码过滤器SpringMVC已经帮我们写好,我们只需要配置就可以了
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
跳转
转发
1.方法直接返回视图名称,SpringMVC会自动添加前后缀
2.方法返回"forward:xxx.jsp",这种方式需要手动设置视图前缀和后缀
重定向视图:
1.方法返回"redirect:xxx.jsp"这种方式需要手动设置视图的前后缀
跳转或者重定向Controller
1.方法返回redirect:controller的路径
参数的传递
1.ModelAndView
2.Model
3.ModelMap
4.原生的方式
@SessionAttributes:拷贝req作用域中的数据到session作用域
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@Controller
@SessionAttributes(names = {"msg_map2","msg_map"})//拷贝req作用域中的数据到session作用域
public class UserController {
/**
*
* 原生的传参
* @return
*/
@RequestMapping("/test")
public String test(HttpServletRequest request){
request.setAttribute("msg","Hello Word");
System.out.println("UserController.test");
return "forward:ok.jsp";
}
/**
* 使用ModAndView传递参数
* @return
*/
@RequestMapping(value = "test2")
public ModelAndView test2(){
//1.创建要传递的参数
ModelAndView modelAndView = new ModelAndView();
//2.设置要传递的参数
modelAndView.addObject("msg","使用ModelAndView传递的参数");
//3.设置需要跳转的页面
modelAndView.setViewName("ok");//转发过去的
return modelAndView;
}
/**
* 使用Model传递参数
* @param model
* @return
*/
@RequestMapping(value = "/test3")
public String test3(Model model){
System.out.println("UserController.test3");
//1.给model中添加数据
model.addAttribute("msg_model","这是model传递的参数");
//2.转发到ok视图
return "ok";
}
@RequestMapping(value = "/test4")
public String test4(ModelMap map, HttpSession session){
System.out.println("UserController.test4");
map.put("msg_map","这个是通过ModelMap传递参数1");//放在request作用域
map.put("msg_map2","这个是通过ModelMap传递参数1");
//session.setAttribute("msg");
return "ok";
}
/**
* 删除用@SessionAttributes拷贝到session作用域中的数据
* @return
*/
@RequestMapping(value = "/removeSessionAttrData")
public String removeSessionAttrData(SessionStatus sessionStatus){
System.out.println("UserController.removeSessionAttrData");
sessionStatus.setComplete();
return "ok";
}
}
静态资源处理
1.在SpringMVC颞部处理的静态资源
<mvc:resources mapping="/js/**" location="/js/"></mvc:resources>
2.把SpringMVC处理不了的请求转交给默认的servlet,这样比较安全
<mvc:default-servlet-handler default-servlet-name="default"/>
JSON转换
1.添加jackson依赖
2.@RequestBody:把方法返回值直接响应给用户
a):productes生成的数据,这里可以设置数据类型编码