1、Spring MVC 入门

1.1、Spring MVC 简介

把Web应用程序分为三层,分别是:

  • 控制器(Controller):负责接收并处理请求,响应客户端;
  • 模型(Model):模型数据,业务逻辑;
  • 视图(View):呈现模型,与用户进行交互;

目前最好的实现MVC设计模式的框架,是Spring框架的一个子模块,可以与Spring很好的结合使用,无需整合。

1.2、SpringMVC核心组件

  • DispatcherServlet:前置控制器
  • Handler:处理器,完成具体业务逻辑
  • HandlerMapping:将请求映射到Handler
  • HandlerInterceptor:处理器拦截器
  • HandlerExecutionChain:处理器执行链
  • HandlerAdapter:处理器适配器
  • ModelAndView:装载模型数据和视图信息
  • ViewResolver:视图解析器

1.3、SpringMVC工作流程

(1)客户端请求提交到DispatcherServlet;
(2)由DispatcherServlet控制器寻找一个或多个HandlerMapping,找到处理请求的Controller;
(3)DispatcherServlet将请求提交到Controller;
(4)Controller调用业务逻辑处理后返回ModelAndView;
(5)DispatcherServlet寻找一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图;
(6)视图负责将结果显示到客户端;

2、SpringMVC的实现

2.1、创建SpringMVC项目

实现步骤:

打开IDEA工具,创建新项目,选择Maven工程,使用jdk1.8版本,勾选“Create from archetype”,选择maven-archetype-webapp的方式创建,点击Next

配置项目信息,点击Next

配置Maven信息,点击Next

配置工作空间,点击Finish

在控制台显示BUILD SUCCESS,项目创建完成

默认创建的项目目录,resource存放配置文件,webapp目录存放web页面和组件

在main目录上右键,选择New-->Directory创建java目录

在java目录上点击右键,选择Mark Directory as-->Sources Root,将java目录设置为资源目录

在pom.xml中引入依赖

  1. <dependencies>
  2. <!--junit测试依赖-->
  3. <dependency>
  4. <groupId>junit</groupId>
  5. <artifactId>junit</artifactId>
  6. <version>4.11</version>
  7. <scope>test</scope>
  8. </dependency>
  9. <!--SpringMVC依赖-->
  10. <dependency>
  11. <groupId>org.springframework</groupId>
  12. <artifactId>spring-webmvc</artifactId>
  13. <version>4.3.1.RELEASE</version>
  14. </dependency>
  15. </dependencies>

打开src-->main-->webapp-->WEB-INF-->web.xml,配置SpringMVC的Servlet:

  1. <servlet>
  2. <servlet-name>SpringMVC</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <!--配置springmvc.xml的路径-->
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath:springmvc.xml</param-value>
  8. </init-param>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>SpringMVC</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>

2.2、基于XML配置SpringMVC

在src-->main-->resources目录上点击右键,选择New-->XML Configuration File-->Spring Config,创建springmvc.xml配置文件

在java目录上创建MyHandler类,实现Controller接口,并重写handelRequest()方法

如果出现HttpServletRequest报红,原因是没有引入依赖

选择File-->Project Structure

参考图片依次选择Modules,点击右边+号,选择Library

添加Tomcat,点击Add Selected

编辑模型视图代码:

  1. import org.springframework.web.servlet.ModelAndView;
  2. import org.springframework.web.servlet.mvc.Controller;
  3.  
  4. public class MyHandler implements Controller {
  5. public ModelAndView handleRequest(httpServletRequest, httpServletResponse) throws Exception {
  6. //装载模型数据和逻辑视图
  7. ModelAndView modelAndView = new ModelAndView();
  8. //添加模型数据
  9. modelAndView.addObject("name","Tom");
  10. //添加逻辑视图
  11. modelAndView.setViewName("show");
  12. return modelAndView;
  13. }
  14. }

在webapp目录下创建show.jsp,使用EL表达式输出name
如果使用EL表达式,必须配置isELIgnored="false"

