(1)SpringMVC的入门

章节目标:

1.SpringMVC的好处

2.SpringMVC的工作流程

3.Spring的注解开发,核心类

1.SpringMVC是什么?好处是什么?

答:此框架是spring提供一个实现WebMVC设计模式的轻量级web框架.

好处:1.灵活性强易于其他框架集成.2.提供前端控制器DispatchServlet3.自动绑定用户输入.4.内置常见校验器.5.基于XML配置文件,不需要重写编译应用程序等等

2.Spring的工作流程

废话不多先上例子

项目例子

1.创建项目,引入jar包,搭建环境

在这里要注意spring和Tomcat的版本配对问题,spring版本过高必报错,所以我的版本和之前不同

                      

2.在web.xml下写写前端控制器

<?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">
<servlet>
    <!-- 配置前端控制器 -->
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!--初始化时加载配置文件 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <!-- 表示容器在启动时立即加载Servlet -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
View Code

3.创建Controller类

public class FirstController implements Controller{
    public ModelAndView handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        //创建ModelAndView对象
        ModelAndView mav = new ModelAndView();
        //向模型对象中添加数据
        mav.addObject("msg", "大家好,mynameis springmvc");
        //设置逻辑视图名
        mav.setViewName("/WEB-INF/jsp/first.jsp");
        //返回ModelAndView对象
        return mav;
    }
}
View Code

4.编写配置文件springmvc-config.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"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
        
        <!-- 配置处理器Handle,映射/firstController 请求 -->
        <bean name="/firstController" class="com.itheima.controller.FirstController"/>
        
        <!-- 处理器映射器,将处理器Handle的name作为url进行查找 -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        
        <!-- 处理器适配器,配置对处理器中handleRequest()方法的调用 -->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourseViewResolver"/>

</beans>
View Code

5.在创建first.jsp 文件WEB-INF的jsp文件夹下

<body>${msg}<body>

6.完成项目然后发布到Tomcat中启动服务器输入这个网址:http://localhost:8080/SpringMVCdemo/firstController

SpringMVC的工作流程

先看图

                                      

此图就是SpringMVC工作流程,其中HandlerAdapter,HandlerMapping,viewResolver分别表示处理器适配器,处理器映射器,视图解析器,

在上述springmvc-config.xml中对应的xml语句写了对应的功能(其中xml文件的这些内容可以省略,spring自动为我们实现了这些功能,为了理解我们写上)

Handler相当于之前的Controller类,称为后端控制器

工作流程按数字顺序:

1.客户通过客户端向服务器发起请求,2.被DispatcherServlet拦截,拦截请求后调用HandlerMapping,

3.HandlerMapping功能是根据请求的url找到具体处理器,生成此对象返回给DispatcherServlet

4.DispatcherServlet通过返回的信息选择合适的HandlerAdapter

5.HandlerAdapter调用执行Handler,也就是执行对应的Controller类

6.Controller类执行完返回一个ModelAndView对象,里面包含模型和视图名.

7.HandlerAdapter将此对象返回给DispatcherServlet

8.DispatcherServlet通过MAV对象选择合适的viewResolver

9.viewResolver解析后,返回具体的view给DispatcherServlet

10.DispatcherServlet得到数据给view进行渲染

11.视图渲染后返回客户端的浏览器得到显示

SpringMVC核心类和注解

说实话,上面的东西只是帮助我们理解springmvc是如何工作的,在实际开发中我们一定要用注解开发,因为十分方便.

注解在spring2.5后使用

先上代码,看看和之前有什么区别

前端控制器

<?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">
<servlet>
    <!-- 配置前端控制器 -->
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <!--初始化时加载配置文件 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-config.xml</param-value>
    </init-param>
    <!-- 表示容器在启动时立即加载Servlet -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
View Code

Controller注解类型

package com.itheima.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
@RequestMapping(value="/hello")
public class FirstController{
    @RequestMapping(value="/firstController")
    public String handleRequest(HttpServletRequest request,
            HttpServletResponse response,Model model){
        model.addAttribute("msg", "这是我的第一个springmvc程序");
        return "first";
    }

}
View Code

springmvc-config.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"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.2.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
        
        <!-- 指定需要扫描的包 -->
        <context:component-scan base-package="com.itheima.controller"/>
        
        <!-- 定义视图解析器 -->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
        <!-- 设置前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        
        <!-- 设置后缀 -->
        <property name="suffix" value=".jsp" />
        
        </bean>

</beans>
View Code

然后输入http://localhost:8080/SpringMVCdemo/hello/firstController即可查看结果,与上面相同

原文地址:https://www.cnblogs.com/zoulingjin/p/9525047.html