springMvc

Posted 鸢鬏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMvc相关的知识,希望对你有一定的参考价值。

Spring MVC入门步骤

1.创建maven项目 选择 webapp的模板
2.完善项目的目录结构
新建 java 和resources文件夹
3.在pom.xml文件中导入springmvc依赖
4.编写核心配置文件 springmvc.xml
   配置注解扫描
5.在web.xml文件中 配置 前端控制器(DispatchServlet),
 加载springmvc.xml
6.编写页面页面(index.jsp)发送一个请求
7.在controller中写一个类 接收请求
8.配置tomcat服务器 启动项目
 
 

1.创建maven项目 选择 webapp的模板

2.完善项目的目录结构

新建 java 和resources文件夹

3.在pom.xml文件中导入springmvc的依赖

<dependencies>

 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
<version>4.11</version>
 <scope>test</scope>
</dependency>
    <!--引入springmvc的依赖-->
<dependency>
 <groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
 <version>5.3.4</version>
</dependency>
<!--引入 jsp的依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
 </dependency>
<!--引入servlet的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
</dependency>

4.编写核心配置文件 springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

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/context

http://www.springframework.org/schema/context/spring-context.xsd">

 <!--注解扫描-->

<context:component-scan base-package="com.ynlg"/>

</beans>

 
 

5.在web.xml文件中 配置 前端控制器(DispatchServlet)

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

 version="4.0">

<!--配置前端控制器-->

 <servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <!--加载springmvc的配置文件-->
 <init-param>
 <param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
 </init-param>
</servlet>
 <!--配置路径映射-->
 <servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
 <!--/ 表示 所有的请求-->
 <url-pattern>/</url-pattern>
</servlet-mapping>
</web-app >
 
 

6.编写页面页面(index.jsp)发送一个请求

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<body>

<h2>Hello World!</h2>

<a href="nihao">你好</a>

</body>

</html>

 

7.在controller中写一个类 接收请求

@Controller //实例化

beanpublic class SpringNiHao

@RequestMapping("/nihao")//请求映射
public void test()
System.out.println("吃饭了没有");
   
 

8.配置tomcat 启动项目

SpringMVC概述+SpringMVC运行流程+SpringMVC搭建

SpringMVC

SpringMVC概述

首先我们了解一下经典的MVC模式,MVC全称Model View Controller,M指业务模型,V指用户界面,C指控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。Spring MVC属于SpringFrameWork的后续产品。

SpringMVC是Spring框架的一个模块,SpringMVC和Spring无需通过中间整合层进行统一整合,已经融合在Spring Web Flow里面。SpringMVC是一个基于MVC的web框架,方便前后端进行数据的传输。SpringMVC拥有控制器,接收外部请求,解析参数传给服务层。

SpringMVC的运行流程

我们回顾一下我们使用Servlet来完成web项目,如下图:

在这里插入图片描述

使用Servlet来完成web项目时,我们通过Servlet来处理用户页面和数据库之间的数据交互,那时候我们所有的Servlet层代码都需要我们自己去写入,并且会有大量的“重复”代码,严重降低了我们开发的效率,使我们不能专注于业务,SpringMVC就可以很好的为我们解决这一问题。

在这里插入图片描述

1.用户向服务器发送请求,请求被Spring前置控制器DispatcherServlet捕获;

2.前端控制器DispatcherServlet接收到请求后,调用映射处理器HandlerMapping。处理器HandlerMapping根据请求的url找到处理该请求的处理器Handler(即Controller),将处理器Handler返回给前端控制器DispatcherServlet。

3.DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。在填充Handler的入参过程中,根据配置,Spring会做出一些额外的工作:

(1)HttpMessageConveter:将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应消息。

(2)数据转换:对请求消息进行数据转换。如String转换为Integer、Double等。

(3)数据格式化:对请求消息进行数据格式化。如将字符串转换为格式化数字或格式化日期等等。

(4)数据验证:验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中。

4.Handler控制器执行完毕后,会向DispatcherServlet返回一个ModelAndView对象。

5.根据返回的ModelAndView,选择一个适合的ViewResolver视图解析器(必须是已经注册到Spring中的视图解析器)返回给DispacherServlet;

6.ViewResolver结合Model和View来渲染视图;

7.将渲染后的结果响应给客户端。

搭建SpringMVC

搭建完整的SpringMVC项目需要在spring的基础上进行,大家可以阅读我的这几篇文章进行学习

学习Spring之前必读的文章,Spring框架第0章(Spring核心+优点+体系结构+简单搭建)

Spring框架的IOC设计思想+Spring的Bean管理

一文搞懂SpringAOP(面向切面编程)

Spring事务特征+Spring事务管理+实现+Spring七种事务传播行为+集成MyBatis

1.导入SpringMVC的相关jar包

<!--SpringMVC依赖的jar包-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.2.RELEASE</version>
</dependency>

如果使用jsp的el表达式,还需要导入jstl的jar包

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<!--加servlet-->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.0</version>
    <scope>provided</scope>
</dependency>

2.配置DispatcherServlet

DispatcherServlet是从HttpServlet中继承而来。所以它是一个标准的Servlet,因此我们需要在web.xml文件中进行配置,使它在启动时加载Spring配置文件。

在web.xml文件中配置:

	<!--配置spring核心请求分发的的DisPatcherServlet-->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <!--把Spring的配置文件交给contextConfogLocation-->
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring.xml</param-value>
        </init-param>
        <!--服务器启动时就初始化DispatcherServlet和启动 spring-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <!--
        请求映射
        所有的请求都会进入DispatcherServlet(分发器)
    -->
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

3.开启SpringMVC注解

在Spring.xml文件中配置开启SpringMVC注解

<!--开启SpringMVC的注解功能-->
<mvc:annotation-driven></mvc:annotation-driven>

4.配置视图解析器

在Spring.xml文件中配置视图解析器

<!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
    <!--控制器返回的所有视图界面的prefix(前缀)都要为value-->
    <property name="prefix" value="/WEB-INF/pages/"></property>
    <!--控制器返回的所有视图界面的suffix(后缀)都要为value-->
    <property name="suffix" value=".jsp"></property>
</bean>

5.控制器类的搭建

我们使用@Controller注解标签标记SpringMVC的Controller对象,即控制器类。同时,我们也要使用RequestMapping注解来标记请求地址映射,可用在类或方法上。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


@Controller//扫描到这个类后交给IOC管理,用于创建对象,默认是单例的,多线程情况下线程不安全
@RequestMapping(path = "/user")//指定一个映射的地址,属性为value或path都一样,可以指定多个,
public class UserController {

    @RequestMapping(path = "/toLogin")//指定请求方式
    public ModelAndView toLogin() {
        System.out.println("toLogin");
        ModelAndView mv = new ModelAndView("login");;
        return mv;
    }

}

这时当我们要访问toLogin()方法是的路径就是/user/toLogin

以上是关于springMvc的主要内容,如果未能解决你的问题,请参考以下文章

springmvc的特点

学习笔记——SpringMVC简介;SpringMVC处理请求原理简图;SpringMVC搭建框架

SpringMVC

springMVC学习笔记初识springmvc

SpringMVC

springMVC1 springmvc的基础知识