Spring MVC-学习笔记(1)认识spring mvc
1、基于XML Schema、Controller接口的spring mvc简单例子
1》创建一个动态Web项目,选择同时创建web.xml文件
2》在WEB-INF/lib中粘贴spring框架jar包,同时粘贴commons-logging-1.2.jar、servlet-api.jar(Tomcat的安装libs中可以找到)。
3》编写核心控制器HelloController.java
package com.lfy.controller;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller;/*** HelloController是一个实现Controller接口的控制器* 可以处理一个单一的请求动作* @author lfy* HttpServletRequest、HttpServletResponse的引入需要Tomcat的servlet-api.jar* 在构建路径中将其添加为外部jar即可。*/ public class HelloController implements Controller {private static final Log log=LogFactory.getLog(HelloController.class);/*** 该方法的参数对应请求的HttpServletRequest和HttpServletResponse。* 该方法必须返回一个包含视图名或模型的ModelAndView对象。*/@Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {log.info("handleRequest()被调用");ModelAndView mv=new ModelAndView();//添加模型数据,可以是任意的pojo对象mv.addObject("message","Hello World!");//设置逻辑视图名,视图解析器会根据名字解析到具体的视图页面mv.setViewName("/WEB-INF/content/welcome.jsp");//返回ModeAndView对象return mv;} }
4》编写web.xml、springmvc-config.xml
web.xml
<?xml version="1.0" encoding="UTF-8"?> <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"><display-name>springMVCTest-1.0.0</display-name><!-- 定义springMVC的前端控制器 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springmvc-config.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!-- 让springMVC的前端控制器拦截所有请求 --><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping> </web-app>
也可以将springmvc-config.xml文件放置在类路径下,此时配置的方式为:
<param-value>classpath*:config/springMVC/springmvc-config.xml</param-value>
springmvc-config.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><!-- 配置Handle,映射"/hello"请求 --><bean name="/hello" class="com.lfy.controller.HelloController"/><!-- 处理映射器将bean的name作为url进行查找,需要在配置Handler时指定name(即url) --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理器适配器都要实现HandlerAdapter接口 --><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> </beans>
5》添加welcome.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>welcome</title> </head> <body>${requestScope.message} </body> </html>
6》运行
2、基于注解的的spring mvc简单例子。在上面的例子上,进行修改。
1》HelloController.java
package com.lfy.controller;import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;/*** 最简单的基于注解的springMVC* @author lfy**/ @Controller public class HelloController {private static final Log log=LogFactory.getLog(HelloController.class);@RequestMapping(value="/HelloController/hello")public ModelAndView hello() {log.info("hello()被调用");ModelAndView mv=new ModelAndView();//添加模型数据,可以是任意的pojo对象mv.addObject("message","Hello World!");//设置逻辑视图名,视图解析器会根据名字解析到具体的视图页面mv.setViewName("/WEB-INF/content/welcome.jsp");//返回ModeAndView对象return mv;} }
2》springmvc-config.xml
<?xml version="1.0" encoding="utf-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"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-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- spring可以自动扫描base-package下面的包或者子包下的java文件,如果扫描到有spring的相关注解的类,则把这些类注册为spring的bean --><context:component-scan base-package="com.lfy.controller"/><!-- 配置annotation类型的处理映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/><!-- 配置annotation类型的处理器适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> </beans>
3》运行
3、springMVC核心4类配置
配置文件总体上有4类配置:springmvc前端控制器、处理器映射器、处理器适配器、视图解析器。
前端控制器配置:
第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析
第二种:/,所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析,如使用<mvc:default-servlet-handler/>。
使用此种方式可以实现 RESTful风格的url。
处理器映射器:
非注解处理器映射器(了解)
注解的处理器映射器(掌握)
对标记@Controller类中标识有@RequestMapping的方法进行映射。在@RequestMapping里边定义映射的url。使用注解的映射器不用在xml中配置url和Handler的映射关系。
处理器适配器:
非注解处理器适配器(了解)
注解的处理器适配器(掌握)
注解的处理器映射器和注解的处理器适配器是配对使用。不能非注解的映射器和注解的适配器使用。
<!--使用<mvc:annotation-driven>,默认还加载了很多参数绑定的方法--> <mvc:annotation-driven></mvc:annotation-driven> <!--可替代以下的映射器、适配器的注解配置声明--> <!-- 配置annotation注解类型的处理映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 配置annotation注解类型的处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
视图解析器:
主要是了解前缀、后缀的作用。
4、springMVC的一般运行步骤
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器HandlerMapping查找Handler
可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器去解析视图
根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回view
第十步:前端控制器进行视图渲染
数据填充到request域
第十一步:前端控制器向用户响应结果。
转载于:https://www.cnblogs.com/ZeroMZ/p/11374398.html
Spring MVC-学习笔记(1)认识spring mvc相关推荐
- 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject
本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...
- Spring框架学习笔记05:Spring AOP基础
文章目录 一.Spring AOP (一)AOP基本含义 (二)AOP基本作用 (三)AOP与OOP (四)AOP使用方式 (五)AOP基本概念 任务:骑士执行任务前和执行任务后,游吟诗人唱赞歌 (一 ...
- Spring框架学习笔记06:Spring JdbcTemplate入门
文章目录 一.JdbcTemplate概述 (一)JdbcTemplate作用 (二)JdbcTemplate操作数据库常用方法 二.数据库连接池 (一)连接池原理 (二)常见数据库连接池 1.DBC ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- Spring MVC 学习笔记 对locale和theme的支持
Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...
- springaop事务逻辑原理_太狠了!阿里大牛手写的Spring核心面试笔记:IOC+AOP+MVC+事务...
Spring作为现在最流行的java 开发技术,其内部源码设计非常优秀.如果你不会Spring,那么很可能面试官会让你回家等通知. Spring是什么? 有一个工地,几百号人在用铁锹铲子挖坑. 如果开 ...
- Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客
Spring MVC 学习总结(一)--MVC概要与环境配置 目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Maven新 ...
- Spring.NET学习笔记——前言
Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入.面向方面编程(AOP).数据访问抽象及ASP.NET扩展等等.Sprin ...
- Spring Boot学习笔记-基础(2)
Spring Boot学习笔记-基础(2) Spring Boot 优点: – 快速创建独立运行的Spring项目以及与主流框架集成 – 使用嵌入式的Servlet容器,应用无需打成WAR包 – st ...
- Spring Boot学习笔记(1)
文章目录 Spring Boot学习笔记(1) Spring Boot 整合 JSP Spring Boot HTML Thymeleaf 常用语法 Spring Boot 数据校验 Spring B ...
最新文章
- mysql查看修改记录_(转)MySql中监视增删改查和查看日志记录
- maya绑定控制器在大纲里是灰色的_3dsmax绑定转maya ADV插件
- Day20:绑定方法与非绑定办法、多态和多态性
- STM32H743+Cube-Keil上移植RTX5实时系统
- springboot报告如下一个异常
- 如何还原已经推送到远程分支的合并提交?
- UIPIckerView现实城市选择
- HTML5多文件上传插件----zyUpload
- SpringSecurity前后端分离
- 同事是竞合关系不是零和关系
- windows MSOCache删除
- iphone12文件管理连接服务器,iPhone手机打开服务器功能,和Windows电脑互传文件方法...
- java tld文件配置_Java Web应用因tld文件损坏出现的错误
- mac下hadoop环境的搭建以及碰到的坑点
- 关于安卓机型写串码 改串码 端口开启和基带qcn等一些经验
- 奇安信行业安全研究中心
- Android如何快速创建启动动画
- Docker学习--修改阿里云镜像
- 在springboot整合mybatis遇到的数据库连接不上问题解决
- 程序员职场规划之走向技术管理-安晓辉-专题视频课程
热门文章
- error: ‘PRIO_PROCESS’ undeclared
- 做出产品不难,做好产品必须高手
- 入住互联网酒店平台的体验
- “一沙一世界”的感悟
- 管理感悟:如何改造代码
- fork的写时复制1
- laravel 任务队列_Laravel 队列系统实现及使用教程
- 小米6twrp最新第三方rec_小米5(gemini:双子座)刷机
- linux 查看硬盘的uuid_ubuntu16.04 挂载新硬盘
- 青海师大有没有计算机系,计算机专业选择:北交、重邮实力强劲,青海师大性价比不错...