本文属于SpringMVC的入门篇,属于基础知识,仅供学习分享使用,如有不足之处,还请指正。

什么是SpringMVC ?

SpringMVC是一个基于Spring的MVC框架,继承了Spring的优秀特点,目前是使用率最高的Java EE Web MVC框架。

SpringMVC优势有哪些?

  1. SpringMVC运行速度会比Struts快一些(SpringMVC是单例模式,线程不安全,所以不要使用成员变量,Struts是多线程的方式,线程间是安全的)
  2. SpringMVC更加简洁,开发效率更高;层次清晰,便于阅读

SpringMVC体系结构

如下图所示:

SpringMVC环境搭建

1. 新建一个Web工程【Dynamic Web Project】

File-->New-->Dynamic Web Project,按照步骤执行即可。如下图所示:

2. 导入SpringMVC需要的Jar(Java Archive)包

需要导入的Jar包共8个,分为三个部分,如下所示:

//日志包
commons-logging-1.1.1.jar
//spring核心包
spring-aop-4.0.6.RELEASE.jar
spring-beans-4.0.6.RELEASE.jar
spring-context-4.0.6.RELEASE.jar
spring-core-4.0.6.RELEASE.jar
spring-expression-4.0.6.RELEASE.jar
//WebMVC包
spring-web-4.0.6.RELEASE.jar
spring-webmvc-4.0.6.RELEASE.jar

3. 配置web.xml

主要是配置核心控制器,如下图所示:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<!-- SpringMVC是使用Servlet来做控制器的,默认在/WEB-INF/[servlet-name]-servlet.xml这个路径,如:dispatcher-servlet.xml -->
<!-- 为什么用的时候才报错?Tomcat启动的时候不报错?
Sturts只要配置报错了,启动的时候就会报错,SpringMVC是在第一次访问的时候才创建Servlet
-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 以下语句配置,在tomcat启动时,启动核心控制器 -->
<load-on-startup>1</load-on-startup>
<!-- /WEB-INF/dispater-servlet.xml -->
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!-- 请求入口 -->
<url-pattern>/</url-pattern>
</servlet-mapping> <display-name>FirstSpringMvc</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

4. 新建一个类实现Cotroller接口

一个Controller只有一个handleRequest方法需要实现,用来处理页面的请求

 package com.hex.springmvc;

 import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; /**
* 实现Controller接口
* @author Administrator
*
*/
public class HelloWorldController implements Controller { @Override
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
ModelAndView mav=new ModelAndView();
mav.addObject("msg", "Hello World,你好,SpringMVC");
mav.setViewName("WEB-INF/jsp/HelloWorld.jsp");
System.out.println("控制器被执行了!!!");
return mav;
} }

5. 新增Controller配置文件

SpringMVC有一个默认的配置文件,默认在/WEB-INF/[servlet-name]-servlet.xml这个路径,如:dispatcher-servlet.xml。

一个bean就表示一个Controller,用id属性来唯一表示。如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<bean id="/HelloWorld" class="com.hex.springmvc.HelloWorldController"></bean>
</beans>

6. 新增JSP(Java Server Pages)页面

${msg}表示接收Controller传递过来的参数内容,如下所示:

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SpringMVC欢迎你</title>
</head>
<body>
<h1>欢迎信息</h1>
<h1>${msg}</h1>
</body>
</html>

7. 访问

启动Tomact,打开浏览器,输入网址http://localhost:8080/FirstSpringMvc/HelloWorld,如下所示,则表示成功

8. 文件结构

整个文件结构,如下图所示:

SpringMVC对静态资源的支持

在配置核心控制器时<url-pattern>/</url-pattern>,会导致SpringMVC框架下,静态资源无法访问(css,js,img),则需要配置对静态资源的支持,如下所示:

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 静态资源的支持 -->
<mvc:default-servlet-handler/>
<bean id="/HelloWorld" class="com.hex.springmvc.HelloWorldController"></bean>
</beans>

配置过后,图片就可以访问了,如下所示:

源码下载链接

备注

如山间清爽的风,如古城温暖的光

