从Spring的学习开始,终于来到了SpringMVC这个火爆的框架,有些人喜欢直接模式化的学习SpringMVC开发,发现一样能成功,但是并不知道其中的一些基本的过程,想学习SpringMVC建议还是一步一个脚印,从javaweb到spring再到SpringMVC,你会发现他的演变过程和简化内容,对它会有一个更熟悉的认知。
这里先简述一下开发步骤,大抵如下:
接下来我们一步一步来用代码实现:
这里承接的是上一期的代码,已经配置好了spring集成web的环境
目录
2. 配置SpringMVC核心控制器DispatcherServlet
1. 导入SpringMVC相关坐标
<!-- 导入springmvc的坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
注意这个版本要和其他的spring的版本一样。
2. 配置SpringMVC核心控制器DispatcherServlet
配置的地点就位于web.xml中,他其实就是一种servlet的共同部分,怎么来理解它,可以看下图:
那个共有行为就是我们的核心控制器,所有的请求和响应都通过这个核心控制器,POJO其实就是bean。
配置的代码如下:
<!-- 配置SpringMVC的前端控制器,设置为一启动就开启,而不是被访问才开启-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- springmvc是单独的配置文件,要与总的spring配置文件的业务区分开,这里也是监听器方式,启动就创建spring-mvc的容器,我们controller层的bean都规定在这里-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 任何请求都调用这个servlet-->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
各个代码的解释已在注释中,到这我们的DispatcherServlet就配置好了。
3. 创建controller类和视图页面
这个controller类,就是我们处理特有行为的方法的类,我们可以在这个类下定义许多方法,返回不同数据,不同页面,通过@RequestMapping设置不同请求的映射。
演示一个代码:
//放入容器中
@Controller("userController")
@RequestMapping("/user")//mapping可以嵌套,这样的好处是若是有多个controller的类,可以方便区分
public class userController {
//添加映射,定制访问时调用的方法
@RequestMapping("/quick")
public String save(){
System.out.println("Controller save running...");
return "/success.jsp";//加“/”表示从当前应用主路径下找这个jsp,不加的话表示相对的地址
}
}
这是一段十分简单的代码,首先我们需要将这个类放入我们特制的spring-mvc容器中,建议通过注解的方式,然后放在容器之后,每当服务器接收到请求之后,我们的核心控制器就会在spring-mvc的各个bean里去找哪一个mapping注解的这个方法来调用这个方法得到我们要返回的响应。
这里直接return的一个jsp页面的文件名的字符串,响应会自动知道是要跳转到这个页面。
4. 使用注解配置业务方法的映射
就是我们第3点里介绍的@RequestMapping,看代码就会了。
5. 配置核心文件spring-mvc.xml
在第2点已经提到了,具体的代码就是这段:
在这之前我们需要在resource中创建一个名为spring-mvc的spring配置文件,并在里面添加扫描:
而扫描的base-package只能是我们的controller的包下面,做到与主配置文件的业务分开。
6. 请求测试
这一个相信就不用多说了,运行项目,然后访问编写好的映射,查看效果。