您现在的位置是:首页 > 正文

Spring MVC教程(附详细操作步骤)

2024-02-29 13:06:03阅读 4

必读: 基于框架的程序要成功运行,对于JAR包的版本,配置文件的正确性有着苛刻的要求,任何一个地方出错了,都会导致框架程序运行失败。 如果你是第一次学习本框架,务必严格按照教程的指导,完全模仿操作,直到成功看到运行效果。 第一次成功之后,信心,思路都会有较好的铺垫,然后再根据自己的疑惑,在“成功”的代码上做原本想做的改动和调整,这样可以大大节约学习的时间,提高效率,切勿一来就擅自改动,给自己的学习制造障碍

步骤 1 : 先运行,看到效果,再学习
步骤 2 : 模仿和排错
步骤 3 : 创建项目springmvc
步骤 4 : 导入jar包
步骤 5 : web.xml
步骤 6 : 创建springmvc-servlet.xml
步骤 7 : 控制类 IndexController
步骤 8 : 准备index.jsp
步骤 9 : 部署在tomcat中,重启测试
步骤 10 : 原理图
步骤 11 : 完整的项目下载
步骤 12 : 练习

步骤 1 : 先运行,看到效果,再学习
Spring MVC需要做不少步骤,任何一步做漏了,做错了,都有可能失败,这样会影响学习的信心,并且误以为本教程是走不通的。

所以先下载可运行项目springmvc.rar:下载地址,解压后导入到eclipse中,启动Tomcat,观察是否正常运行。确定可以运行,确定教程是可以跑得起来的,再学习下面的内容。

导入到Eclipse中并运行的办法请参考:导入动态Web项目到Eclipse中

部署成功之后,测试地址,应该看到如图所示的效果
http://127.0.0.1:8080/springmvc/index
注: 这是动态项目格式,不支持独立Tomcat方式部署
在这里插入图片描述
注: 这是动态项目格式,不支持独立Tomcat方式部署

步骤 2 : 模仿和排错
在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。
模仿过程难免代码有出入,导致无法得到期望的运行结果,此时此刻通过比较正确答案 ( 可运行项目 ) 和自己的代码,来定位问题所在。
采用这种方式,学习有效果,排错有效率,可以较为明显地提升学习速度,跨过学习路上的各个槛。

推荐使用diffmerge软件,进行文件夹比较。把你自己做的项目文件夹,和我的可运行项目文件夹进行比较。
这个软件很牛逼的,可以知道文件夹里哪两个文件不对,并且很明显地标记出来
这里提供了绿色安装和使用教程:diffmerge 下载和使用教程

步骤 3 : 创建项目springmvc
在eclipse中新建项目springmvc,使用dynamic web project的方式。 不熟悉这种方式的同学,请参考 使用Dynamic Web Project的方式开发J2EE应用
在这里插入图片描述
步骤 4 : 导入jar包
下载lib.rar下载地址, 解压后复制到 e:/project/springmvc/WebContent/WEB-INF/lib目录下
在这里插入图片描述
步骤 5 : web.xml
在WEB-INF目录下创建 web.xml
配置Spring MVC的入口 DispatcherServlet,把所有的请求都提交到该Servlet
注意:springmvc
springmvc这个名字在下一步会用到

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

步骤 6 : 创建springmvc-servlet.xml
在WEB-INF目录下创建 springmvc-servlet.xml
springmvc-servlet.xml 与上一步中的

<servlet-name>springmvc</servlet-name>

springmvc对应
这是Spring MVC的 映射配置文件
表示访问路径/index会交给id=indexController的bean处理
id=indexController的bean配置为类:IndexController

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="simpleUrlHandlerMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/index">indexController</prop>
            </props>
        </property>
    </bean>
    <bean id="indexController" class="controller.IndexController"></bean>
</beans>

步骤 7 : 控制类 IndexController
控制类 IndexController实现接口Controller ,提供方法handleRequest处理请求
SpringMVC通过 ModelAndView 对象把模型和视图结合在一起

ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");

表示视图是index.jsp
模型数据是 message,内容是 “Hello Spring MVC”

package controller;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
 
public class IndexController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("index.jsp");
        mav.addObject("message", "Hello Spring MVC");
        return mav;
    }
}

步骤 8 : 准备index.jsp
在WebContent目录下创建index.jsp
index.jsp很简单,通过EL表达式显示message的内容
在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
 
<h1>${message}</h1>

