SpringMVC开发流程以及学习总结

Posted You295

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC开发流程以及学习总结相关的知识,希望对你有一定的参考价值。

SpringMVC开发流程以及学习总结

一:开发流程

1.引入依赖

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.3.9</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.12.4</version>
		</dependency>

2.创建实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book 
	
	private Integer id;
	private String title;
	private String author;
	private Double price;


3.配置loc容器

创建:resources/spring/springmvc/springmvc-servlet.xml
1)在springmvc-servlet.xml中加入标签


4.写context:component-scan

<!-- 扫描放在容器中的包 -->
    <context:component-scan base-package="com.dyit.spring.controller"/>
    //创建com.dyit.spring.controller

5.放行静态资源

<!-- 排除拦截(放行)静态资源 -->
    <mvc:resources location="static/" mapping="static/**"/>
    //在webapp包下创建static文件夹

6.加上识别注解的mvc:annotation-driven

<!-- 识别注解 -->
    <mvc:annotation-driven></mvc:annotation-driven>

到此容器配置完毕:

7.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema
-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>spring-springmvc-hello</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  
  <!--配置springmvc的servlet,DispatcherServlet  -->
  
  
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			
			<!-- 配置loc容器 -->
			<param-value>classpath:spring/springmvc/springmvc-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<!-- 表示拦截所有的请求 -->
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
  
</web-app>

8.写controller

@Controller  //被springmvc接管
public class BookController 
    
	@RequestMapping("/findBook")  //发起请求
	@ResponseBody   //包装为json对象
	public Book findBook() 
		Book book = new Book();
		book.setTitle("水浒传");
		return book;
	

8.启动main用postman测试,或者与前端页面连接进行前后端交互

二:涉及到的组件分析

1、前端控制器DispatcherServlet(不需要程序员开发),由框架提供,在web.xml中配置。
作用:接收请求,响应结果,相当于转发器,中央处理器。

2、处理器映射器HandlerMapping(不需要程序员开发),由框架提供。
作用:根据请求的url查找Handler(处理器/Controller),可以通过XML和注解方式来映射。

3、处理器适配器HandlerAdapter(不需要程序员开发),由框架提供。
作用:按照特定规则(HandlerAdapter要求的规则)去执行Controller。

4、控制器Controller(需要工程师开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。
作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。

5、视图解析器ViewResolver(不需要程序员开发),由框架提供
作用:进行视图解析,把逻辑视图名解析成真正的物理视图。
SpringMVC框架支持多种View视图技术,包括:jstlView、freemarkerView、pdfView等。

6、视图View(需要工程师开发)
作用:把数据展现给用户的页面
View是一个接口,实现类支持不同的View技术(jsp、freemarker、pdf等)

三:知识点总结

1.springmvc框架是什么?

它是基于java实现了MVC设计模式的请求驱动类型的轻量级web框架,通过将Model,View,Controller层分离,将web层进行解耦,将web应用分成清晰的几部分,简化了开发,减少了出错,方便了开发人员之间的配合。

2.springmvc的流程
(1)用户发送请求至前端控制器DispatcherServlet;
(2)DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handler;
(3)处理器映射器根据请求url找到具体的处理器Handler,生成处理器对象及处理器拦截器(如果有则生成),一并返回给DispatcherServlet;
(4)DispatcherServlet 调用 HandlerAdapter处理器适配器,请求执行Handler;
(5)HandlerAdapter 经过适配调用 具体处理器进行处理业务逻辑;
(6)Handler执行完成返回ModelAndView;
(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
(9)ViewResolver解析后返回具体View;
(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
(11)DispatcherServlet响应用户。

3.springmvc的优点
1).支持各种的视图技术,不仅仅局限于jsp;
2).支持各种请求资源的映射策略。
3).角色分配的很清晰:前端控制器,请求到处理器映射,处理器适配器,视图解析器。
4).与spring框架集成(如loc容器,Aop等)

4.常用的注解有哪些
@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户

5.SpingMvc中的控制器的注解一般用哪个?有没有别的注解可以替代?

答:一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层,除此之外,一般不用别的注解代替。

6.springmvc的控制器是单例模式,有什么问题,要怎么解决?

答:在多线程访问的时候,和产生线程不安全问题,不能使用同步,会影响程序的性能。 解决:不在控制器中编写成员属性。

以上是关于SpringMVC开发流程以及学习总结的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC开发流程以及学习总结

《SpringMVC从入门到放肆》SpringMVC开发Controller的方法总结

深入学习SpringMVC框架以及个人学习总结

SpringMVC框架详解(学习总结)

SpringMVC总结以及在面试中的一些问题.

[Java面试六]SpringMVC总结以及在面试中的一些问题.