入门
三层架构SpringMVC入门案例(重点)入门案例工作流程分析(重点)SpringMVC技术架构图(重点)6大核心组件 基础配置
controller加载控制静态资源加载中文乱码处理 请求
请求参数(重点)
普通类型(String,包装类,基本数据类型)POJO类型参数数组类型参数&集合类型参数 类型转换器(Data的格式转换默认只转yyyy/MM/dd)
自定义类型转换器 请求映射 @RequestMapping(重点) 响应
无数据跳页面
页面前后缀页面跳转方式 带数据跳页面【重点】
方式一: 使用HttpServletRequest类型形参进行数据传递方式二:使用Model类型形参进行数据传递方式三:使用ModelAndView类型参数进行数据传递,将该对象作为返回值传递给调用者 纯数据返回(JSON)【重点】
方式一、方式二 :返回String返回JSON
方式一:基于response返回数据的简化格式(返回结果是中文乱码)方式二:【推荐】使用SpringMVC提供的消息类型转换器将对象与集合数据自动转换为JSON数据返回JSON集合数据方式三: (了解)使用SpringMVC注解驱动简化配置 Servlet相关接口
请求/响应对象获取、原生Session对象获取头数据获取cookie数据获取Session数据获取/设置
Session数据获取Session数据设置(了解) 数据封装底层实现
入门 三层架构表现层:数组展示业务层:业务处理数据层 :数据操作
SpringMVC
基于java实现MVC模型的轻量级web框架
优点
使用简单性能突出灵活性强
入门案例(重点)
pom.xml
类型转换器(Data的格式转换默认只转yyyy/MM/dd)4.0.0 org.example spring-web-mvc 1.0-SNAPSHOT war 8 8 org.springframework spring-context 5.2.0.RELEASE javax.servlet javax.servlet-api 4.0.1 javax.servlet.jsp jsp-api 2.1 org.springframework spring-web 5.2.0.RELEASE org.springframework spring-webmvc 5.2.0.RELEASE aliyun-maven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ aliyun-maven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ src/main/java ** //集合 //http://localhost:8080/reqParam10?nick=zs&nick=zzz @RequestMapping("/reqParam11") public String requestParam11(@RequestParam List nick){ for (String s : nick) { System.out.println(s); } return "page.jsp"; } }
@DateTimeFormat
public String reqParam13(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date){
System.out.println("date=" + date);
return "page.jsp";
}
@DateTimeFormat(pattern="yyyy-MM-dd") private Date birthday;自定义类型转换器
package com.zs.converter; import org.springframework.core.convert.converter.Converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Pattern; public class StringToDate implements Converter{ @Override public Date convert(String s) { SimpleDateFormat sdf=simpleDateFormat(s); Date date=null; try { date=sdf.parse(s); } catch (ParseException e) { e.printStackTrace(); } return date; } public SimpleDateFormat simpleDateFormat(String source){ SimpleDateFormat sdf = new SimpleDateFormat(); if (Pattern.matches("^\d{4}-\d{2}-\d{2}$", source)) { // yyyy-MM-dd sdf = new SimpleDateFormat("yyyy-MM-dd"); } else if (Pattern.matches("^\d{4}-\d{2}-\d{2} \d{2}-\d{2}-\d{2}$", source)) { // yyyy-MM-dd HH-mm-ss sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); } else if (Pattern.matches("^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$", source)) { // yyyy-MM-dd HH:mm:ss sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } else if (Pattern.matches("^\d{4}/\d{2}/\d{2}$", source)) { // yyyy/MM/dd sdf = new SimpleDateFormat("yyyy/MM/dd"); } else if (Pattern.matches("^\d{4}/\d{2}/\d{2} \d{2}/\d{2}/\d{2}$", source)) { // yyyy/MM/dd HH/mm/ss sdf = new SimpleDateFormat("yyyy/MM/dd HH/mm/ss"); } else if (Pattern.matches("^\d{4}\d{2}\d{2}$", source)) { // yyyyMMdd sdf = new SimpleDateFormat("yyyyMMdd"); } else if (Pattern.matches("^\d{4}\d{2}\d{2} \d{2}\d{2}\d{2}$", source)) { // yyyyMMdd HHmmss sdf = new SimpleDateFormat("yyyyMMdd HHmmss"); } else if (Pattern.matches("^\d{4}\.\d{2}\.\d{2}$", source)) { // yyyy.MM.dd sdf = new SimpleDateFormat("yyyy.MM.dd"); } else if (Pattern.matches("^\d{4}\.\d{2}\.\d{2} \d{2}\.\d{2}\.\d{2}$", source)) { // yyyy.MM.dd HH.mm.ss sdf = new SimpleDateFormat("yyyy.MM.dd HH.mm.ss"); }else{ System.out.println("TypeMismatchException"); throw new RuntimeException(); } return sdf; } }
package com.zs.controller;
import com.zs.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Date;
@Controller
public class DateController {
//http://localhost:8080/reqParam12?date=2022-11-11
//http://localhost:8080/reqParam12?date=2022/11/11
@RequestMapping("/reqParam12")
public String requestParam12(Date date){
System.out.println("date = " + date);
return "page.jsp";
}
}
请求映射 @RequestMapping(重点)
com.fasterxml.jackson.core
jackson-core
2.9.9
com.fasterxml.jackson.core
jackson-databind
2.9.9
com.fasterxml.jackson.core
jackson-annotations
2.9.9
方式一:基于response返回数据的简化格式(返回结果是中文乱码)
方式二:【推荐】使用SpringMVC提供的消息类型转换器将对象与集合数据自动转换为JSON数据
该方式可以解决中文乱码问题
这里的手工添加信息类型转换器也可以不用添加,直接添加 mvc注解驱动即可