在springmvc.xml文件中配置Controller和HandlerMapping组件映射

  1. <!--配置HandlerMapping,将URL映射到Handler-->
  2. <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  3. <!--配置mapping-->
  4. <property name="mappings">
  5. <props>
  6. <!--配置test请求对应的handler-->
  7. <prop key="/test">testHandler</prop>
  8. </props>
  9. </property>
  10. </bean>
  11. <!--配置handler-->
  12. <bean id="testHandler" class="com.springtest.MyHandler"></bean>
  13. <!--配置视图解析器-->
  14. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  15. <!--配置前缀-->
  16. <property name="prefix" value="/"></property>
  17. <!--配置后缀-->
  18. <property name="suffix" value=".jsp"></property>
  19. </bean>

配置Tomcat

完成以上步骤操作后,点击OK,在控制台处点击运行

在浏览器中访问 localhost:8080/test,页面就会显示ModelAndView返回的值

2.3、基于注解配置SpringMVC

使用注解配置SpringMVC,只需要修改springmvc.xml文件:

  1. <!--将AnnotationHandler自动扫描到IOC容器中-->
  2. <context:component-scan base-package="com.springdemo.controller"></context:component-scan>
  3.  
  4. <!--配置视图解析器-->
  5. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  6. <!--配置前缀-->
  7. <property name="prefix" value="/"></property>
  8. <!--配置后缀-->
  9. <property name="suffix" value=".jsp"></property>
  10. </bean>

创建AnnotationHandler类,使用注解实现:

  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.servlet.ModelAndView;
  4.  
  5. @Controller
  6. public class AnnotationHandler {
  7.  
  8. /**
  9. * 业务方法
  10. * 使用ModelAndView完成数据传递、视图解析
  11. */
  12. @RequestMapping("/modelAndViewTest")
  13. public ModelAndView modelAndViewTest(){
  14. ModelAndView modelAndView = new ModelAndView();
  15. modelAndView.addObject("name","Jack");
  16. modelAndView.setViewName("show");
  17. return modelAndView;
  18. }
  19.  
  20. }

启动Tomcat

业务方法还可以使用以下两种方式实现:
(1)使用Model传值,String解析视图

  1. /**
  2. * 业务方法
  3. * 使用Model传值,String进行视图解析
  4. */
  5. @RequestMapping("/modelTest")
  6. public String modelTest(Model model){
  7. model.addAttribute("name","Lucy");
  8. return "show" ;
  9. }

启动Tomcat

(2)使用Map传值,String解析视图

  1. /**
  2. * 业务方法
  3. * 使用Map传值,String解析视图
  4. */
  5. @RequestMapping("/mapTest")
  6. public String mapTest(Map<String,String> map){
  7. map.put("name","Lilei");
  8. return "show";
  9. }

启动Tomcat

2.4、解决客户端请求乱码问题

