文章目录
一、MVC
M(Model):模型(dao、service:数据模型,提供要展示的数据)
V(View):视图(jsp:模型的展示,一般是用户界面)
C(Controller):控制器(servlet:接受前段jsp/html的数据,需要处理的话交给service处理,service再返回结果,调用servlet跳转页面转发
、重定向
)
MVC框架的功能
- 将URL映射到Java类或Java类的方法
- 封装用户提交的数据
- 处理请求–调用相关的业务处理–封装相应数据
- 将相应的数据进行渲染到 jsp/html 页面进行展示
二、项目构建
1、新建一个Maven工程当做父工程,导入依赖,注意Tomcat10的版本,是jakarta.servlet
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
2、导入servlet 和 jsp的依赖
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
3、编写一个servlet类,用来处理用户请求
4、编写页面
5、在web.xml中注册Servlet
6、编写一个表单界面,用于提交
7、配置Tomcat
详情参考这一篇博客点此跳转
8、运行Tomcat,访问页面
三、SpringMVC
1.DispatcherServlet (前置控制器)
围绕 DispatcherServlet 框架设计,DispatcherServlet 的作用是将请求分发到不同的处理器,本质也是servlet
2.流程
1)配置 DispatcherServlet
2)配置springmvc_servlet.xml
3)构建Controller
4)解析
3.执行原理
1、用户发出请求,DispatcherServlet接收请求并拦截请求
2、HandlerMapping为处理器映射器
。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
3、HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。
4、HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。
5、HandlerAdapter表示处理器适配器
,其按照特定的规则去执行Handler。
6、Handler让具体的Controller执行。
7、Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
8、HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
9、DispatcherServlet调用ViewResolver(视图解析器
)来解析HandlerAdapter传递的逻辑视图名。
10、视图解析器将解析的逻辑视图名传给DispatcherServlet。
11、DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
12、最终视图呈现给用户。
四、使用注解开发
使用注解前需要在配置文件中配置:
<!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
<context:component-scan base-package="com.lzl.controller"/>
<!-- 让 SpringMVC 不处理静态资源 .css/.js/.html/.mp3/.mp4 -->
<mvc:default-servlet-handler/>
<!-- 支持 mvc 注解驱动 -->
<mvc:annotation-driven/>
<!-- 视图解析器 ViewResolver: 解析 DispatcherServlet 传过来的视图, 将解析的视图名字通过前缀和后缀拼接起来 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!-- 前缀 prefix -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!-- 后缀 suffix -->
<property name="suffix" value=".jsp"/>
</bean>
1.@Controller/@RestController
具体的业务操作在此注解下生成
区别:@RestController注释的类无法被 视图解析器 解析,返回的是一个JSON格式的字符串
2.@RequestMapping
相当于每个@RequestMapping下就是一个servlet,可以修饰方法,也可以修饰类,修饰类就是在url上加一个前缀
http://localhost:8080 /hello
/h1