IDEA 2020 SpringMVC环境搭建及入门案例

Spring MVC概述

MVC简述

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC

什么是SpringMVC

SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发。

SpringMVC的优点

  1. 清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。
  2. 强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器validator)的引用。
  3. 可适配、非侵入:可以根据不同的应用场景,选择何事的控制器子类(simple型、command型、from型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如Action/ActionForm)继承。
  4. 可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。
  5. 可定制的绑定(binding)和验证(validation):比如将类型不匹配作为应用级的验证错误,这可以保证错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。
  6. 可定制的handler mapping和view resolution:Spring提供从最简单的URL映射,到复杂的、专用的定制策略。与某些web MVC框架强制开发人员使用单一特定技术相比,Spring显得更加灵活。
  7. 灵活的model转换:在Springweb框架中,使用基于Map的键/值对来达到轻易的与各种视图技术集成。
  8. 可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。
  9. 简单而强大的JSP标签库(Spring Tag Library):支持包括诸如数据绑定和主题(theme)之类的许多功能。他提供在标记方面的最大灵活性。
  10. JSP表单标签库:在Spring2.0中引入的表单标签库,使用在JSP编写表单更加容易。
  11. Spring Bean的生命周期可以被限制在当前的HTTp Request或者HTTp Session。准确的说,这并非Spring MVC框架本身特性,而应归属于Spring MVC使用的WebApplicationContext容器。

环境搭建

1.创建项目

创建Maven项目,选择Create form archetype,使用webapp模板。
环境搭建
如果什么都不修改,除了取名以外一直点下一步的话,完成以后开始等待创建项目会很慢(和网络无关,挂代理也会很慢),好不容易等了几分钟,最后的结果如下图,可以看到写的是No archetype found in remote catalog. Defaulting to internal catalog。就是在远程目录中找不到原型,默认为内部目录,既然远程目录没有,那可不可以通过配置直接选择使用内部目录,没错,可以。
结果
所以创建项目时不要急着点下一步,在写好项目名字的下一步里点击右上角的“+”添加一项配置,archetypeCatalog,值为internal。如下图,可以直接使用内部目录,避免等待。
添加配置
这次点击finish后只等了几秒项目就创建完毕了。

2.补全目录

然后会发现它的目录结构并不全,需要在main下创建java和resources目录,但是普通的目录并不能创建类,要右键→make directory as source root,同时把resources也设置成resources root,如下图:
在这里插入图片描述

3.导入依赖

需要修改的地方如下:

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <java.version>13</java.version>
    <spring.version>5.2.0.RELEASE</spring.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2.1-b03</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

4.配置前端控制器

在webapp/WEB-INF/web.xml中配置

<!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>

  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

5.创建SpringMVC配置文件

在resources中新建spring配置文件,取名为springmvc
新建spring配置文件

6.配置服务器

在运行按钮旁边添加配置,使用Tomcat Server,在Deployment中添加Artifact
配置服务器

编写入门程序

1.创建jsp

原本自带的index.jsp里面没有jsp的头,输入中文会乱码,删掉index.jsp,然后重新创建一个,会自动生成头。然后添加一个超链接。或者直接复制下面的:

<%--
  Created by IntelliJ IDEA.
  User: 
  Date: 2019/12/1
  Time: 11:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>入门程序</h1>
    <a href="hello">入门程序</a>
</body>
</html>

2.创建控制器类

在com.cjx.controller包下创建HelloController类,使用这个类时需要创建对象,可以交给spring的容器来处理,那么就需要使用注解

package com.cjx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author :
 * @date :Created in 2019/12/1 11:11
 * @description : controller
 */
@Controller
public class HelloController {
    @RequestMapping(path = "/hello")
    public String sayHello(){
        System.out.println("Hello SpringMVC");
        return null;
    }
}

3.修改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
        https://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
        https://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 开启注解扫描 -->
    <context:component-scan base-package="com.cjx"/>
</beans>

到现在,虽然配置文件配置好了,但是并没有被使用,需要在web.xml中进行初始化

<!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>

  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 初始化配置文件 -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

4.创建跳转页面

将HelloController中的方法返回值设置为"success",会看到提示:No viewer resolvers found。需要创建一个success.jsp来给前端显示。在WEB-INF文件夹下新建一个目录pages,里面创建一个success.jsp文件,里面body随便写一些内容。

5.配置视图解析器

为了让方法能找到这个jsp,我们需要配置一个视图解析器,在springmvc.xml中添加一个bean,顺便一提,我们后面的开发肯定会用到注解,这里把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/>

6.运行