在web.xml中配置filter

  1. <!--处理中文乱码-->
  2. <filter>
  3. <filter-name>encodingFilter</filter-name>
  4. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  5. <init-param>
  6. <param-name>encoding</param-name>
  7. <param-value>UTF-8</param-value>
  8. </init-param>
  9. <init-param>
  10. <param-name>forceEncoding</param-name>
  11. <param-value>true</param-value>
  12. </init-param>
  13. </filter>
  14. <filter-mapping>
  15. <filter-name>encodingFilter</filter-name>
  16. <url-pattern>/*</url-pattern>
  17. </filter-mapping>

2.5、配置静态资源访问

在web.xml中配置:

  1. <!--设置访问静态资源-->
  2. <servlet-mapping>
  3. <servlet-name>default</servlet-name>
  4. <url-pattern>*.css</url-pattern>
  5. </servlet-mapping>
  6. <servlet-mapping>
  7. <servlet-name>default</servlet-name>
  8. <url-pattern>*.js</url-pattern>
  9. </servlet-mapping>
  10. <servlet-mapping>
  11. <servlet-name>default</servlet-name>
  12. <url-pattern>*.jpg</url-pattern>
  13. </servlet-mapping>

SpringMVC框架01——使用IDEA搭建SpringMVC环境的更多相关文章

  1. Hibernate框架 初识 ORM概念 搭建Hibernate环境 Hibernate Api

    ORM概念 在学习 Hibernate 之前,我们先来了解ORM   对象关系映射 O, Object  对象 R,Realtion 关系  (关系型数据库: MySQL, Oracle…) M,Ma ...

  2. SpringMVC学习01(什么是SpringMVC)

    1.什么是SpringMVC 1.1 回顾MVC 1.1.1 什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据 ...

  3. Java SpringMVC框架学习(三)springMVC的执行流程

    具体执行逻辑如下: 浏览器提交请求到中央调度器. 中央调度器将请求转给处理器映射器. 处理器映射器根据请求, 找到请求对应的处理器, 并将其封装为处理器执行链返回给中央调度器. 中央调度器根据处理器执 ...

  4. 纯手写SpringMVC框架,用注解实现springmvc过程

    闲话不多说,直接上代码! 1.第一步,首先搭建如下架构,其中,annotation中放置自己编写的注解,主要包括service controller qualifier RequestMapping ...

  5. SpringMVC框架搭建 基于注解

    本文将以一个很简单的案例实现 Springmvc框架的基于注解搭建,一下全为个人总结 ,如有错请大家指教!!!!!!!!! 第一步:创建一个动态web工程(在创建时 记得选上自动生成 web.xml ...

  6. 大师养成计划之一:搭建springmvc框架

    搭建spring-mvc框架 搭建spring-mvc框架步骤: 1.搭建web项目spring-mvc1 2.引入jar包 3.配置web.xml 3.1拷贝头文件: <web-app xml ...

  7. 用Maven搭建简单的SpringMVC框架

    本文会详细阐述如何用Maven搭建一个简单的SpringMVC框架 这里就不介绍SpringMVC框架了,咱们直接来搭建 第一步 创建一个Maven的web项目  这里有一个简单的方法 new一个Ma ...

  8. SpringMVC框架 课程笔记

    SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...

  9. SpringMVC 框架系列之初识与入门实例

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.SpringMVC 概述 (1). MVC:Model-View-Control Contr ...

随机推荐

  1. Confluence 6 重构查找索引

    查找索引是自动维护的,但是你有时候可能会因为你在查找的时候或查看者邮件主题出现了异常,或者你的 Confluence 实例升级到了新的版本,你可能需要手动重构索引. 进行搜索索引重构: 在屏幕的右上角 ...

  2. Confluence 6 workbox 的位置

    Confluence 6 workbox 的位置在首页什么地方? workbox 应该在页面顶部的用户登录后的地方. https://www.cwiki.us/display/CONFLUENCEWI ...

  3. js小方法积累,将一个数组按照n个一份,分成若干数组

    // 把一个数组按照一定长度分割成若干数组 function group(array, subGroupLength) { let index = 0; let newArray = []; whil ...

  4. android入门小结一

    一 Android入门基础:从这里开始 gradle介绍: Android Studio使用Gradle 编译运行Android工程. 工程的每个模块以及整个工程都有一个build.gradle文件. ...

  5. LeetCode(83): 删除排序链表中的重复元素

    Easy! 题目描述: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1-&g ...

  6. MYSQL安装报错 -- 出现Failed to find valid data directory.

    运行环境:windows10数据库版本:mysql.8.0.12安装方式:rpm包直接安装 问题描述:mysql初始化的时候找不到对应的数据库存储目录 报错代码: 2018-10-13T03:29:2 ...

  7. Linux编程学习笔记(二)

    续上个章节,这个章节主要是Linux的远程登录系统操作笔记 一. Linux一般作为服务器使用,但是服务器都是在机房的,所以不可能经常跑到机房去操作系统,所以使用远程登录系统,在Linux的系统一般使 ...

  8. easyUI-datagrid带有工具栏和分页器的数据网格

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>数据 ...

  9. Java基础知识➣发送Emai和访问MySQL数据库(七)

    概述 Java程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 JavaMail API 和Java Activation Framework (JAF) .Java访问数据则需要 使 ...

  10. python安装plinter

    我下的python2.7是有pip的,但是直接在cmd中输入pip是无响应的.要去环境变量中配置D:/python/Script 这样就可以了. pip install splinter就能下载了