目录

  • 1、开发环境准备
    • 1.1、首先电脑需要安装JDK环境(略)
    • 1.2、准备一个以供开发的tomcat
    • 1.3、准备Maven工具
    • 1.4、准备IDE编译器
    • 1.5、准备一个本地的数据库,
  • 2、搭建SpringMVC开发环境
    • 2.1、创建web工程
    • 2.2、使用maven引入相关的依赖
    • 2.3、项目的整体结构图
    • 2.4、新增springmvc-servlet的配置文件
    • 2.5、web.xml核心配置
    • 2.5、第一个HelloController
    • 2.6、配置Tomcat服务并启动
    • 2.7、增加数据库配置
    • 2.8、访问数据库测试
  • 3、框架搭建过程注意事项
    • 3.1、创建maven项目特别缓慢?
    • 3.2、applicationContext.xml和springmvc-servlet.xml区别?
    • 3.3、ApplicationContext和WebApplicationContext的关系?

1、开发环境准备

1.1、首先电脑需要安装JDK环境(略)

说明:本机使用的是JDK1.8.0_45,一定要记得配置环境变量。

1.2、准备一个以供开发的tomcat

说明:本机使用的是Tomcat 8.0.35。

1.3、准备Maven工具

说明:因为本机使用的是maven构建项目,本机使用的Maven版本为apache-maven-3.1.0。

1.4、准备IDE编译器

说明:本次开发使用的是IDEA,如果使用Eclipse也不影响开发。

1.5、准备一个本地的数据库,

说明:本机使用的是mysql数据库,目的是为了测试数据库连接以及访问,数据库版本为mysql 5.1.41。

注意一下,上面是本次开发使用的开发环境的前期准备工作,如果是没有进行过开发的小白可提前把开发环境搭建好,搭建开发环境的案例很多,本次就不再赘述了。

2、搭建SpringMVC开发环境

2.1、创建web工程

首先使用Maven工具创建一个webapp工程,选择 File -> New Module ->Maven,选中“Create from archetype”,选择如下图的webapp工程

然后选择“下一步”填入相应的字段知道完成项目创建,如果此处创建过程非常慢,请参考注意事项3.1。

2.2、使用maven引入相关的依赖

本例中使用的spirngmvc的版本为4.3.25.RELEASE

    <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- springmvc核心依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- tomcat中存在此web运行的jar包 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency><!-- 使用SpringJDBC进行数据库配置 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- mysql数据库连接的驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!-- Spring-test配合junit使用 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency>

2.3、项目的整体结构图

本例中的springmvc的整体结构图如下图所示:

2.4、新增springmvc-servlet的配置文件

在resources目录下新增加一个myspringmvc-servelet.xml文件,可以参考一下配置:

<?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"><!-- 处理器映射器,将处理器Handler的name作为URL进行查找 --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean><!-- 处理器适配器,适配处理器中handlerRequest方法的调用 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean><!-- 配置视图解析器,把handler方法返回的逻辑视图解析为实际的物理视图 --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"/><property name="suffix" value=".jsp"/></bean>
</beans>

2.5、web.xml核心配置

增加springmvc的核心配置DispatcherServlet,配置效果如下所示:

    <servlet><!-- 配置核心控制 servlet的名字决定了核心配置文件的命名:springmvc-servlet.xml --><servlet-name>myspringmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定spring配置文件的位置,如果不配置默认/WEB-INF/[servlet-name]-servlet --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:myspringmvc-servlet.xml</param-value></init-param><!-- 项目启动时加载 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myspringmvc</servlet-name><!-- 配置url-pattern,设置为"/"表示拦截到所有的URL请求并映射到myspringmvc,包括静态资源如html, js, jpg等--><url-pattern>/</url-pattern></servlet-mapping>

2.5、第一个HelloController

编写第一个SpringMVC的Controller,需要继承自org.springframework.web.servlet.mvc.Controller
示例代码如下:

public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("hello controller 跳转到 success");ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("data", "恭喜您,测试成功了");modelAndView.setViewName("success");//跳转到/WEB-INF/views/success.jspreturn modelAndView;}
}

上面的示例中需要在/WEB-INF/views/增加一个“success”的测试页面,测试页面的代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>你好,跳转到success了!!!</h2>
<h3>${data}</h3>
</body>
</html>

编写完HelloController后需要在myspringmvc-servlet.xml中增加这个controller的配置

    <!-- 第一个springMVC测试程序 --><bean id="helloController" name="/hello" class="com.leo.controller.HelloController"></bean>

好了,第一个Controller到这里已经编写完毕了,现在开始启动测试一下了。

2.6、配置Tomcat服务并启动


然后配置启动的tomcat的位置和参数,可以参考笔者配置

部署项目的war包并且配置上下文路径,参考笔者如下图

启动tomcat

访问地址:http://localhost:8080/springmvc/

2.7、增加数据库配置

新增加数据库的配置信息,在pom.xml中增加如下配置(如果已经添加的请忽略),本示例中没有引入第三方框架,使用的是spring内置的jdbc框架

        <!-- 使用SpringJDBC进行数据库配置 --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- mysql数据库连接的驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency>

