Article catalog
- What is spring MVC
A long time ago, SSH was the most popular architecture mode( Spring Struts encapsulates servlet s hibernate );–> Baidu Encyclopedia SSH Framework
Then came SSM( Spring Struts Mybatis ) ; Note that it's not working here yet Spring MVC , Because the web module was not very good during the early development of spring, the web part here is used in the early stage Struts ;
Later, the SSM framework says( Spring Spring MVC Mybatis ) Combination;
Now let's talk about this spring mvc ; spring mvc is a module of spring; they do not need any intermediate layer to connect; spring mvc encapsulates servlet s;
Spring mvc is a web framework based on mvc; Receive external requests, parse parameters and pass them to the service layer
In fact, spring MVC encapsulates the servlet, receives the request sent by the client, calls the service layer for processing, and then responds the processing result to the client
Well, let's see what it is MVC ; MVC is an early development architecture idea;
from M layer (module model layer) [including pojo entity class, dao data interaction and service service];
V layer (view layer) [displayed page, such as jsp (actually servlet)];
Layer C (Controller control layer) [place servlet]
2. Talking about the operation process
Initial contact, a better understanding is to start developing and using it first, and then slowly analyze its specific process, and the learning effect will be better
You can put this DispatcherServlet As a request distributor;
First, after DispatcherServlet receives the request, the processing mapper is invoked. HandlerMapping ;
This mapper first checks whether there is an interceptor in the request path, if any;
Then the process mapper will find the corresponding url according to the url of the request path Processor Handler (i.e. Controller) Concrete control layer; return it to DispatcherServlet ; DispatcherServlet Start again, according to Handler Find a processing adapter; then process the view and model, and then return to DispatcherServlet , Distribution processing; response data;
lower left quarter View resolution That piece is misspelled;
However, if the print stream is widely used to send response data in JSON format, the process is relatively simple; the specific process can be drawn as follows;
Directly in the control layer, the data information is responded by printing stream
3. Set up spring MVC and use it
The first is the guide package
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.2.RELEASE</version> </dependency>
Pay attention to this spring-webmvc The package actually contains spring-context Therefore, after using the jar package of spring MVC, I can not use the spring context package;
This case is the case in the previous note. After spring integrates mybatis, it is matched by adding a configuration file;
Learning notes on Spring framework (5) - [integration of Spring framework with Mybatis framework]
stay webapp Lower WEB-INF Under directory web.xml File, configure DispatcherServlet;
<?xml version="1.0" encoding="UTF-8"?> <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"> <!--DispatcherServlet--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring.xml</param-value> </init-param> <!--Created at startup servlet--> <load-on-startup>0</load-on-startup> </servlet> <!--servlet Map all paths--> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
Have you noticed that when you use the initial parameters here again, you should refer to the integrated spring configuration file; and the classpath path is marked in front of it; because the case will be deployed and run on the tomcat server at that time; the resource access path should be pointed to correctly;
Well, this should also be added before the paths of several reference files written before; in fact, it has been added when writing this case in a note. Here's a reminder to deepen your memory
spring-dbandtx.xml
spring-mybatis.xml
Then, configure and enable MVC annotation scanning;
<mvc:annotation-driven></mvc:annotation-driven>
stay resources New under directory spring-mvc.xml , Placing the configuration of spring MVC
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--open springmvc Annotation support--> <mvc:annotation-driven></mvc:annotation-driven> </beans>
Here spring.xml Configure the merge file under the;
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--Enable annotation scanning--> <context:component-scan base-package="com.xiaozhire0.ssm"></context:component-scan> <!--Merge data connections and transaction management profiles--> <import resource="spring-dbandtx.xml"></import> <!--merge spring integration mybatis Configuration file for--> <import resource="spring-mybatis.xml"></import> <!--merge springmvc configuration file--> <import resource="spring-mvc.xml"></import> </beans>
Controller class construction;
use @ Controller Annotation annotation Class is the spring MVC control class object ;
Or use annotations @ RestController ; Because it contains annotations @ Controller Function of
You can use @ RequestMapping(path = "/...") to mark the corresponding request path
Here, I will create the controller package under the ssm package PersonController ;
/** * @author by CSDN@Xiaozhi RE0 * @date 2021-11-21 16:51 * Human control layer; */ //Mark this class as control class; @RestController @RequestMapping(path = "/person") public class PersonController { //Automatic assembly service layer; @Autowired PersonService personService; //The access path to call this method is actually project / person/save @RequestMapping(path = "/save") public void toSavePeople(){ System.out.println("Access the path to the added user---->"); People people = new People(); people.setName("A different world from scratch Java development"); people.setPassword("487945"); people.setAge(18); people.setBirthday(new Date()); personService.savePeople(people); } }
Configure tomcat server;
Start up test;
An error was also made here: the package path was created incorrectly, and then the server started and reported an error all the time;
This error is reported
21-Nov-2021 18:30:12.796 warning [http-nio-8080-exec-4]
org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping for GET ;
Then I checked the configuration files one by one, redeployed the server, maven cleaned up and recompiled; no errors were found;
It took me a long time to find out that I had built the package in the wrong place
Access path
http://localhost:8080/ssmdemobyxiaozhi/person/save Successful execution
For more information, you can pay attention to the official account "w's programming diary" and reply to Java for more information.