SpringMVC(一)搭建第一个SpringMVC实例
一、SpringMVC概述
SpringMVC也叫Spring Web MVC,数据Spring框架的一部分,在Spring3.0之后发布。
优点:
-
基于MVC架构,分工明确,能够解耦合
-
SpringMVC是轻量级的,jar很小,不依赖特定的接口和类
-
作为Spring框架的一部分,能够使用Spring的Ioc、Aop,方便整合Struts、Mybatis、Hiberate等其他框架。
二、第一个SpringMVC实例
实现功能::用户提交一个请求,服务端处理器在接收到这个请求后,给出一条欢迎信息, 在响应页面中显示该信息。
<!--spring-webmvc依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!--servlet依赖 (servlet的jar)-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
- 创建JSP文件
- index.jsp用于提交请求
<body>
<h1><a href="some.do">点击发送(some.do)请求</a></h1><br>
<h1><a href="other.do">点击发送(other.do)请求</a></h1>
</body>
- show.jsp用于接收some.do请求结果
<body>
<h1>/WEB-INF/view/show.jsp从request作用域中获取数据</h1><br>
<h1>msg数据:${msg}</h1><br>
<h1>fun数据:${fun}</h1><br>
</body>
- other.jsp用于接收other.do请求结果
<body>
<h1>/WEB-INF/view/other.jsp从request作用域中获取数据</h1><br>
<h1>msg数据:${msg}</h1><br>
<h1>fun数据:${fun}</h1><br>
</body>
- MyController.java
package cn.krain.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//@Controller:表示当前类为处理器
@Controller
public class MyController {
/* * 处理用户请求,springmvc中使用方法进行处理 * 方法时自定义的,可以有多种返回值和多个参数 * * @RequestMapping:请求映射,作用是把一个请求地址和一个方法绑定,使得一个方法处理一个请求 * * 属性:1、value是一个String,表示请求的url地址,value的值必须唯一,不能重复,推荐地址“/” * * 位置:在方法之上 * 说明:使用@RequestMapping修饰的方法叫做处理器或控制器方法 * 该方法可以处理请求,类似servlet中的doGet或doPost方法 * * 返回值:ModelAndView 表示本次请求放回的处理结果 * Model:数据、请求处理完成后显示给用户的数据 * View:视图,例如JSP * */
@RequestMapping(value = "/some.do")
public ModelAndView doSome(){
ModelAndView mv = new ModelAndView();
//添加数据到request域中
//等同于:request.setAttribute("msg","欢迎使用SpringMVC")
mv.addObject("msg","欢迎使用SpringMVC");
mv.addObject("fun","指定的是doSome方法");
//指定视图的完整路径
//等同于Servlet中的转发操作
//mv.setViewName("/WEB-INF/view/show.jsp");
//在springmvc.xml文件中配置视图解析器,使用逻辑名称(文件名)指定视图
//框架会使用视图解析器的 前缀 + 逻辑名称 + 后缀 组成文件路径
mv.setViewName("show");
return mv;
}
@RequestMapping(value = "/other.do")
public ModelAndView odOther(){
ModelAndView mv = new ModelAndView();
mv.addObject("msg","===========欢迎使用SpringMVC===========");
mv.addObject("fun","指定的是odOther方法");
mv.setViewName("other");
return mv;
}
}
- 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">
<!-- 配置中央调度器: 声明、注册springmvc的核心对象DispatcherServlet 在tomcat服务器启动后,创建DispatcherServlet对象实例 在DispatcherServlet对象创建的过程中,同时会创建springmvc容器对象, 读取springmvc配置文件,把配置文件中的对象全部创建好,当用户发起请求时直接使用 servlet的初始化方法init(),DispatcherServlet在init()中执行{ //创建容器对象,读取配置文件 WebApplicationContext ctx = new ClassPathXmlApplicationContext("springmvc.xml"); //将容器放到ServletContext中 getServletContext().setAttribute(key,ctx); } -->
<servlet>
<servlet-name>myweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- springmc创建对象时,默认读取配置文件的路径是/WEB-INF/<servlet-name>-servlet.xml 因此需要修改配置文件路径 -->
<init-param>
<!--springmvc配置文件的属性-->
<param-name>contextConfigLocation</param-name>
<!--指定自定义文件位置-->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- tomcat启动后根据load-on-startup参数的值创建对象。 该标签参数值为大于零的整数,从小到大依次进行对象的创建。 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<!-- 使用框架时,url-pattern可以有两种值 1、使用自定义扩展名 语法:*.xxx xxx是自定义扩展名。常用的有 *.do *.action *.mvc等 2、使用"/" -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
- 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 http://www.springframework.org/schema/context/spring-context.xsd">
<!--声明组件扫描器-->
<context:component-scan base-package="cn.krain.controller" />
<!--声明springmvc框架中的视图解析器,帮助开发人员设置视图文件路径-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀:视图文件路径-->
<property name="prefix" value="/WEB-INF/view/"/>
<!--后缀:视图文件扩展名-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
- 运行结果
发送(some.do)请求:
发送(other.do)请求: