第八节:Sping Mvc

Spring MVC 框架简介

Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主题渲染等,甚至还能支持文件上传。处理器是你的应用中注解了@Controller和@RequestMapping的类和方法,Spring为处理器方法提供了极其多样灵活的配置。Spring 3.0以后提供了@Controller注解机制、@PathVariable注解以及一些其他的特性,你可以使用它们来进行RESTful web站点和应用的开发。

Spring MVC 用DispatcherServlet处理请求

Spring MVC框架,与其他很多web的MVC框架一样:请求驱动;所有设计都围绕着一个中央Servlet来展开,它负责把所有请求分发到控制器;同时提供其他web应用开发所需要的功能。不过Spring的中央处理器,DispatcherServlet,能做的比这更多。它与Spring IoC容器做到了无缝集成,这意味着,Spring提供的任何特性,在Spring MVC中你都可以使用。

DispatcherServlet其实就是个Servlet(它继承自HttpServlet基类),同样也需要在你web应用的web.xml配置文件下声明。你需要在web.xml文件中把你希望DispatcherServlet处理的请求映射到对应的URL上去。这就是标准的Java EE Servlet配置;下面的代码就展示了对DispatcherServlet和路径映射的声明:

<web-app> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/example/*</url-pattern> </servlet-mapping> </web-app>

在上面的例子中,所有路径以/example开头的请求都会被名字为example的DispatcherServlet处理

Spring MVC 控制器的实现

你可以在你的控制器实现上添加@RequestMapping、@RequestParam、@ModelAttribute等注解

@Controller注解表明了一个类是作为控制器的角色而存在的。Spring不要求你去继承任何控制器基类,也不要求你去实现Servlet的那套API。当然,如果你需要的话也可以去使用任何与Servlet相关的特性和设施。@Controller注解可以认为是被标注类的原型(stereotype),表明了这个类所承担的角色。分派器(DispatcherServlet)会扫描所有注解了@Controller的类

你需要在配置中加入组件扫描的配置代码来开启框架对注解控制器的自动检测。请使用下面XML代码所示的spring-context schema:

<?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:p="http://www.springframework.org/schema/p" 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="org.springframework.samples.petclinic.web"/> <!-- ... --> </beans>

Spring MVC 使用@RequestMapping注解映射请求路径

你可以使用@RequestMapping注解来将请求URL,如/appointments等,映射到整个类上或某个特定的处理器方法上。一般来说,类级别的注解负责将一个特定(或符合某种模式)的请求路径映射到一个控制器上,同时通过方法级别的注解来细化映射,即根据特定的HTTP请求方法(“GET”“POST”方法等)、HTTP请求中是否携带特定参数等条件,将请求映射到匹配的方法上。

类级别的@RequestMapping注解并不是必须的。不配置的话则所有的路径都是绝对路径,而非相对路径

Spring MVC 视图解析

所有web应用的MVC框架都提供了视图相关的支持。Spring提供了一些视图解析器,它们让你能够在浏览器中渲染模型,并支持你自由选用适合的视图技术而不必与框架绑定到一起

Spring MVC 主题概览

You can apply Spring Web MVC framework themes to set the overall look-and-feel of your application, thereby enhancing user experience. A theme is a collection of static resources, typically style sheets and images, that affect the visual style of the application.

你可以使用Spring Web MVC框架提供的主题来为整站的应用设置皮肤/主题(look-and-feel),这可以提高用户体验。主题 是指一系列静态资源的集合,并且主要是样式表和图片,它们决定了你的应用的视觉风

Spring MVC 构造URI

在Spring MVC中,使用了UriComponentsBuilder和UriComponents两个类来提供一种构造和加密URI的机制。

Spring MVC 使用@ExceptionHandler注解

HandlerExceptionResolver接口以及SimpleMappingExceptionResolver解析器类的实现使得你能声明式地将异常映射到特定的视图上,还可以在异常被转发(forward)到对应的视图前使用Java代码做些判断和逻辑。不过在一些场景,特别是依靠@ResponseBody返回响应而非依赖视图解析机制的场景下,直接设置响应的状态码并将客户端需要的错误信息直接写回响应体中,可能是更方便的方法。

你也可以使用@ExceptionHandler方法来做到这点。如果@ExceptionHandler方法是在控制器内部定义的,那么它会接收并处理由控制器(或其任何子类)中的@RequestMapping方法抛出的异常。如果你将@ExceptionHandler方法定义在@ControllerAdvice类中,那么它会处理相关控制器中抛出的异常。

原文地址:https://www.cnblogs.com/mxxblog/p/12588359.html

时间: 2024-10-11 21:54:57

第八节:Sping Mvc的相关文章

fastDFS+java api + sping mvc +JPA+Hibernate

最近在搭建测试一个这样的项目,后面的时间会慢慢整理出来,fastDFS+java api + sping mvc +JPA+Hibernate ,fastDFS 底层linux 搭建+ intellij java 开发,基本功能从上到下已经通 了,只是还很粗糙,后面会分几个章节整理出来,估计还得段时间.

Sping MVC 整合Junit4进行单元测试及常见错误解决

1.Sping整合Junit4进行单元测试:使用spring-test和Junit4进行单元测试 (1)maven依赖:添加spring-test和Junit4 jar包对于jdk1.7版本,spring4版本,依赖如下: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scop

ssm整合总结(二)--第二步之整合sping,sping mvc,bootstrap

说明:本文内容来自山硅谷,整合了任务5--任务8的内容http://www.gulixueyuan.com/my/course/50 本文是继https://www.cnblogs.com/alpsong/p/10059698.html的基础上来加入sping,spring mvc,bootstrap配置 1引入Bootstrap 1.1进入bootstrap官网         1.2使用bootstrap                   1.2.1helloworld          

Struts MVC与Sping MVC

struts组件的MVC实现  View部分:由jsp页面实现,并且struts提供了丰富的标签库,通过使用struts标签库可以快速实现view部分,当然也可以不用struts标签库,而用普通的jsp页面. Controler:有两个控制器.       A:核心控制器(ActionSerlvet,只有一个,由struts自动创建)       B:业务逻辑控制器(Action,有多个,由用户自己创建).业务逻辑控制器负责处理用户请求,它本身不具备处理能力,而是调用Model来完成处理. Mo

JavaWeb学习总结(四十九)——简单模拟Sping MVC

在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: 1 /** 2 * 使用Controller注解标注LoginUI类 3 */ 4 @Controller 5 public class LoginUI { 6 7 //使用RequestMapping注解指明forward1方法的访问路径 8 @RequestMapping("LoginUI/Lo

Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis

https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=63 https://www.zhihu.com/question/29444491/answer/146457757 1. Java - Struts框架教程Struts 是Apache软件基金会(ASF)赞助的一个开源项目.通过采用JavaServlet/JSP技术,实现了基于Java EEWeb

JeePlus 工作流版本 sping mvc oa crm erp java html5 源码

https://shop108220642.taobao.com/search.htm?spm=2013.1.w5002-5297459241.1.mnhAZ5&search=y http://kb.cnblogs.com/page/69610/ ASP.NET MVC 2生成动态表单的一种最简单的思路

Spring + Mybatis 企业应用实战 第3章 Sping MVC的常用注解

注解(annotation) @Controller @Controller是扩展的@Component的,可以说基本一样,就是作为一种标志. @RequestMapping value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明): method:  指定请求的method类型, GET.POST.PUT.DELETE等: consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text

sping mvc 环境下使用kaptcha 生成验证码

kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片.同时将生成的验证码字符串放到 HttpSession中. 使用kaptcha可以方便的配置: 验证码的字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字,字母,中文汉字!) 验证码图片的大小,边框,边框粗细,边框颜色 验证码的干扰线(可以自