First, the three-tier architecture and MVC model
1, three-tier architecture
1.1, layered reasons
In order to facilitate maintenance of the code, the need to ensure its single class (class split into a plurality of classes, call relationship between classes is formed).
1.2, three-tier structure
- Presentation Layer (UI layer): data presentation and user interface, responsible for requesting distribution;
- Business layer (server layer): encapsulate business logic processing operations;
- Persistence Layer (Data Access Layer): encapsulate data access logic and database interaction responsible.
1.3, layered advantage
- Facilitate standardization facilitates multiplexing logical layers;
- It can be easily implemented to replace with a new original level implementation, reduce the dependence between the layers;
- Avoid direct access to the presentation layer data access layer, presentation layer and business logic linked only to improve data security.
- Project structure is more clear, more clear division of labor, help maintain and upgrade the late, greatly reducing maintenance costs and maintenance time.
- Facilitate dispersion development system, each of the layers may be developed by different individuals, as long as the interface standard to follow, with the same object class can be a model entity, which can greatly increase the development speed of the system.
- Easily ported system, if we want a C / S system becomes B / S system, as long as the modification of the presentation layer can be a three-tier architecture. Business logic layer and data access layer almost without modification of the system can be easily ported to the network.
2, MVC model
- Model, the data model, JavaBean class for data encapsulation.
- View, refers to a JSP, HTML data for display to the user
- Controller, for receiving a user's request, the whole process controller. For data checking.
Two, springMVC entry
1, based on xml entry
1.1, create a maven web project, the completed project structure, coordinate and import jar package
1.2 disposed on the front end of the controller DispathcherServlet webapp below in web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- SpringMVC的核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 配置servlet启动时加载对象 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
1.3, add a profile springmvc.xml in the resources directory, and configure the mapping processor and processor Controller HandlerMapping
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置映射处理器HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 配置处理器Controller-->
<bean name="/hello" class="com.wedu.springmvc.web.HelloController"/>
</beans>
1.4, write controller HelloController
package com.wedu.springmvc.web;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* springmvc入门示例
*/
public class HelloController implements Controller {
public HelloController() {
}
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("HelloController");
return new ModelAndView("success");
}
}
1.5, add view resolver ViewResolver in springmvc.xml file
<!-- 配置视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
1.6, write pages package in view success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>入门成功</h3>
</body>
</html>
1.7、将项目部署到服务器中,并启动服务器进行测试
2、基于注解的入门
2.1、创建maven的web项目,并导入jar包坐标和配置前端控制器DispathcherServlet与xml方式一致
2.2、添加配置文件springmvc.xml,并添加spring注解扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置spring创建容器时要扫描的包 -->
<context:component-scan base-package="com.wedu.springmvc.web"/>
</beans>
2.3、编写控制器Controller
package com.wedu.springmvc.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* springmvc入门示例
*/
@Controller
public class HelloController {
@RequestMapping("/hello")
public String sayHello() {
System.out.println("Hello SpringMVC...");
return "success";
}
}
2.4、在springmvc.xml文件中添加视图解析器ViewResolver和编写视图jsp与xml方式一致,并配置开启springmvc注解
<!-- 配置视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 配置开启SpringMVC注解的支持 -->
<mvc:annotation-driven/>
三、SpringMVC组件的介绍
1、SpringMVC组件
- 前端控制器(核心):DsipatcherServlet,负责接收并处理所有的web请求,根据handlerMapping找到具体的Controller,由controller完成具体的处理逻辑。
- 映射处理器:HandlerMapping,负责处理web请求和具体的Controller之间的映射关系匹配。
- 处理器:Controller,DispatherServlet的次级控制器,web请求的具体处理者。
- 视图解析器:ViewResolver,用来处理视图名与具体的view实例之间的映射对应关系。
2、SpringMVC的执行过程
DispatcherServlet收到请求之后(比如xxx.do),会依据HandlerMapping的配置,去调用相应的Controller来处理。 Controller将处理结果封装成ModelAndView对象,然后将该对象返回给DispatcherServlet。DispatcherServlet依据ViewResolver的解析,调用相应的jsp来展现。