概述

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

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

  1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
6
7 <!--配置Handle,映射"/hello"请求-->
8 <bean name="/hello" class="com.snow.dcl.controller.HelloController"/>
9 <!--将bean的name作为url进行查找-->
10 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
11 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
12 <!--视图解析器-->
13 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
14
15 </beans>
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 public class HelloController implements Controller {
2
3 @Override
4 public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
5 ModelAndView modelAndView = new ModelAndView();
6 modelAndView.addObject("message", "Hello!");
7 modelAndView.setViewName("/WEB-INF/content/welcome.jsp");
8 return modelAndView;
9 }
10
11 }
12

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

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

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

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

测试


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

基于注解的控制器实例


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

修改HelloController类


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

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

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

修改Spring MVC的配置文件


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

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

    前言:引擎组件的基本职责是负责流程流转,但是在流转过程中,除了对内部控制逻辑进行实现外,也不可避免的要去调用或者响应外部事件.本文主要描述外部事件的类型,以及调用方法过程. 1. 外部事件的类型 外部 ...

  2. Scrapy中response属性以及内容提取

    一.属性 url :HTTP响应的url地址,str类型 status:HTTP响应的状态码, int类型 headers :HTTP响应的头部, 类字典类型, 可以调用get或者getlist方法对 ...

  3. Java操作数据库——手动实现数据库连接池

    Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...

  4. hive查询语句入门(hive DDL)

    hive DDL 启动hadoop /apps/hadoop/sbin/start-all.sh 开启MySQL库,用于存放hive的元数据 sudo service mysql start 启动hi ...

  5. 使用Kubernetes进行ProxySQL本机群集

    自v1.4.2起,ProxySQL支持本机群集.这意味着多个ProxySQL实例可识别群集; 他们了解彼此的状态,并能够通过根据配置版本,时间戳和校验和值同步最新的配置来自动处理配置更改. Proxy ...

  6. 【原创】REPORT自动生成工具

    ---------------------------------------------- 本博客所有原创文章,未经博主允许,请勿转载. ------------------------------ ...

  7. nginx实现基础web

    目录 nginx实现基础web 什么是lnmp lnmp架构如何工作 Nginx与Fast-CGO详细工作流程 LNMP环境准备 一,部署LNMP 1.使用nginx官方源 2.创建nginx用户 3 ...

  8. mysql主从配置实现一主一从读写分离

    主从介绍Mysql主从又叫Replication.AB复制.简单讲就是A与B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,实现数据实时同步mysql主从是基于binlog,主上需开启bin ...

  9. SQL Server清理数据库日志的脚本-干货

    USE [master]GOALTER DATABASE AAAAAA SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE AAAAAA SET RECO ...

  10. 关于华为模拟器(eNSP)添加路由器启动后一直打印#号的原因

    操作系统为win10 专业版 1903:1.首先打开控制面板,找到windows defender防火墙,在“允许应用通过防火墙”中把和espn相关的两个的专网和公网都勾选上,最后确定:然后重启华为模 ...