一、什么是MVC?
1、MVC就是一个分层架构模式:
2、SpringMVC的运行流程
二、什么是SpringMVC框架
springMVC它是spring框架的一个分支,该springMVC框架主要完成的功能是:==接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示== 可以把它理解为和Servlet干的工作是一样的。
三、SpringMVC搭建框架
1、创建maven-web工程
2、引入SpringMVC相关依赖
3、在web.xml文件中配置springMVC的前端控制器
3、在resources中创建spring的配置文件
4、在SpringMVC中添加扫描组件
5.创建一个controller类
四、如何在controller接受请求的参数
1、接受少量参数
只需要在方法的地方添加参数就行,但是这个参数名一定要和请求的参数名相同。
2、接受大量大参数
譬如:表单提交
我们需要封装一个实体类来接受这些参数:
封装的实体类:
前端界面:
name名称必须和是实体类的属性名一样,接受这些参数并赋值给实体类对象
2.1发现接受的参数值乱码:---只能添加过滤器
(1)自己创建编码过滤器. jdk1.8一定要重写init和destory方法 1.9以后可以不写
public class MyEncodingFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
filterChain.doFilter(servletRequest,servletResponse);
}
public void destroy() {
}
}
web.xml:
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>com.ykq.filter.MyEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(2)springmvc提供了一个编码过滤器.
3、接受的参数含有日期类型
解决办法:
在时间类型的属性上添加一个注解:@DateTimeFormat(pattern = "yyyy-MM-dd")
在springmvc配置文件上开启注解驱动
<!--开启注解驱动-->
<mvc:annotation-driven/>
五、处理静态资源
无法加载图片: 原因:springmvc的前端控制器DispatcherSerlvet也把静态资源拦截器。放行静态资源
<!--放行静态资源:哪些资源为静态资源。css img js html-->
<mvc:default-servlet-handler/>
六. 如何把controller数据返回到网页并回显。
@RequestMapping("/list3")
public String list3(HttpSession session){
Student student=new Student(3,"tom","120@qq.com",new Date());
session.setAttribute("user",student);
return "list.jsp"; //转发
}
七. 如何使用重定向跳转
在方法的返回字符串的内容时加上redirect:
@RequestMapping("list5")
public String list5(){
System.out.println("!!!!!!!!!!!!!!!!!");
return "redirect:list.jsp"; //当springmvc看到你返回的字符串钟含有redirect:时 它认为你要进行重定向跳转
}
八. springmvc返回json数据
当发生异步请求时,ajax请求时,我们需要返回json数据
SpringMVC如何返回json数据,
1.内置了一个jar. jackson的jar包
<!--jackson依赖 可以把java对象转换为json对象-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2.2</version>
</dependency>
2. 在controller返回的数据类型变成javabean对象。
@RequestMapping("json01")
@ResponseBody //作用:把java对象转换为json对象
public List<Student> json01(){ //这里返回的类型为java对象。 之前都是返回字符串
List<Student> list=new ArrayList<Student>();
list.add(new Student(4,"张学友","220@qq.com",new Date()));
return list; //当中json
}
九、springmvc的全局异常处理类
全局异常处理类的作用: 当controller发生异常,则有全局异常类来处理并执行相应的处理方法。
如何使用全局异常处理类
1.创建一个异常类: @ControllerAdvice注解
@ControllerAdvice //表示该为类controller的异常处理类
public class MyExceptinHandle {
@ExceptionHandler(value = RuntimeException.class) //当发生RuntimeException就会触发该方法
public String error(){
return "error.jsp";
}
@ExceptionHandler(value = Exception.class) //当发生Exception就会触发该方法
public String error2(){
return "error2.jsp";
}
}
2.保证springmvc能够扫描到该类。
如果是ajax请求返回的应该是一个json数据。
十、SpringMVC拦截器
过滤器: 过滤掉某些资源,
拦截器只会拦截controller层的资源路径。
1.创建一个类,并实现HandlerInterceptor
public class MyInterceptor implements HandlerInterceptor {
//拦截器的处理方法。
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("经过了该拦截器");
return true;//true:表示拦截器放行 false:不放行
}
}
2.把该类注册到springmvc.xml配置文件上。
十一、文件上传
1.文件上传的原理
2.文件上传到本地服务器
2.1添加文件上传的依赖
2.2 创建一个页面