一起学SpringMVC之入门篇的更多相关文章

  1. 2.学习SpringMVC注解入门篇

    一.SpringMVC执行流程 . 二.创建项目学习SpringMVC注解 按照我之前的SpringMVC创建项目,首先创建一个项目springmvc01,配置好pom.xml,web.xml,spr ...

  2. SpringMVC 学习-入门篇

    一.都需要哪些 Jar 包 <dependencies> <dependency> <groupId>org.springframework</groupId ...

  3. 一起学Vue之入门篇

    概述 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还 ...

  4. 边走边学Nodejs (基础入门篇)

    1.什么是Node.js Nodejs ,或者node, 是一个基于ChromeJavaScript执行时建立的平台.用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非堵 ...

  5. 一起学MyBatis之入门篇(2)

    概述 本文主要讲解MyBatis中类型转换的功能,其实在MyBatis中,提供了默认的数据类型之间的转换,但只是基本数据类型的转换,如果跨类型进行转换,则需要自定义转换类,如java中是boolean ...

  6. 一起学MyBatis之入门篇

    概述 本文以一个简单的小例子,简述在Java项目开发中MyBatis的基本用法,属于入门级文章,仅供学习分享使用,如有不足之处,还请指正. 什么是MyBatis? MyBatis 是一款优秀的持久层框 ...

  7. 《Java从入门到放弃》入门篇:springMVC数据校验

    昨天我们扯完了数据传递,今天我们来聊聊数据校验的问题.来,跟着我一起读:计一噢叫,一按艳. 在springMVC中校验数据也非常简单,spring3.0拥有自己独立的数据校验框架,同时支持JSR303 ...

  8. SpringMVC.入门篇《二》form表单

    SpringMVC.入门篇<二>form表单 项目工程结构: 在<springmvc入门篇一.HelloWorld>基础上继续添加代码,新增:FormController.ja ...

  9. SpringMVC.入门篇.一.HelloWorld

    SpringMVC.入门篇<一>HelloWorld 项目包结构如下: HelloController.java 代码 package com.charles.controller; im ...

随机推荐

  1. 微信小程序 wepy框架 之拦截器intercepter使用

    1,在使用wepy框架创建的项目下 找到src/app.wpy 2,在app.wpy constructor方法中添加 super(); this.use('promisify');//启用ES6 p ...

  2. Linux系统入门简介<1>

    linux系统入门简介 我们为什么要学习Linux? 在介绍Linux的历史前,我想先针对大家如何对Linux的发音说一下.我发现我身边的朋友对Linux的发音大致有这么几种: "里那克斯& ...

  3. elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移

    一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:ht ...

  4. 电商设计V1(一):软件工程设计

    软件工程设计的方式方法 多视图法: 全面分析软件方方面面的问题 尽早地发现和排除项目风险与不确定因素 从不同角度去展现要设计的软件系统 为项目进行不同的干系人提供指导: 逻辑架构描述系统功能,并指导系 ...

  5. 【CV现状-2】三维感知

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  6. jQuery实现简单购物车页面

    功能描述: 当全选按钮被按下时,所有商品的小复选框(以及另外一个全选按钮)的选中状态跟按下的全选按钮保持一致: 当用户选中商品时,如果所有商品都被选中,就让全选按钮为选中状态: 用户可以点击 + - ...

  7. android shape实现阴影或模糊边效果

    1.实现阴影或模糊边效果方式: 2.通过shape来实现,具体是通过layer-list 多层叠放的方式实现的 <?xml version="1.0" encoding=&q ...

  8. 区块链技术驱动金融.mobi

    链接:https://pan.baidu.com/s/1yY8f_PglsPoudb76nru9Ig 提取码:c58o 想一起学习区块链的朋友可以加好友一个学习哦,共同进步

  9. MySQL数据库Group by分组之后再统计数目Count(*)与不分组直接统计数目的区别

    简述问题“统计最新时刻处于某一状态的设备的数量” 1. 首先子查询结果,可以看到每个设备最新的状态信息 2.1 在子查询的基础上,对设备状态进行分组,进行统计每个状态的设备数量 2.1.1 可以看到处 ...

  10. oracle数据库执行sql文件

    使用oracle客户端连接数据库,从oracle官网下载客户端instantclient_18_3工具,到目录下打开cmd命令窗口: 个人网盘客户端工具:https://pan.baidu.com/s ...