点击运行后进入浏览器输入http://localhost:8080/springmvc01_start_war/
运行成功
点击超链接后可以跳转到刚刚创建的success.jsp界面
跳转成功
同时控制台会输出Hello SpringMVC,说明的确调用了SayHello方法
输出hello
至此,入门程序运行成功。

总结

SpringMVC的流程:

  1. 用户发送请求至前端控制器DispatcherServlet。
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet调用HandlerAdapter处理器适配器。
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  6. Controller执行完成返回ModelAndView。
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  9. ViewReslover解析后返回具体View。
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户。
  • 20
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: SpringMVC是一个基于Java的Web框架,用于构建基于MVC设计模式的Web应用程序。下面是搭建SpringMVC项目的简要步骤: 1. 创建一个新的Java项目,并添加Spring框架的依赖。 2. 在项目中配置web.xml文件,并在其中配置Spring的前端控制器DispatcherServlet。 3. 在项目中创建Spring配置文件(例如applicationContext.xml),并在其中配置Spring的相关bean。 4. 创建控制器类,并使用@Controller注解进行注释。在控制器类中,使用@RequestMapping注解来映射请求。 5. 创建视图解析器,并在配置文件中配置它。 6. 创建JSP视图文件,并使用视图解析器来渲染视图。 7. 在本地运行项目并使用浏览器进行访问,检查是否能够正常访问。 ### 回答2: Spring MVC是一个流行的Java框架,用于创建Web应用程序。使用Spring MVC,可以很容易地创建分层的Web应用程序,这些应用程序非常易于维护和测试。在这里,我们将学习如何搭建一个Spring MVC项目。 首先,我们需要创建一个新的项目,并引入所需的依赖库。我们可以使用Maven或Gradle来管理项目依赖关系。下面是一个基本的Spring MVC项目结构: ``` src |-main |-java |-com.example.controller |-HomeController.java |-resources |-spring |-servlet-context.xml |-webapp |-WEB-INF |-views |-home.jsp |-web.xml ``` 在这个项目结构中,我们有一个包含一个HomeController类的控制器包,并且有一个servlet-context.xml文件包含所有的Spring配置信息。我们还有一个web.xml文件,用于配置Spring MVC框架和Web应用程序的基础配置。在webapp目录中,我们有一个WEB-INF目录,包含所有的Web资源,如JSP和CSS文件。 现在,我们可以开始编写代码。在HomeController中,我们可以编写处理HTTP请求的处理程序,并将数据传递给JSP视图。在servlet-context.xml文件中,我们可以配置所有的Spring Beans,并将其注入到控制器中。 最后,我们可以编写JSP视图,用于显示控制器中传递的数据。在这个例子中,我们只是展示一个简单的欢迎信息,但是你可以根据需要编写更复杂的应用程序。 在web.xml文件中,我们需要将DispatcherServlet映射到应用程序的根路径。Spring MVC将负责处理所有的HTTP请求,并在必要时将其传递给控制器处理。 以上就是一个简单的Spring MVC项目的搭建步骤。当然,这只是一个基本的结构,你可以根据自己的需要对项目进行更复杂的构建和定制化。同时,你也需要注意项目中使用到的所有的依赖库的版本号,以确保之后的项目能够正常运行。 ### 回答3: 搭建springmvc项目,首先需要确保已经正确安装了Java Development Kit (JDK)和Eclipse IDE。接着,需要在Eclipse中创建一个新的Maven项目,选择Maven-quickstart-archetype作为项目模板。 创建完项目后,需要在pom.xml文件中添加Spring MVC的相关依赖,如spring-webmvc、spring-context等。确保依赖被正确引入后,需要在web.xml文件中配置DispatcherServlet,这是Spring MVC的核心,它负责接收所有的HTTP请求,并将它们分发给合适的Controller处理。 随后,需要创建Controller类来处理请求。一个Controller需要使用@Controller注解进行标记,并且需要定义处理不同请求的方法。在Controller的方法中,可以使用@RequestMapping注解接收和响应请求,也可以使用@RequestParam注解获取请求中的参数。 最后,需要创建视图模板来呈现处理结果。在Spring MVC中,视图模板是使用JSP、Thymeleaf、FreeMarker等模板引擎生成的。具体使用哪种模板引擎取决于开发者的需求和喜好。 总之,搭建一个Spring MVC项目需要注意以下几个步骤:1)创建一个Maven项目,2)引入Spring MVC的相关依赖,3)在web.xml中配置DispatcherServlet,4)创建Controller类,5)创建视图模板。当然,这只是项目搭建的基本步骤,具体实现仍有许多需要深入研究的部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值