SpringMVC
一、什么是SpringMVC?
Spring MVC框架是一个开源的Java平台,为开发强大的基于Java的Web应用程序提供全面的基础架构支持非常容易和非常快速。
Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构和用于开发灵活和松散耦合的Web应用程序的组件。 MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合。
- 模型(Model)封装了应用程序数据,通常它们将由POJO类组成。
- 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
- 控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。
二、SpringMVC的原理
三、SpringMVC的简单使用:
1.导入Spring框架的jar包
2.在 web.xml 中配置前端控制器 DispatcherServlet
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 5 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 6 id="WebApp_ID" version="3.1"> 7 <!-- 定义Spring MVC的前端控制器 --> 8 <servlet> 9 <servlet-name>springmvc</servlet-name> 10 <servlet-class> 11 org.springframework.web.servlet.DispatcherServlet 12 </servlet-class> 13 <init-param> 14 <param-name>contextConfigLocation</param-name> 15 <param-value>/WEB-INF/springmvc-config.xml</param-value> 16 </init-param> 17 <load-on-startup>1</load-on-startup> 18 </servlet> 19 <!-- 让Spring MVC的前端控制器拦截所有请求 --> 20 <servlet-mapping> 21 <servlet-name>springmvc</servlet-name> 22 <url-pattern>/</url-pattern> 23 </servlet-mapping>
3.配置spring MVC 的 controller 的配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 11 http://www.springframework.org/schema/context 12 http://www.springframework.org/schema/context/spring-context-4.2.xsd"> 13 14 <!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件, 15 如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean --> 16 <context:component-scan base-package="org.springmvc.controller"/> 17 18 <!-- 配置处理映射器 --> 19 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 20 21 <!-- 配置处理器适配器--> 22 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> 23 <!-- 视图解析器 --> 24 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> 25 26 </beans>
4.基于注解的控制器
1 package org.springmvc.controller; 2 3 import org.apache.commons.logging.Log; 4 import org.apache.commons.logging.LogFactory; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.servlet.ModelAndView; 8 9 /** 10 * HelloController是一个基于注解的控制器, 11 * 可以同时处理多个请求动作,并且无须实现任何接口。 12 * org.springframework.stereotype.Controller注解用于指示该类是一个控制器 13 */ 14 @Controller 15 public class HelloController{ 16 17 private static final Log logger = LogFactory 18 .getLog(HelloController.class); 19 20 /** 21 * org.springframework.web.bind.annotation.RequestMapping注解 22 * 用来映射请求的的URL和请求的方法等。本例用来映射"/hello" 23 * hello只是一个普通方法。 24 * 该方法返回一个包含视图路径或视图路径和模型的ModelAndView对象。 25 * */ 26 @RequestMapping(value="/hello") 27 public ModelAndView hello(){ 28 logger.info("hello方法 被调用"); 29 // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象 30 ModelAndView mv = new ModelAndView(); 31 //添加模型数据 可以是任意的POJO对象 32 mv.addObject("message", "Hello World!"); 33 // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面 34 mv.setViewName("/WEB-INF/content/welcome.jsp"); 35 // 返回ModelAndView对象。 36 return mv; 37 } 38 39 }
5.view页面:
1 %@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>welcome</title> 8 </head> 9 <body> 10 <!-- 页面可以访问Controller传递传递出来的message --> 11 ${requestScope.message} 12 </body> 13 </html>