前言:
小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师。
这个SpringMVC基础学习系列是用来记录我学习SpringMVC框架基础知识的全过程 (这个系列是参照B站狂神的SpringMVC最新教程来写的,由于是之前整理的,但当时没有发布出来,所以有些地方可能有错误,希望大家能够及时指正!)
之后我将尽量以两天一更的速度更新这个系列,还没有学习SpringMVC框架的小伙伴可以参照我的博客学习一下;当然学习过的小伙伴,也可以顺便跟我一起复习一下基础。最后,希望能够和大家一同进步吧,加油吧,编程人!
特别提醒:如果对SpringMVC基础学习系列感兴趣,可以阅读本系列往期博客:
第一篇:SpringMVC基础学习之简单回顾MVC架构和Servlet的使用
第二篇:SpringMVC基础学习之初识SpringMVC
今天我们来到了SpringMVC基础学习的第三站:第一个HelloSpringMVC程序 ,本期主要学习 编写第一个HelloSpringMVC程序。废话不多说,让我们开始今天的学习内容吧。
3.第一个HelloSpringMVC程序
3.1 搭建基本环境
3.1.1 创建子项目和导入资源依赖
1.创建Module子项目
- 右击父工程名称【SpringMVC】,点击【New】新建,然后选择【Module】模块
2. 创建普通Maven项目
- 与父工程相同,子模块还是选择创建一个普通的Maven项目,不用勾选任何选项,然后给子模块起名字,例如 【springmvc-02-hellomvc】
3. 导入资源依赖
- 在子项目的pom.xml配置文件中引入相关的资源依赖
<dependencies>
<!-- servlet-api资源依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<!-- jsp-api资源依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
3.1.2 添加框架支持
1. 添加框架支持
- 右击项目名称,选择【Add Framework Support…】,即添加框架支持
2.勾选Web Application
- 进入【Add Framework Support】界面,即添加框架支持,接着勾选JavaEE目录下的【Web Application】(Web应用程序)
3.1.3 配置web.xml文件
- 找到子项目【springmvc-02-hellomvc】的web文件目录下的WEB-INF文件下的web.xml配置文件,进行配置文件的编写
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 注册DispatcherServlet
配置DispatcherServlet(前置控制器), DispatcherServlet主要作用: 这个是SpringMVC的核心, 请求分发器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- DispatcherServlet要绑定Spring的配置文件
关联一个SpringMVC的配置文件: 【servlet-name】- servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- classpath*: 会去所有的包中找,建议使用classpath: -->
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!-- 启动级别 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 在SpringMVC中,/ 和 /* 作用不相同:
/: 匹配所有的请求(不包括.jsp)
/*: 匹配所有的请求(包括.jsp)-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3.2 完善环境搭建
3.2.1 创建HelloController控制类
- 在src目录下的main文件下的java文件下,创建一个com.kuang.controller包,来存放控制层的HelloController类
package com.kuang.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意:这里要实现Controller接口,是web.servlet.mvc包下
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
// 获取ModelAndView对象 (模型和视图)
ModelAndView mv = new ModelAndView();
/**
* 业务代码
*/
// 设置返回结果
String result = "HelloSpringMVC";
// 封装对象,放在ModelAndView中
mv.addObject("msg",result);
// 视图跳转: 封装要跳转的视图, 放在ModelAndView中
mv.setViewName("hello"); // 访问路径: /WEB-INF/jsp/hello.jsp
return mv;
}
}
3.2.2 编写springmvc-servlet.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">
<!-- 配置一个URL处理器以及一个URL适配器:
作用是将URL去匹配Spring中有哪一个Controller去处理它 -->
<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- InternalResourceViewResolver: 表示视图解析器
主要处理DispatcherServlet(中心控制器)给它的ModelAndView (模型视图)
常用的模板引擎包括Thymeleaf和FreeMaker等 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!-- 后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
<!--注册Bean信息,将HelloController控制器交给Spring容器管理-->
<bean id="/hello" class="com.kuang.controller.HelloController"></bean>
</beans>
3.2.3 编写视图层JSP页面
- 在web文件夹中的WEB-INF文件下,创建一个jsp文件夹,用来存放视图层的相关页面文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!-- 展示HellloController控制器中封装的对象信息 -->
${msg}
</body>
</html>
3.3 项目测试和问题分析
3.3.1 启动Tomcat服务器
- 点击左上角工具栏中的【Tomcat7】后面的【Run】运行按钮
3.3.2 测试结果及分析
1.测试结果
结果:出现404错误!
2. 原因分析
其实并不是程序本身代码的问题,而是IDEA编译器的问题,输出过程中【springmvc-o2-hellomvc】子项目的WEB-INF文件中的classes文件下没有自动生成运行所需要的lib文件
3.3.3 解决404访问失败问题
1.配置项目结构
- 在IDE编译器左上方的工具栏一行,找到倒数第三个长得像文件夹的图标,点击进入【Project Structure】,即项目结构页面
2. 新建文件目录
3.添加lib文件资源
- 点击lib文件目录,右击选择【Add Copy of】(添加复制),然后接着选择【Library Files】(资源文件)
4. 选择项目Library资源
- 选择【Project Library】下的所有资源依赖,点击【OK】即可
5. 添加Library资源成功
- 如下图所示,lib文件夹下被成功添加了前面所选的Library资源,然后点击【Apply】(应用此设置),然后就可以了
3.3.4 重新测试结果
1.进入默认index.jsp页面
结果:访问默认页面成功!
2.进入hello页面
- 在默认URL地址链接后面加上hello,即 http://localhost:8888/springmvc02hellomvc_war_exploded/hello
结果:访问成功,页面显示“HelloSpringMVC!”的提示信息!
好了,今天的有关 第一个HelloSpringMVC程序 的学习就到此结束啦。欢迎小伙伴们积极学习和讨论,喜欢的可以给蜗牛君点个关注,顺便来个一键三连。我们下期见,拜拜啦!