SpringMVC入门精讲

SpringMVC

1、前言-关于SpringMVC

MVC是一种软件设计的架构,将软件分为三层

	M(Model):模型层,用于封装数据
	V(View):视图层(表现层),是一般的HTML或jsp页面
	C(Controller):控制层,用作处理数据,返回结果.相当于servlet

SpringMVC是基于Spring框架实现了web mvc设计模式的轻量级web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。

2、SpringMVC的核心组件

1、DispatcherServlet

前端控制器,核心,用作连接其他的组件,完成任务的分发与分配。

2、HandlerMapping

url处理映射,接收url ,根据不同的配置方式交给不同的Controller来处理。它有三种配置:

1  BeanNameUrlHandlerMapping
        功能:寻找Controller
              根据url请求去匹配bean的name属性,从而获取Controller
              <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
              <bean name="/user.do" class="com.ldy.backOffice.web.controller.UserController"/>
 2  SimpleUrlHandlerMapping
        功能:寻找Controller
              根据浏览器url匹配简单url的key,key就是Controller的id找到Controller
              <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                <property name="mappings">
                    <props>
                        <prop key="/user1.do">userC</prop>
                    </props>
                </property>
              </bean>
              <bean id="userC" class="com.ldy.backOffice.web.controller.UserController"/>
3  ControllerClassNameHandlerMapping
        功能:寻找Controller
               根据类名(MyController)类名.do来访问,类名首字母小写
               <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
               <bean class="com.ldy.backOffice.web.controller.UserController"/>

3、HandlerAdapter

控制器处理适配器,配置Controller的执行方式,它有两种配置:

1 SimpleControllerHandlerAdapter
        功能:执行controller(控制器)
              调用实现controller接口的控制器中的public ModelAndView handleRequest(...)方法,返回modelAndView
2 HttpRequestHandlerAdapter
        功能: 执行controller
              调用实现HttpRequestHandler接口的控制器中的public void handleRequest(...)方法,无返回值.
        注意: 该两种配置可以共存

4、Controller

控制器 相当于配置了Controller的访问路径,有三个属性

id     :配合SimpleUrlHandlerMapping url处理映射来找到真正的Controller类
name   :配合BeanNameUrlHandlerMapping url处理映射来找到真正的Controller类
class  :引用Controller全类名

5、InternalResourceViewResolver

前端资源视图解析器
进行视图解析,根据逻辑视图名解析成真正的视图View
ViewResolver会根据配置将处理结果生成View视图(HTML,jsp页面等),展示给用户。其中ViewResover有几个属性

prefix:前缀
suffix:后缀

SpringMVC的执行流程大致如下:
在这里插入图片描述

3、HelloSpringMVC-入门案例

XML配置

1、创建项目,导入jar包

如下的jar包有些可以不需要,可以根据项目酌情导入
在这里插入图片描述

2、在web.xml配置DispatcherServlet

在这里插入图片描述

<?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_0.xsd" version="3.0">
    <display-name>spring_mvc_annotation</display-name>
    <servlet>
        <servlet-name>spring_mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring_mvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>\此处注意\/*</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
</web-app>

3、在WEB-INF目录下创建xxx-servlet.xml

根据web.xml配置的名称来创建xxx.servlet.xml文件
在这里插入图片描述引入头文件

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
</beans>

4、配置xxx-servlet.xml

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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-3.0.xsd">

    <!--1  配置url处理映射-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--2  配置控制器处理适配器-->
    <bean class="org.springframework.web.portlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--3  配置控制器 相当于配置了访问路径-->
    <bean name="/user.do" class="com.ldy.backOffice.web.controller.UserController"/>
    <!--4  配置资源视图的解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/view/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

5、创建Controller控制器

在这里插入图片描述

		package com.ldy.backOffice.web.controller;
		import org.springframework.web.servlet.ModelAndView;
		import org.springframework.web.servlet.mvc.Controller;
		import javax.servlet.http.HttpServletRequest;
		import javax.servlet.http.HttpServletResponse;
		public class UserAddController implements Controller {
		    @Override
		    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
		        ModelAndView mav = new ModelAndView("user/useradd");
		        return mav;
		    }
		}

注意导入JavaEE的包

6、创建一个hello.jsp页面

注意根据配置的文件来创建目录
在这里插入图片描述

	<%@ page contentType="text/html;charset=UTF-8" language="java" %>
	<html>
	<head>
	    <title>Title</title>
	</head>
	<body>
	<h2>${name}</h2>
	</body>
	</html>

7、运行项目,访问路径

在这里插入图片描述

Annotation方式

创建项目,
导入jar包,
编写web.xml文件与xml方式无异

1、配置xxx-servlet.xml

在这里插入图片描述

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <mvc:annotation-driven/>
    <!-- 1.配置扫描包-->
    <context:component-scan base-package="com.ldy.backOffice.web.controller"/>
    <!-- 2.配置注解处理映射-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <!-- 3.配置适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </property>
    </bean>
    <!-- 4.配置资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

2、编写Controller

在这里插入图片描述

注解详解

@Controller: 相当于在spring中配置了<bean class="控制器的路径"/>
@RequestMapping: 指定请求的实际url
@Pathariable: {}里面参数注入后面参数里面
@RequestParam: 参数描述

3、运行截图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41910976/article/details/106312188