1.springMVC的描述
1.1.SpringMVC是Spring框架内置的MVC的实现。SpringMVC就是一个Spring内置的MVC子框架.
1.2.SpringMVC的作用是实现页面和后台代码的分离
1.3.SpringMVC作为一个框架,它的好处是:
- 支持直接一个方法对一请求
- 支持数据的自动封装
- 自动支持上传组件
- 自动支持JSON的转成
2.springMVC的配置相关流程以及概念
2.1.概念说明
- 核心控制器:拦截所有请求,以实现一个请求对一个方法
- 业务控制器:经过核心控制器之后跳转到相对应业务需求的一个普通类
2.2.配置流程说明
- 我们必须在网站的入口(web.xml,WEB描述符),配置一个核心控制器,拦截所有的的请求
- 核心控制器通过加载Spring配置文件,获得请求路径对应业务控制器的方法
- 业务控制器的方法返回一个ModelAndView的对象给核心控制器
- 核心控制器根据业务控制器再加载配置的视图解释器跳转到对应的返回视图
3springMVC基于xml的入门配置
1.导入包
2.创建一个请求的发送页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> //发送请求 <a href="${pageContext.request.contextPath }/say.do">say</a> </body> </html> |
3.在web.xml配置核心控制器
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "> <!-- 核心控制器 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!-- 请求的后缀是do--> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
|
4.创建一个业务控制器
package cn.gzsxt.controller;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
/** * 业务控制器,必须继承一个类MultiActionController或它的父类 * @author ranger * */ public class HelloController extends MultiActionController { /** * 执行方法的参数是固定.HttpServletRequest request,HttpServletResponse response */ public ModelAndView say(HttpServletRequest request,HttpServletResponse response){ System.out.println("-你好世界!-"); ModelAndView mv=new ModelAndView(); //设置返回的视图 mv.setViewName("/hello.jsp"); mv.addObject("msg", "张三"); return mv; }
}
|
5.创建一个Spring的配置文件
<?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"> <!-- 请求路径与业务控制器的执行方法的关系 --> <!-- 请求与执行方法的规则: 1. SpringMVC会根据请求的名字:/say.do的say,去自动找到say这个方法 --> <bean name="/say.do" class="cn.gzsxt.controller.HelloController"></bean> <!-- 2.视图解释器,不用配置.默认已经配置了jsp视图解释器了 --> </beans>
|
注意:默认的Spring配置文件放在WEB-INF下,名为{servlet-name}-servlet.xml
{servlet-name}指的是,核心控制器配置的名字
如:dispatcherServlet-servlet.xml
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> |
6.创建一个返回的视图页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${msg },欢迎您! </body> </html> |
4.springMVC基于注解的入门配置
- 注解版的配置,主要的修改就是基于xml配置版本将原来使用<bean>创建的业务控制器对象,修改为是扫描标签扫描到容器.<context:component-scan base-package="cn.gzsxt"></context:component-scan>
- 在controller上面给它加上@controller注解并且在方法上加上@RequestMapping注解用于指定映射路径和方法@RequestMapping(value="/say.do")
- 并且在使用注解配置的时候它的内部提供了String的返回类,业务控制层的代码可以简化为
package cn.gzsxt.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; //基于配置文件配置的controller必须要实现或继承controller的接口以及它的子类 @Controller public class HelloCotroller{ //@RequestMapping注解用于指定映射路径和方法 @RequestMapping(value="/say.do") public String say() { System.out.println("你好世界"); return "/hello.jsp"; } }
|