SpringMVC(一):springMVC入门

一、三层架构和MVC模型

1、三层架构

1.1、分层原因

为了方便代码的维护,需要保证类的职责要单一(将一个类拆分成多个类,形成类之间的调用关系)。

1.2、三层结构

  • 表现层(UI层):数据展现和操作界面,负责请求分发;
  • 业务层(服务层):封装业务逻辑,处理业务;
  • 持久层(数据访问层):封装数据访问逻辑,负责和数据库交互。

1.3、分层的优点

  • 有利于标准化,利于各层逻辑的复用;
  • 可以很容易的用新的实现来替换原有层次的实现,降低层与层之间的依赖;
  • 避免了表示层直接访问数据访问层,表示层只和业务逻辑层有联系,提高了数据安全性。
  • 项目结构更清楚,分工更明确,有利于后期的维护和升级,极大地降低了维护成本和维护时间。
  • 有利于系统的分散开发,每一个层可以由不同的人员来开发,只要遵循接口标准,利用相同的对象模型实体类就可以了,这样就可以大大提高系统的开发速度。
  • 方便系统的移植,如果要把一个C/S的系统变成B/S系统,只要修改三层架构的表示层就可以了。业务逻辑层和数据访问层几乎不用修改就可以轻松的把系统移植到网络上。

2、MVC模型

  • Model,数据模型,JavaBean的类,用来进行数据封装。
  • View,指JSP、HTML用来展示数据给用户
  • Controller,用来接收用户的请求,整个流程的控制器。用来进行数据校验等。

二、springMVC入门

1、基于xml的入门

1.1、创建maven的web项目,补全项目结构,并导入jar包坐标

1.2、在webapp下面的web.xml中配置前端控制器DispathcherServlet

<!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、在resources目录下添加配置文件springmvc.xml,并配置映射处理器HandlerMapping和处理器Controller

扫描二维码关注公众号,回复: 8783510 查看本文章
<?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、编写控制器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、在springmvc.xml文件中添加视图解析器ViewResolver

    <!-- 配置视图解析器 -->
    <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、在pages包中编写视图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来展现。

发布了134 篇原创文章 · 获赞 10 · 访问量 7346

猜你喜欢

转载自blog.csdn.net/yu1755128147/article/details/103894643