Spring MVC
Spring MVC
-
什么是springMVC
-
Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。
-
Spring MVC 的请求流程
用户发送请求 -----------前端处理器---------------通过HandlerMapping映射返回一个HandlerExecutionChain-------------在通过HandlerAdapter执行真正的方法------------
放回一个ModelAndView到前端处理器--------------通过解析器返回一个view视图-------
响应结果
-
SpringMVC核心开发步骤
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vegwi9Qu-1571630033795)(C:\Users\陈加乐\Desktop\20190303142800705.jpg)]
3.1 DispatcherServlet在web.xml中的部署描述,从而拦截请求到springMVC
<web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
3.2 HandlerMapping的配置,从而将请求映射到处理器
3.3 HandlerAdapter的配置,从而支持多种类型的处理器
3.4 处理器(页面控制器)的配置,从而刊行功能处理
3.5 ViewResolver的配置,从而将逻辑视图名解析为具体的视图技术
-
SpringMVC的组件
4.1 前端控制器(DispatcherServlet)
4.2 请求到处理器映射(HandlerMapping)
4.3 处理器适配器(HandlerAdapter)
4.4 视图解析器(ViewResolver)
4.5 处理器或页面控制器(Controller)
4.6 验证器(Validator) -
SpringMVC的常用注解
5.1 @Controller注解
@Controller注解是在Spring的org.springframework.stereotype包下,
@Controller注解注解的控制器可以同时支持处理多个请求动作,使程序开发变的更加灵活。
使用它须知: 1、在Spring MVC的配置文件中的头部引入spring-context;
2、 使用
<context:component-scan/>
元素,该元素的功能是:启动包扫描功能,以便注册带有 @Controller、@Service、@repository、@Component等注解的类成为Spring的Bean。配置文件如下所示:<?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:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "> <!-- 扫描biz层注解--> <context:component-scan base-package="cn.service" /> </beans>
演示@Controller
先建一个spring项目
在项目的“src/main/java”下创建一个包,包名叫“com.qianchunhua.controller”,在包下创建 ControllerTest类,用来演示@Controller注解控制器的使用。如下代码:
package com.qianchunhua.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; /** * ControllerTest是一个基于注解的控制器, * 可以同时处理多个请求动作,并且无须实现任何接口。 * org.springframework.stereotype.Controller注解用于指示该类是一个控制器. * @author Cody */ @Controller public class ControllerTest { @RequestMapping("/helloWorld") public String helloWorld(Model model) { model.addAttribute("message", "你好,欢迎访问my,,heart的专栏!"); return "helloWorld"; } }
它返回的是一个页面
接下来,我们要创建一个Spring MVC的配置文件,并且从中配置,在我们的maven项目“src/main/webapp/WEB-INF”目录下创建一个springmvc-config.xml,这个xml文件就是我们的Spring MVC配置文件。配置信息如下:
<?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:mvc="http://www.springframework.org/schema/mvc" 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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "> <!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件, 如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean --> <context:component-scan base-package="com.qianchunhua.controller"/> <!-- 视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 --> <property name="prefix"> <value>/WEB-INF/content/</value> </property> <!-- 后缀 --> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
由于在我们的java文件中使用了注解类型,因此不需要再配置文件中使用xml描述bean。<context:component-scan base-package=“com.qianchunhua.controller”/> 指定需要Spring扫描com.qianchunhua.controller包及其子包下面的所有java文件。最后配置了视图解析器InternalResourceViewResolver来解析视图,将View呈现给用户。视图解析器中配置的prefix属性表示视图的前缀,suffix表示视图的后缀,返回的视图字符串是“helloWorld”,经过视图解析器之后,则视图的完整路径是:/WEB-INF/content/helloWorld.jsp。因此,在这里,我们需要在项目的WEB-INF下,创建一个“content”文件夹,里面用来保存jsp文件,在content文件下创建一个helloWorld.jsp。如下代码:
<%@ 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>测试@Controller注解</title> </head> <body> <!-- 页面可以访问Controller传递传递出来的message --> ${requestScope.message} </body> </html>
需要注意的是,在此配置文件中没有配置处理映射器和处理适配器时,Spring会使用默认的处理映射器和处理适配器处理请求。此外,还需要在web.xml中配置Spring MVC的前端控制器DispatcherServlet。web.xml配置信息如下:
<web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
到此,我们就将@Controller注解的案例应用给写完了。下面,我将部署springmvc-comment1项目,在浏览器中输入如下url地址来测试应用:
然后按下回车,看到如下图所示。就表示Spring MVC访问成功!
结果输出 “你好,欢迎访问my,heart的专栏!”
5.2 @RequestMapping("/helloWorld") 通过前端dispatchservlet拦截路径,@RequestMapping("/helloWorld")是访问路径
5.3 @RequestParam注解 使用来复制
@RequestMapping(value="/hello") public ModelAndView hello( @RequestParam("loginname") String loginname, @RequestParam("password") String password) { return...; }
映射方式: 自动映射,手动映射同上,(注:自动映射需要名字对应,手动映射需要与@RequestParam(“loginname”)参数对应)
questParam(“loginname”) String loginname,
@RequestParam(“password”) String password) {
return…;
}
映射方式: 自动映射,手动映射同上,(注:自动映射需要名字对应,手动映射需要与@RequestParam("loginname")参数对应)
- 点赞
- 收藏
- 分享
- 文章举报
- Spring MVC 教程,快速入门,深入分析
- spring mvc - 对静态资源的处理
- Spring MVC的异步模式
- Spring Mvc拦截器
- spring mvc json的输入输出
- Spring MVC 解决 Could not write JSON: No serializer found for class java.lang.Object
- spring mvc 异常统一处理方式
- Spring MVC 转发和重定向
- spring MVC中基于hibernate validator的form表单验证
- Spring MVC 基于session 国际化配置!! 亲测可用
- 小试 Spring Boot - Spring MVC
- 软件开发实训(720)科技--- 第四课 Spring mvc 框架-0415-v1.0王玉娟
- Spring MVC和Struts2的比较
- 《Spring实战》学习笔记-第七章:Spring MVC进阶
- 关于:No transactional EntityManager available--spring MVC 的事务管理
- Spring mvc 实现用户登录的方法(拦截器)
- 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)
- 码农小汪-Spring MVC url路径,请求方法限定
- Spring mvc url-pattern 和@RequestMapping 映射的小问题
- Spring MVC执行流程