步骤 9 : 部署在tomcat中,重启测试
部署在Tomcat中,重启tomcat,然后访问地址,观察效果
http://127.0.0.1:8080/springmvc/index
部署办法请参考 通过Eclipse启动Tomcat-Run On Server
在这里插入图片描述
步骤 10 : 原理图

  1. 用户访问 /index
  2. 根据web.xml中的配置 所有的访问都会经过DispatcherServlet
  3. 根据 根据配置文件springmvc-servlet.xml ,访问路径/index
    会进入IndexController类
  4. 在IndexController中指定跳转到页面index.jsp,并传递message数据
  5. 在index.jsp中显示message信息
    在这里插入图片描述
    步骤 11 : 完整的项目下载
    一般说来,根据步骤一步一步的做过来,就可以运行看到结果了。
    如果实在看不到结果,多半是因为中间某个步骤不够仔细,大小写错误,多了个下划线等等细微的错误。

如果是这样,还可以在右侧下载完整的项目保证一定可以走通

步骤 12 : 练习
本例实现了访问路径/index,服务端跳转到index.jsp的效果
练习:访问路径/hello 服务端跳转到hello.jsp

最后分享一个java自学网站,涵盖从基础到高级的java全栈内容,讲解详尽,边学边做,还有练习和视频讲解,适合各级水平程序员。网站地址:https://how2j.cn/k/springmvc/springmvc-springmvc/615.html

网站文章

  • 暑假集训 - 8.12 总结

    暑假集训 - 8.12 总结

    学习内容:dfs + 剪枝完成题数:4题看书情况:11页做题总结:codeforces 587E:https://www.cnblogs.com/buhuiflydepig/p/11340218.htmlAcWing 165:https://www.cnblogs.com/buhuiflydepig/p/11340707.html心得:感觉最近几天...

    2024-02-29 13:05:57
  • 公司参加中国国际云计算技术和应用展览会

    公司参加中国国际云计算技术和应用展览会

    公司参加云计算产品展览会,我作为产品解说员有幸参加了这次展览会,这也是工作后我第一次讲解自己参与设计研发的产品,自己的汗水和辛苦能够上产品展览会也是很有成就感的事情。       因为公司被评为“云计算龙头企业”,所以展台肯定不能小,我参观了整个展览馆,公司展台是比较大的之一,公司展台在展会入口出,看来工信部也是比较重视我们的,我们公司有5个参展的云计算产品:1、“天成云”iVCS艾维虚拟

    2024-02-29 13:05:50
  • C++ STL中,map和set有什么区别,分别又是怎么实现的?

    map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转...

    2024-02-29 13:05:22
  • String AOP

    String AOP

    添加 AOP 框架⽀持。定义切⾯和切点。定义通知。概念很抽象,最好找个老师/前辈讲解或者看视频讲解.

    2024-02-29 13:05:13
  • 微信小程序学习Course 3-1 JS字符串对象学习

    微信小程序学习Course 3-1 JS字符串对象学习微信小程序学习Course 3-1 JS字符串对象学习本篇主讲String对象函数参考资料:http://www.w3school.com.cn/jsref/jsref_obj_string.asp此处只列举后面案例补充的内容,随着以后学习继续补充。关键函数解析1、字符串分割stringObject.sp...

    2024-02-29 13:05:06
  • HashMap源码学习笔记

    HashMap源码学习笔记

    HashMap:HashMap----数据结构:// 初始容量static final int DEFALUT_INITIAL_CAPACITY = 1 << 4 ; // 最大容量static fi...

    2024-02-29 13:04:37
  • CentOS7.9安装Gitlab、502问题、配置初始账号密码、设置中文界面、配置邮件服务

    CentOS7.9安装Gitlab、502问题、配置初始账号密码、设置中文界面、配置邮件服务

    文章目录Gitlab的使用1、CentOS7.9安装Gitlab2、安装后无法访问、502问题3、Gitlab初始账号密码4、Gitlab设置中文显示5、Gitlab配置邮件服务Gitlab的使用1、...

    2024-02-29 13:04:29
  • [Python]递归函数-理解汉诺塔

    [Python]递归函数-理解汉诺塔

    原创文章,欢迎转载。转载请注明:转载自 祥的博客原文链接:文章目录@[toc]1. 代码及结果1.1. Python文件代码1.2. 显示结果2.理解Python的递归函数-理解汉诺塔1. 代码及结果1.1. Python文件代码文件名:getYuanZunInfo.py# 利用递归函数移动汉诺塔:def move(n, a, b, c): if n == 1: ...

    2024-02-29 13:04:23
  • JQuery 在数组首位追加元素

    var array = new Array();array.unshift()

    2024-02-29 13:03:55
  • mvc5 ajax post json,升级到MVC5后,jQuery Post无法正常工作,但jQuery AJAX可以正常工作

    I'm attempting to upgrade a project from .NET 4 & MVC4 to .NET 4.5 & MVC5. I've managed to get everything working fine except for my jQuery.post() methods.I've created a simple test API contro...

    2024-02-29 13:03:46