概述

前文记录了MVC模式和Spring MVC的初步认识,现在记录创建一个项目,配置Spring MVC,编写接口程序。

创建项目


打开IntelliJ IDEA,点击“File->New->Project...”,在打开的界面中左侧选择“Maven”,勾选“Create from archetype”,选中“maven-archetype-webapp”,点击“Next”:



填写GroupId等信息填写完整,点击“Next”:



配置好本机安装的maven目录,点击“Next”:



设置好项目存放目录,点击“Finish”:



maven需要下载相应的依赖,稍后片刻,创建完成,目录结构如下:



此时目录结构是缺失的,需要进行完善,点击“File->Project Structure...”,左侧选中“Modules”,点击“Sources”:



选中“main”目录,右键菜单中点击“New Folder...”,新建一个名为“java”的文件夹:



选中“java”文件夹,点击上方“Sources”按钮,可以看到“java”文件夹变色,并已被标记为“Source Folders”文件夹:



选中“main”目录,右键菜单中点击“New Folder...”,新建一个名为“resources”的文件夹:



选中“resources”文件夹,点击上方“Resources”按钮,可以看到“resources”文件夹标识变更,并已被标记为“Resources Folders”文件夹:



选中“src”目录,右键菜单中点击“New Folder...”,新建一个名为“test”的文件夹,选中“test”目录,右键菜单中点击“New Folder...”,新建一个名为“java”的文件夹:



选中“java”文件夹,点击上方“test”按钮,可以看到“java”文件夹变色,并已被标记为“Test Source Folders”文件夹:



然后创建包,选中java目录,右键“New->Package”,输入包名“com.snow.dcl.controller”,点击“确定”:



至此项目目录结构就配置完整了。

配置Tomcat


Tomcat配置前文已经记录过了,此处不做重复记录(前文连接:https://www.cnblogs.com/Dcl-Snow/p/10548725.html)。

添加Spring MVC依赖


打开pom文件,在<dependencies>标签中添加如下依赖:

  1. 1 <dependency>
  2. 2 <groupId>org.springframework</groupId>
  3. 3 <artifactId>spring-webmvc</artifactId>
  4. 4 <version>4.3.10.RELEASE</version>
  5. 5 </dependency>
  6. 6 <dependency>
  7. 7 <groupId>javax.servlet</groupId>
  8. 8 <artifactId>javax.servlet-api</artifactId>
  9. 9 <version>4.0.1</version>
  10. 10 </dependency>


基于配置的控制器实例


配置前端控制器DispatcherServlet


DispatcherServlet的核心功能是分发请求,请求会被分发给对应处理的Java类,称为Handle,在Spring 2.5版本以前开发一个Handle必须实现org.springframework.web.servlet.mvc.Controller接口,Controller接口必须实现ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception方法,Controller接口的实现类可以通过该方法传递参数访问对应请求的HttpServletRequest和HttpServletResponse对象,请求处理完成后,返回一个包含模型对象和视图路径的ModelAndView对象;在Spring 2.5版本新增了可基于注解的控制器,即不需要实现Controller接口,通过注释类型来描述即可完成功能。

先不使用**注解**的方式进行记录,展开项目的目录结构,双击打开web.xml文件,替换为下面内容:

  1. 1 <?xml version="1.0" encoding="UTF-8"?>
  2. 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  5. 5 version="3.1">
  6. 6
  7. 7 <display-name>Archetype Created Web Application</display-name>
  8. 8
  9. 9 <!--welcome pages-->
  10. 10 <welcome-file-list>
  11. 11 <welcome-file>index.jsp</welcome-file>
  12. 12 </welcome-file-list>
  13. 13
  14. 14 <!--配置Spring MVC DispatcherServlet-->
  15. 15 <servlet>
  16. 16 <servlet-name>springMVC</servlet-name>
  17. 17 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  18. 18 <init-param>
  19. 19 <!--配置/WEB-INF目录下的springmvc-servlet.xml作为mvc的配置文件-->
  20. 20 <param-name>contextConfigLocation</param-name>
  21. 21 <param-value>/WEB-INF/springmvc-servlet.xml</param-value>
  22. 22 </init-param>
  23. 23 <load-on-startup>1</load-on-startup>
  24. 24 <async-supported>true</async-supported>
  25. 25 </servlet>
  26. 26 <!--配置Spring MVC DispatcherServlet拦截所有请求-->
  27. 27 <servlet-mapping>
  28. 28 <servlet-name>springMVC</servlet-name>
  29. 29 <url-pattern>/</url-pattern>
  30. 30 </servlet-mapping>
  31. 31 </web-app>
  32. 32

然后配置springmvc-servlet.xml,在WEB-INF目录下右键“New->File”创建springmvc-servlet.xml,双击打开该文件,填写以下内容:

  1. 1 <?xml version="1.0" encoding="UTF-8"?>
  2. 2 <beans xmlns="http://www.springframework.org/schema/beans"
  3. 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. 4
  5. 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. 6
  7. 7 <!--配置Handle,映射"/hello"请求-->
  8. 8 <bean name="/hello" class="com.snow.dcl.controller.HelloController"/>
  9. 9 <!--将beanname作为url进行查找-->
  10. 10 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  11. 11 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  12. 12 <!--视图解析器-->
  13. 13 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
  14. 14
  15. 15 </beans>
  16. 16

配置文件内容含义:

1.首先声明了HelloController业务控制器类,并将其映射到/hello请求。

2.配置了处理映射器BeanNameUrlHandlerMapping,以Bean的名称作为url进行查找。

3.配置了处理器适配器SimpleControllerHandlerAdapter,对HelloController类的handleRequest方法进行调用。

4.配置视图解析器InternalResourceViewResolver解析视图,将view呈现给用户。

注意:Spring 4.0版本之后,处理映射器、处理器适配器、视图解析器不需要进行配置,Spring会提供默认配置进行使用,此处进行配置是为了理解原理。

在“com.snow.dcl.controller”包下右键“New->Java Class”,创建一个名为“HelloController”的类,编写如下代码:

  1. 1 public class HelloController implements Controller {
  2. 2
  3. 3 @Override
  4. 4 public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
  5. 5 ModelAndView modelAndView = new ModelAndView();
  6. 6 modelAndView.addObject("message", "Hello!");
  7. 7 modelAndView.setViewName("/WEB-INF/content/welcome.jsp");
  8. 8 return modelAndView;
  9. 9 }
  10. 10
  11. 11 }
  12. 12

