SpringMVC是基于Spring的,是Spring中的一个模块,做web开发使用的。springmvc叫做**spring web mvc **说明它是spring的核心技术,做web开发,springmvc内部使用的是mvc架构模式。
mybatis 是数据访问层,Spring 是 业务逻辑层 用户界面层是视图和控制器。
SpringMVC是一个·容器,管理对象的,使用loC核心技术。springmvc管理界面层中的控制器对象。springmvc底层也是Servlet. 以servlet为核心,接收请求,处理请求。显示处理结果给用户。
处理用户的请求:
用户发起请求 ----SpringMVC ---->Spring ----MyBatis ---- mysql 数据库
DispatcherServlet 是框架一个 Servlet对象。 负责接收请求,响应处理结果。
DispatcherServlet 它的父类是HttpServlet。
DispatcherServlet 也叫做前端控制器(front controller)。
SpringMVC是管理控制器对象,原来是没有SpringMVC之前 使用 Servlet 作为控制器对象使用。现在通过SpringMVC容器创建一种叫做控制器的对象,代替Servlet行使控制器的角色。功能。
SpringMVC主要使用注解的方式创建。
idea2019自动生成的web.xml不支持el表达式 格式替换为
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
web-app>
简单的处理过程:
用户发起请求some.do—>Tomcat接收了请求 —> DispatcherServlet ----分配MyController(doSome()返回mv对象)—显示给用户了。
省略tomcat
用户some.do-----DispatcherServlet-------MyController
多了DispatcherServlet 才能在请求中增加功能。
如果使用servlet处理请求
用户发起请求-------没有其他对象------------Servlet
PS: WEB-INF 是受保护的目录,浏览器是无法访问的。在项目中受保护页面可能非常多,可以新建子包来存储受保护的页面文件 比如包名为“jsp”
http://localhost:8080/ch01_springmvc/WEB-INF/view/show.jsp 这个网址在浏览器中不能访问
http://localhost:8080/ch01_springmvc/index.jsp 点击超链接跳转到 http://localhost:8080/ch01_springmvc/some.do展示的页面就是/WEB-INF/view/show.jsp
index.jsp 中包含index.jsp 中有 some.do other.do add.do 控制器
DispatherServlet中央调度器(收集请求) 他是一个Servlet对象 有doGet doPost service() init() 将请求分派给控制器。
MyConroller控制器 对应some.do other.do
StudentController控制器 add.do
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
第一个springmvc
发起some.do的请求
/test/second.do
add.do请求
"show.jsp"对应了controller 中的ModelAndView(视图解析器)中的 mv.setViewName(“show”);也就是说当Controller收到请求后,进行处理,处理完成跳转 show.jsp。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
show
/WEB-INF/view/other.jsp,显示request作用域中的数据
msg数据: ${msg}
fun数据: ${fun}