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>