在resources目录下新增applicationContext.xml配置文件,并且添加如下内容:

<?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"><!-- Spring内置连接池 --><bean id="driverManagerDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/springframework_learning"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean><!--指定连接池--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="driverManagerDataSource"></property></bean><!-- 将这个工具类实例化给spring容器管理,不然会报空指针异常 --><bean id="beanUtil" class="com.leo.util.ApplicationContextUtil"></bean><!-- 测试的bean --><bean id="userInfoService" class="com.leo.service.impl.UserInfoServiceImpl"></bean>
</beans>

并且在web.xml中将配置文件applicationContext.xml添加进去

    <!-- 配置应用公共配置 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 定义Spring监听器,加载Spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

这里要注意一下applicationContext.xml和myspringmvc-servlet.xml都可以注入bean那他们的区别是什么?答案参考3.2

2.8、访问数据库测试

需要新写一个Controller,代码参考如下

public class GetUserInfoController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {UserInfoService userInfoService = (UserInfoService) ApplicationContextUtil.getBean("userInfoService");System.out.println("GetUserInfoController获取用户信息");ModelAndView modelAndView = new ModelAndView();//访问数据库List userInfoList = userInfoService.getUserInfoList();System.out.println(userInfoList);modelAndView.addObject("data", userInfoList);modelAndView.setViewName("success");//跳转到/WEB-INF/views/success.jspreturn modelAndView;}
}

还需要将新的Controller注册到myspringmvc-servlet.xml配置文件中

    <!-- 获取用户信息 --><bean id="getUserInfoController" name="/getUserInfo" class="com.leo.controller.GetUserInfoController"></bean>

然后启动tomcat访问:http://localhost:8080/springmvc/getUserInfo

