内容概述
1.SpringMVC 概述
2.SpringMVC HelloWorld
3.使 @RequestMapping 映射请求
4.映射请求参数 & 请求头
5.处理模型数据
6.视图和视图析器
7.RESTful CRUD
8.SpringMVC 单标签 &处 态资源
9.数据转换 & 数据格式化 & 数据校
10.处 JSON使 HttpMessageConverter
11.国际化
12.文件上 传
13.使用拦截器
14.异常处理
15.SpringMVC 运流
16.在 Spring 环境下使用SpringMVC
17.SpringMVC 对比 Struts2
<一>SpringMVC概述
Spring 为 展现层 提供基于 MVC 设计 念理念
Web 框架是 前 最主流 MVC 框架 之一
Spring3.0 后全 Struts2成 为 最 优 MVC 框架
Spring MVC 有过 一套 MVC 注入让 POJO 成为处理请
求控制器无法实现的任何接口。
支持 REST 风格 URL 请 求
了松散 耦合可插拔组件结构比其他 MVC 框架更具
扩展性和灵活性
<二>编写第一个HelloWorld
步骤
加入 jar 包 –
在 web.xml 中配置 DispatcherServlet –
加入 Spring MVC 文件 –
编写处 请求 处器并 标识为处器 –
编写视图 –
HelloWorld加入 jar 包
需要加入JAR包
HelloWorld加入 jar 包
commons-logging-1.1.3.jar –
spring-aop-4.0.0.RELEASE.jar –
spring-beans-4.0.0.RELEASE.jar –
spring-context-4.0.0.RELEASE.jar –
spring-core-4.0.0.RELEASE.jar –
spring-expression-4.0.0.RELEASE.jar –
spring-web-4.0.0.RELEASE.jar –
spring-webmvc-4.0.0.RELEASE.jar
1、 Web.xml文件中配置
1、<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<!-- 配置加载dispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 加載springmvc配置文件 -->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 将请求交给 dispatcherServlet 处理所有请求-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
疑问:load-on-startup 作用?
在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
2.加入SpringMVC配置文件
1.<?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" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 配置自定扫描的包 --> <context:component-scan base-package="com.xhz.controller"></context:component-scan> <!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
2、 编辑为请求处理器
@Controller
public class HelloWord {
@RequestMapping("/test")
public String test() {
System.out.println("this is test helloWord");
return "success";
}
}
<三>使用@RequestMapping 映射请求
1. @RequestMapping 除了修饰方法, 还可来修饰类 2. 1). 类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录
2. 方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL
相对于 WEB 应用的根目录
<四>映射 请 求参数、 请 求方法或 请 求
SpringMVC如何重定向?
1、 如何字符串带redirect则重定向
实例 “redirect:/index.jsp” 则重定向跳转到index.jsp页面
如何通过 SpringMVC返回JSON?
1、 在请求方法上加上@ResponseBody,通过返回值类型自动转换JSON
2、 添加Jar包
jackson-annotations-2.4.1.jar
jackson-core-2.4.1.jar
jackson-databind-2.4.1.jar
jackson-core-asl-1.9.13.jar
jackson-mapper-asl-1.9.13.jar
3、 需要在SpringMVC配置文件配置如下信息:
<!-- 开启注解 -->
<mvc:annotation-driven />
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 -->
</list>
</property>
</bean>
SpringMVC文件上传?
1、SpringMVC配置文件中配置上传文件信息
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8" />
<!--1024*200即200k-->
<property name="maxUploadSize" value="204800" />
</bean>
2、前端页面实例
<form action="upload/" method="post" enctype="multipart/form-data">
上传文件<input type="file" name="file"> <input type="submit"
value="提交">
</form>
3、后端代码实例
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam(value = "file", required = false) MultipartFile file,HttpServletRequest request) {
String path = "c://xhz";
String fileName = file.getOriginalFilename();
File targetFile = new File(path, fileName);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
// 保存try {
file.transferTo(targetFile);
} catch (Exception e) {
}
return "success";
}