1.创建一个动态web工程
2 导入需要的jar包:
spring-aop-5.2.5.RELEASE.jar
spring-beans-5.2.5.RELEASE.jar
spring-context-5.2.5.RELEASE.jar
spring-core-5.2.5.RELEASE.jar
spring-expression-5.2.5.RELEASE.jar
spring-jcl-5.2.5.RELEASE.jar
spring-web-5.2.5.RELEASE.jar
spring-webmvc-5.2.5.RELEASE.jar
- 在 web.xml中配置 前端控制器
<!--
DispatcherServlet 是前端控制器.用于接收全部的请求.然后分发给不同资源处理.<br/>
SpringMVC框架也需要一个 Spring 容器
-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--
配置 SpringMVC 框架 的 Spring 容器配置文件路径
如果把springmvc文件名改成 dispatcher-servlet.xml
则这类可以不用配置 contextConfigLocation
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--
让前端控制器在web工程启动的时候创建,并创建Spring容器.
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<!--
/ 斜杠 :表示接收全部非jsp请求
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
4.在src 源码目录下创建Spring的配置文件SpringMVC.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"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--配置包扫描 这里表示扫描com下的所有子包-->
<context:component-scan base-package="com"></context:component-scan>
</beans>
4.1 SpringMVC的配置文件的另一种存放方式:
一 : 放在源码目录下 ( 后面Maven 就存在resources目录 )
需要在web.xml中去配置 配置文件的路径 , 也就是以下的配置内容:
<!--
配置 SpringMVC 框架 的 Spring 容器配置文件路径
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
4.2 SpringMVC的配置文件 - 存放方式二
二 : 放在WEB-INF目录下 ( 不需要到web.xml中去配置路径 )
规则如下: 如果SpringMVC的配置文件 放到WEB-INF目录下.则它的配置文件名必须遵守规则如下:
SpringMVC配置文件名: + -servlet.xml
- 创建Controller
package com.geeklin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*@Controller 注解作用相当于 :
* <bean id="helloController" class="com.atguigu.controller.HelloController" />
* @Controller 表示Controller控制器
*/
@Controller
public class HelloController {
/**
* @RequestMapping 可以配置一个请求地址给当前方法
* / 表示请求地址为: http://ip:port/工程路径/ *映射* 到web目录
* /hello 表示地址为: http://ip:port/工程路径/hello
*/
@RequestMapping(value = "/hello")
public String hello(){
System.out.println("SpringMVC Hello 程序");
// 返回值表示跳转的路径 === SpringMVC底层默认是以 请求转发 来进行页面的跳转
return "/pages/ok.jsp";
}
}
- 如果配置了视图解析器的话,就可以省return 后的前后缀。
在springmvc.xml中配置:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 比如,这个完整的返回值: /pages/ok.jsp
文件名之前的内容就是前缀,文件名后面的内容就是后缀。
/pages/ 是前缀 .jsp 是后缀
在有前缀,后缀的情况下.我们又管文件名叫 : 视图名 --> ok
-->
<!-- prefix 表示前缀 -->
<property name="prefix" value="/pages/" />
<!-- suffix 表示前缀 -->
<property name="suffix" value=".jsp" />
</bean>
解析:
在有视图解析器时, Controller 控制器的业务方法中 ,返回值 只需要写 视图名 即可.
当有了视图解析器之后 , Controller 控制器中的业务方法的返回值 都会和 视图解析器中的前缀和后缀做 字符串拼接操作,再得到完整的路径.
ok 就会和前缀后缀做拼接:前缀+视图名+后缀 得到完整的请求地址.
视图名是 : ok
前缀是 : /pages/
后缀是 : .jsp
完整的路径是 : /pages/ok.jsp
@RequestMapping(value = "/hello")
public String hello(){
System.out.println("SpringMVC Hello 程序");
// 返回值表示跳转的路径 === SpringMVC底层默认是以 请求转发 来进行页面的跳转
return "ok";
}
以上就是创建第一个SpringMVC的hello实例,喜欢的话点个赞~~~~