SpringMVC搞定以后就可以开始整合了
文章目录
- 一、随便讲点儿
-
- [1.1 SpringMVC底层原理 [ 执行流程](#1.1 SpringMVC底层原理 [ 执行流程)
- [1.2 SpringMVC组件](#1.2 SpringMVC组件)
- [二、xml配置 开发](#二、xml配置 开发)
-
- [2.1 web.xml配置前端控制器](#2.1 web.xml配置前端控制器)
- [2.2 springmvc.xml配置其他](#2.2 springmvc.xml配置其他)
- [2.3 开发处理器:就是写和上面不一样的东西](#2.3 开发处理器:就是写和上面不一样的东西)
- [2.4 前端视图](#2.4 前端视图)
- [2.5 配置Tomcat访问前端](#2.5 配置Tomcat访问前端)
- [三、注解 开发](#三、注解 开发)
-
- [3.2 springmvc.xml 配置其他](#3.2 springmvc.xml 配置其他)
- [3.3 开发处理器:注解版](#3.3 开发处理器:注解版)
一、随便讲点儿
SpringMVC是Spring框架的一个模块儿,是一个基于Spring的Web框架
1.1 SpringMVC底层原理 [ 执行流程
- 发送请求到
前端控制器DispatcherServlet
前端控制器
请求处理器映射器HandlerMapping
查找Handler(就是Controller
可以根据web.xml进行查找、注解进行查找处理器映射器
向前端控制器
返回Handler
前端控制器
调用处理器适配器
去执行Handler
处理器适配器
执行Handler
,向前端控制器
返回ModelAndView
前端控制器
请求进行视图解析视图解析器
解析完毕后返回View
- 前端控制器进行视图渲染
- 前端控制器向用户响应结果
1.2 SpringMVC组件
组件
- 前端控制器:接收请求 响应结果 相当于一个转发器 中央处理器
- 处理器映射器: 根据请求的url查找handler
- 处理器适配器: 按照一定的规则执行Handler
Handler处理器
:编写Handler的时候需要依照功能需求进行- 视图解析器:对视图进行解析,根据逻辑视图名得到真正的视图
视图
:View是一个接口,支持不同的视图
二、xml配置 开发
导入相关依赖就不说了嗷,还有头文件
自己搜吧
2.1 web.xml配置前端控制器
xml
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2.2 springmvc.xml配置其他
xml
<!--配置处理器适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--配置处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
<!--配置处理器:这玩意儿和上面的不一样-->
<bean name="/test.action" class="com.test"/>
2.3 开发处理器:就是写和上面不一样的东西
java
package com;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
//要实现org.springframework.web.servlet.mvc.Controller
public class test implements Controller {
//处理器处理完返回的是ModelAndView
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//测试数据
List<User> userList = new ArrayList<>();
userList.add(new User("zhangsan",20));
userList.add(new User("lisqi",21));
userList.add(new User("wangwu",23));
//创建ModelAndView
ModelAndView mav = new ModelAndView();
//将数据给到前端视图
mav.addObject("userList",userList);
//设置视图
mav.setViewName("test.jsp");
return mav;
}
}
2.4 前端视图
html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:forEach items="${userList}" var="users">
${users.name} ${users.age}
<hr/>
</c:forEach>
</body>
</html>
2.5 配置Tomcat访问前端
http://localhost:8080/MySpringMVC_war_exploded/`test.action`
三、注解 开发
上面的开发的时候,处理器要实现接口,所以不是很方便。
我们利用注解可以在一个处理器里面实现多个方法。
3.2 springmvc.xml 配置其他
xml
<!--注解日常扫描-->
<context:component-scan base-package="com"/>
<!--配置处理器适配器、配置处理器映射器:一句话的事儿-->
<mvc:annotation-driven/>
<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--设置前缀:拼接到视图的前面-->
<property name="prefix" value="/"/>
<!--设置后缀:拼接到视图的后面-->
<property name="suffix" value=".jsp"/>
</bean>
<!--配置处理器:不配置啦!直接注解-->
3.3 开发处理器:注解版
java
@Controller //注解:有四个
@RequestMapping("/")//窄化路径:访问时候的路径
public class Test {
@RequestMapping("test")
//还有其他的写法:主要是返回值和输入参数的区别。
public ModelAndView list() {
List<User> lists = new ArrayList<>();
lists.add(new User("aaa",13));
lists.add(new User("cccc",14));
lists.add(new User("mmm",15));
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("userList",lists);
modelAndView.setViewName("user/list");
return modelAndView;
}
}
唉......感觉自己效率好低,学海无涯啊