HelloController是实现了Controller接口的控制器,处理请求动作;handleRequest是必须实现的方法,该方法的参数对应请求的HttpServletRequest和HttpServletResponse,必须返回一个包含视图名或视图名和模型的ModelAndView对象,此处返回的模型中包含message字符串对象,返回的视图路径/WEB-INF/content/welcome.jsp,即请求被转发到welcome.jsp。

选中WEB-INF目录,右键“New->Directory”,命名为“content”,然后同样方式在该目录中创建welcome.jsp,文件中编写如下代码:

  1. 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. 2 <html>
  3. 3 <head>
  4. 4 <meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
  5. 5 <title>welcome</title>
  6. 6 </head>
  7. 7 <body>
  8. 8 ${requestScope.message}
  9. 9 </body>
  10. 10 </html>

此处使用JSP的EL表达式${requestScope.message}来获取HelloController的ModelAndView对象中message的值并显示在浏览器中。

测试


启动TomcatServer,启动完成后,打开浏览器输入:(http://localhost:8080/hello),访问成功。

基于注解的控制器实例


Spring 2.5版本后,增加了基于注解的控制器,即不需要实现Controller接口,通过注解即可实现功能。

修改HelloController类


打开HelloController类文件,代码修改如下:

  1. 1 @Controller
  2. 2 public class HelloController {
  3. 3
  4. 4 @RequestMapping(value = "/hello")
  5. 5 public ModelAndView hello() {
  6. 6 ModelAndView modelAndView = new ModelAndView();
  7. 7 modelAndView.addObject("message", "Hello!");
  8. 8 modelAndView.setViewName("/WEB-INF/content/welcome.jsp");
  9. 9 return modelAndView;
  10. 10 }
  11. 11
  12. 12 }
  13. 13

HelloController是一个基于注解的控制器,使用@Controller注解标示,@RequestMapping注解用来映射一个请求和请求的方法,value = "/hello"表示请求由hello方法进行处理,方法返回一个包含视图名或视图名和模型的ModelAndView对象。

修改Spring MVC的配置文件


打开springmvc-servlet.xml,内容修改如下:

  1. 1 <?xml version="1.0" encoding="UTF-8"?>
  2. 2 <beans xmlns="http://www.springframework.org/schema/beans"
  3. 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. 4 xmlns:context="http://www.springframework.org/schema/context"
  5. 5 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">
  6. 6
  7. 7 <!--spring可以自动扫描base-package设置的包或子包下的java类,如果扫描到有spring相关注解的类,则注册为springbean-->
  8. 8 <context:component-scan base-package="com.snow.dcl.controller"/>
  9. 9 <!--配置annotation类型的映射处理器-->
  10. 10 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
  11. 11 <!--配置annotation类型的处理器适配器-->
  12. 12 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
  13. 13 <!--视图解析器-->
  14. 14 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
  15. 15
  16. 16 </beans>
  17. 17

Spring的扫描机制会自动扫描com.snow.dcl.controller包下使用了@Controller注解的控制器类,配置的RequestMappingHandlerMapping映射处理器处理会根据请求查找映射,配置的RequestMappingHandlerAdapter来完成对@RequestMapping注解的方法的调用,配置的InternalResourceViewResolver解析视图呈现给用户。

注意:Spring 4.0版本之后,处理映射器、处理器适配器会有跟简单的方式进行配置,此处进行配置是为了理解原理。

测试


启动TomcatServer,启动完成后,打开浏览器输入:(http://localhost:8080/hello),访问成功。

Spring MVC接口实例的更多相关文章

  1. Spring MVC框架实例

    Spring  MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,能够选择是使用内置的 Spring Web 框架还是 ...

  2. 换一种方式编写 Spring MVC 接口

    1. 前言 通常我们编写 Spring MVC 接口的范式是这样的: @RestController @RequestMapping("/v1/userinfo") public ...

  3. Mock测试你的Spring MVC接口

    1. 前言 在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题.也有的使用Postman等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心 ...

  4. Spring MVC(二)--Spring MVC登陆实例

    本文通过一个简单的登陆实例实现Spring MVC的流程,同时整合 MyBatis使用,流程是这样的: 1.访问一个URL进入登陆界面 2.输入正确的用户名和密码,成功则进入index页面,否则留在登 ...

  5. Spring MVC Framework 实例

    一 SpringMVC基础入门,创建一个HelloWorld程序 1 首先,导入SpringMVC需要的jar包. commons-logging-<version>.jar spring ...

  6. jquery调用spring mvc接口返回字符串匹配

    背景:有个增删改页面,用jquery祭出ajax异步调用接口,spring mvc响应对象是个json字符串,jquery根据响应结果判断,如果删除成功给出提示.那么问题来了,接口里响应的字符串怎么匹 ...

  7. Spring MVC(十六)--Spring MVC国际化实例

    上一篇文章总结了一下Spring MVC中实现国际化所需的配置,本文继上一文举一个完整的例子,我选择用XML的方式.我的场景是这样的: 访问一个页面时,这个页面有个表格,对表头中的列名实现国际化. 第 ...

  8. Maven+Eclipse+Spring MVC简单实例

    1. ToolsVersion and Preparations: Eclipse: 3.5 (eclipse-jee-galileo-win32) Maven: 2.0.11 Spring MVC ...

  9. Spring MVC配置实例

    1.下载Jar文件,添加到项目 lib文件夹中. 使用eclipse新建 Web 项目.下载导入相关的 jar 和 Tomcat.我的java版本是JDK1.8 对应的 Tomcat 版本是 8.0. ...

随机推荐

  1. go语言之指针

    package main import "fmt" //指针 //go语言的指针是非常容易学习的,比c中容易很多,他可以更简单的执行一些任务 //与变量类型,使用前需要定义 fun ...

  2. 母版页 treeview控件 SiteMapPath控件 treeview数据库绑定模式

     母版页就是网站中一样的部分母版页的后缀名是.Master可以把母版页当成一个页面  想让哪里是别的内容就可以  通过如下: <asp:ContentPlaceHolder ID="C ...

  3. 【重拾基础】耐人寻味的CSS属性white-space

    <耐人寻味的CSS属性white-space>,本文说的white-space是一个控制换行和空白处理的CSS属性.我曾经被这个属性烦死,一直没记住,今天决定还是写下来好好琢磨下. 属性值 ...

  4. ASP.NET Core SignalR:基础概述

    一.简介 ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. SignalR 的适用 ...

  5. SpringCloud的入门学习之概念理解、Eureka服务注册与发现入门

    1.微服务与微服务架构.微服务概念如下所示: 答:微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题.提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面的一个个微服务 ...

  6. Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之二 || 后端项目搭建

    本文梯子 前言 1..net core 框架性能测试 2..net core 执行过程 3.中间件执行过程 4.AOP切面 5.整体框架结构与数据库表UML 一.创建第一个Core 1.SDK 安装 ...

  7. python-Redis模块常用的方法汇总

    Redes模块常用的方法汇总 一.创建建Redis对象 1.直接使用 import redis r = redis.Redis(host='127.0.0.1', port=6379) 2.连接池使用 ...

  8. Java学习 1.4——第一个Java程序:Hello World!

    这一篇一起来写第一个Java程序,同时也了解一下IDEA的使用: 打开IDEA,新建项目: 选择Java,右边project SDK是选择Java版本,上一篇我们自己安装了JDK1.8,IDEA自带一 ...

  9. View和ViewGroup

    1.继承关系 2.组合关系 3.View 的绘制流程 3.1.创建R.attrs.styleable,申明需要用到的属性值,在使用时可以根据属性进行定义   3.2.extends View  ,依次 ...

  10. PyCharm多行同时输入

    按住ALT,用鼠标在需要的位置点击添加光标,然后输入内容即可