具体的代码地址为:chapter-1-springmvc-quickstart
(https://gitee.com/leo825/spring-framework-learning-example.git)

3、框架搭建过程注意事项

3.1、创建maven项目特别缓慢?

如果遇到创建maven过程特别缓慢的情况,需要在Setting添加一些mirror配置。操作如下:
首先找到项目中maven的settings配置文件位置,File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven

其次,在maven的settings配置文件的“mirrors”节点下添加mirror配置,然后保存,重新创建一下webapp试试。

  <mirror> <id>alimaven</id>  <name>aliyun maven</name>  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  <mirrorOf>central</mirrorOf> </mirror>  <mirror> <id>CN</id>  <name>OSChina Central</name>  <url>http://maven.oschina.net/content/groups/public/</url>  <mirrorOf>central</mirrorOf> </mirror>  <mirror> <id>repo2</id>  <mirrorOf>central</mirrorOf>  <name>Human Readable Name for this Mirror.</name>  <url>http://repo2.maven.org/maven2/</url> </mirror>  <mirror> <id>net-cn</id>  <mirrorOf>central</mirrorOf>  <name>Human Readable Name for this Mirror.</name>  <url>http://maven.net.cn/content/groups/public/</url> </mirror>  <mirror> <id>ui</id>  <mirrorOf>central</mirrorOf>  <name>Human Readable Name for this Mirror.</name>  <url>http://uk.maven.org/maven2/</url> </mirror>  <mirror> <id>ibiblio</id>  <mirrorOf>central</mirrorOf>  <name>Human Readable Name for this Mirror.</name>  <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url> </mirror>  <mirror> <id>jboss-public-repository-group</id>  <mirrorOf>central</mirrorOf>  <name>JBoss Public Repository Group</name>  <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror>  <mirror> <id>JBossJBPM</id>  <mirrorOf>central</mirrorOf>  <name>JBossJBPM Repository</name>  <url>https://repository.jboss.org/nexus/content/repositories/releases/</url> </mirror>  <mirror> <id>antelink</id>  <mirrorOf>central</mirrorOf>  <name>antelink Repository</name>  <url>http://maven.antelink.com/content/repositories/central/</url> </mirror>  <mirror> <id>openkoala</id>  <mirrorOf>central</mirrorOf>  <name>openkoala Repository</name>  <url>http://nexus.openkoala.org/nexus/content/groups/Koala-release/</url> </mirror>  <mirror> <id>tmatesoft</id>  <mirrorOf>central</mirrorOf>  <name>tmatesoft Repository</name>  <url>http://maven.tmatesoft.com/content/groups/public/</url> </mirror>  <mirror> <id>mavensync</id>  <mirrorOf>central</mirrorOf>  <name>mavensync Repository</name>  <url>http://mavensync.zkoss.org/maven2/</url> </mirror>

3.2、applicationContext.xml和springmvc-servlet.xml区别?

二者区别如下:
applicationContext.xml这个一般是采用非spring mvc架构,用来加载Application Context。应用于多个servlet,配合listener一起使用。

如果直接采用SpringMVC,只需要把所有相关配置放到xxx-servlet.xml中就OK了。 如果直接使用SpringMVC是可以不添加applicationContext.xml文件的。 也可以使用applicationContext.xml添加一些公共类的bean和配置。

3.3、ApplicationContext和WebApplicationContext的关系?

ApplicationContext是Spring容器上下文,WebApplicationContext是Web容器上下文,WebApplicationContext继承自ApplicationContext,因此只要是ApplicationContext中注册的Bean都能在WebApplicationContext中获取到,反之则不然。

SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)相关推荐

  1. EclipseLink+H2 快速搭建JPA开发环境

    JPA是Java Persistence API, 是Java提供的持久层开发的统一API.但是JPA只是定义的规范接口,并没有提供具体实现, JPA的具体实现有Hibernate .EclipseL ...

  2. mybatis注解开发_快速搭建MyBatis开发环境(配置版+注解版)

    下面我们搭建一下MyBaits的开发环境,也就是一个用MyBaits框架访问数据库的例子. 1.项目结构如下 这里搭建的是一个maven项目. 2.引入依赖pom.xml 4.0.0com.suibi ...

  3. 修正《用Docker快速搭建Go开发环境》文章中的一处错误

    上周写的文章<五分钟用Docker快速搭建Go开发环境>,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了.今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处 ...

  4. linux开发 stc_在Linux上快速搭建8051开发环境

    在Linux上快速搭建8051开发环境(2018-7-2) 0. 写在开始之前 实验操作系统环境: Ubuntu 16.04 编译器: sdcc SDCC - Small Device C Compi ...

  5. SpringMVC学习(二)——快速搭建SpringMVC开发环境(注解方式)

    文章目录 说明 1.工程搭建 2.注解配置 2.1.context:annotation-config说明 2.2.context:component-scan配置说明 2.3.mvc:annotat ...

  6. 利用vagrant快速搭建rails开发环境

    为什么80%的码农都做不了架构师?>>>    Deprecated 前言 当我们学习一门新的语言或技术的时候,最麻烦或比较浪费时间的事情就是搭建开发环境.而搭建开发环境与我们将要学 ...

  7. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 Docker搭建LNMP开发环境的文章:用Docker搭建Laravel开发环境,里面详细介绍了将 nginx. mysql和 php三个容器用 docker-compose编 ...

  8. 使用PHP环境一键安装包快速搭建PHP开发环境

    在Windows系统下如何搭建PHP开发环境? 为了快速进入编程状态,顺利地完成第一个PHP程序,我们选择使用PHP集成环境包. 什么是PHP集成环境包?类似的软件又有哪些呢? 要回答这个问题,我们需 ...

  9. Windows7/10上快速搭建Tesseract-OCR开发环境操作步骤

    之前在https://blog.csdn.net/fengbingchun/article/details/51628957 中描述过如何在Windows上搭建Tesseract-OCR开发环境,那时 ...

  10. 【java开发】快速搭建java开发环境(离线开发、在线开发)

    文章目录 1.简介 2.下载和安装jdk 2.2 下载jdk 2.2 配置环境变量 2.3 常见命令 3.jdk开发 3.1 测试代码(hello world) 3.2 测试代码(animal, do ...

最新文章

  1. 一种使用GDI+对图片尺寸和质量的压缩方法
  2. docker基础 (狂神说)
  3. wxWidgets:wxRichTextEvent类用法
  4. mysql 分库分表架构与方案
  5. 新建虚拟机与window的连接
  6. iOS新上线注意事项
  7. rocketmq中各个角色介绍
  8. 周鸿祎:谷歌Chrome不是浏览器
  9. 按键精灵Q语言-怎么使用自定义函数返回值
  10. Java架构师成长之道之计算机组成原理组成篇
  11. cmd 命令操纵文件管理器、创建(删除)多级文件夹
  12. Vancouver wechat
  13. hive查看表中列的信息命令_走近大数据之Hive入门(四、Hive的管理)
  14. Kontakt 6 for Mac崩溃时常用的几种解决方案
  15. web编程之第一章HTML基础
  16. java桌面开发_java开发windows桌面应用
  17. wd移动硬盘插电脑没反应_西数移动硬盘-急急急!!!!!西部数据移动硬盘插在电脑上不显示盘符了,有人知道? 爱问知识人...
  18. 实例详解 LaTeX 写学术论文
  19. 记一次投稿springer期刊,利用tex排版文稿
  20. 一个作业题---用python创建一个通讯录

热门文章

  1. SAP 生产订单结算
  2. ABAP数据库操作系列之操作语句讲解Select
  3. 一季度跨越式增长,高灯科技跑出“第二曲线”
  4. android+动画队列,Android属性动画详解
  5. 我的世界服务器端口文件夹,我的世界手机版服务器ip端口地址大全
  6. html屏幕垂直居中显示,HTML+CSS,让div在屏幕中居中(水平居中+垂直居中)方法总结...
  7. 7 centos 源码安装samba_Centos-7安装zabbix
  8. java memcached 存储对象_memcached—向memcached中保存Java实体需注意的问题
  9. mysql mtq_MySQL基础知识 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  10. Python常用的模块和简单用法