三层架构
- 表现层:web层,用来和客户端进行数据交互的。表现层一般采用MVC的设计模式
- 业务层:处理具体的业务逻辑
- 持久层:用来操作数据库
MVC模型
- MVC全名是Model View Controller模型视图控制器,每个部分各司其职
- Model:数据模型,JavaBean的类,用来进行数据封装
- View:指Jsp、HTML用来展示数据给用户
- Controller:用来接收用户的请求,整个流程的控制器。进行数据的检验
SpringMVC的概述
- 是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。
- Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
- 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。
SpringMVC在三层架构中的位置
表现层
SpringMVC入门案例
-
将index.jsp 页面的内容更改为
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>入门程序</title> </head> <body> <%--超链接--%> <h3>入门</h3> <a href="/Springmvc.do" >springmvc入门</a> </body> </html>
- 创建一个maven的工程,引入对应的依赖坐标
1 <!-- 版本锁定 --> 2 <properties> 3 <spring.version>5.0.2.RELEASE</spring.version> 4 </properties> 5 6 <dependencies> 7 <dependency> 8 <groupId>org.springframework</groupId> 9 <artifactId>spring-context</artifactId> 10 <version>${spring.version}</version> 11 </dependency> 12 13 <dependency> 14 <groupId>org.springframework</groupId> 15 <artifactId>spring-web</artifactId> 16 <version>${spring.version}</version> 17 </dependency> 18 19 <dependency> 20 <groupId>org.springframework</groupId> 21 <artifactId>spring-webmvc</artifactId> 22 <version>${spring.version}</version> 23 </dependency> 24 25 <dependency> 26 <groupId>javax.servlet</groupId> 27 <artifactId>servlet-api</artifactId> 28 <version>2.5</version> 29 <scope>provided</scope> 30 </dependency> 31 32 <dependency> 33 <groupId>javax.servlet.jsp</groupId> 34 <artifactId>jsp-api</artifactId> 35 <version>2.0</version> 36 <scope>provided</scope> 37 </dependency> 38 </dependencies>
- 在新建一个successful.jsp 页面
-
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>Springmvc successful</title> 5 </head> 6 <body> 7 <h2>springmvc successful</h2> 8 </body> 9 </html>
- 编写一个Controller类和方法
1 package zh.stuspringmvc; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 //把当前的类交给ioc容器管理 7 @Controller 8 public class SpringMVCController { 9 10 // 配置映射的配置 11 @RequestMapping(path="/Springmvc.do") 12 public String hello(){ 13 14 // 跳转的jsp页面,默认使用的是请求转发 15 // 返回到successful界面 16 return "/WEB-INF/pages/successful"; 17 } 18 }
- 配置核心的控制器(配置DispatcherServlet)
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 5 <web-app> 6 <display-name>Archetype Created Web Application</display-name> 7 8 <!--配置前端控制器--> 9 <servlet> 10 <servlet-name>dispatcherServlet</servlet-name> 11 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 12 <!--加载springmvc.xml配置文件,配置的是Spring配置--> 13 <init-param> 14 <param-name>contextConfigLocation</param-name> 15 <param-value>classpath:springmvc.xml</param-value> 16 </init-param> 17 <!--配置启动加载--> 18 <load-on-startup>1</load-on-startup> 19 </servlet> 20 <!--<url-pattern>*.do</url-pattern> 21 只处理以.do结尾的请求 22 如果是 "/" 表示:处理所有的请求 23 --> 24 <servlet-mapping> 25 <servlet-name>dispatcherServlet</servlet-name> 26 <url-pattern>*.do</url-pattern> 27 </servlet-mapping> 28 </web-app>
在web.xml中配置文件的核心控制器
- 在resource目录下配置springmvc.xml的配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:mvc="http://www.springframework.org/schema/mvc" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc.xsd 11 http://www.springframework.org/schema/context 12 http://www.springframework.org/schema/context/spring-context.xsd"> 13 14 <!--配置创建Spring容器创建的时候要扫描的包--> 15 <context:component-scan base-package="zh.stuspringmvc"></context:component-scan> 16 17 <!--配置试图解析器--> 18 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 19 <property name="prefix" value="/WEB-INF/pages/"></property> 20 <property name="suffix" value="*.jsp"></property> 21 </bean> 22 23 <!--配置Spring开启注解mvc的支持 24 <mvc:annotation-driven></mvc:annotation-driven>--> 25 </beans>
最后启动配置过的tomcat进行测试即可
过程分析
- 启动Tomcat服务器的时候,因为创建了load-on-startup标签,所以会创建DispatcherServlet的对象,所以会加载resource目录下的springmvc.xml文件。
- 在springmvc.xml中开启了注解扫描,Controller的对象就会被加载
- 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据注解@RequestMapping找到具体的执行方法
- 根据方法的返回值,在springmvc.xml文件中配置的视图解析器,查找指定的jsp文件
- Tomcat服务器渲染页面,给出相应的响应。