目录html
Spring java
Spring Framework Spring框架(Spring:通常都是指这个)程序员
Spring boot Spring快速开发框架web
Spring Cloud Spring 微服务spring
Spring FrameWork 七大核心模块数据库
模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。编程
AOP 模块为基于Spring的应用程序中的对象提供了事务管理服务。经过使用Spring AOP,不用依赖EJB组件,就能够将声明性事务管理集成到应用程序中。设计模式
极大的下降了须要编写的异常代码数量(例如打开链接和关闭链接)。Spring DAO的面向JDBC的异常听从通用的DAO异常层次结构。服务器
异常层次结构。微信
WEB模块还简化了处理多部分请求以及将请求参数绑定到域对象的工做。
对应的JDK版本
IOC和AOP
不建立对象,可是描述建立它们的方式。在代码中不直接与对象和服务器链接,但在配置文件中描述哪个组件须要那一项服务。容器(在Spring框架中是IOC容器)负责将这些联系在一块儿。
AOP是一种编程技术,它容许程序员在横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
Spring Web MVC 是什么?
Spring Web MVC :是一种基于java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即便用了mvc架构模式的思想,将web层进行职责解耦,基于请求驱动就是指的使用请求-响应模型,框架的目的就是帮咱们简化开发,Spring Web MVC也就是要简化咱们平常对WEB的开发
Spring Web MVC能帮咱们作什么
Web开发中的请求-响应模式
所以,在web的世界里:都是Web客户发起请求,Web服务器接受,处理并响应。
通常Web服务器是不能主动通知Web客户端更新内容。
虽然如今有些技术如服务器推(如Comet),还有如今的HEML5 ,websocket能够实现web服务器主动通知Web客户端。
SpringMVC 工做原理
上面这张图很重要,但愿你们能好好看。
第一个例子 Hello World!
下载spring框架jar (我使用的版本是 4.x)
依赖jar包:
1》Spring框架框架依赖的jar包:须要添加Apache commons logging 日志,此处使用的是commons.logging-1.1.1.jar.
2》须要添加jstl标签库支持,此处使用的是jstl-1.1.2.jar.
百度网盘:连接:https://pan.baidu.com/s/1oEcAcTXs8dpRRPHpwz1LCw 提取码:4idj (包括依赖的jar也在里面)
代码:
1,新建一个web项目
在web.xml文件中配置
<servlet> <servlet-name>demo1</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
自此请求已交给Spring Web MVC 框架处理,所以咱们须要配置Spring 的配置文件,默认DispatcherServlet 会加载WEB-INF/[DispatcherServlet 的servelt的名字 ]-servelt.xml配置文件。
本例子为 WEB-INF/demo1-servlet.xml。
在Spring配置文件中(demo1-servlet.xml)配置ViewResolver(视图解析器)demo1-servlet.xml文件须要放在WEB-INF下
<!-- ViewResolver 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 映射视图路径 --> <property name="prefix" value="/WEB-INF/jsp/"/> <!-- 映射视图后缀 --> <property name="suffix" value=".jsp"/> </bean>
InternalResourceViewResolver :用于支持Servlet,jsp视图解析
viewClass:JstlView表示 JSP 模板页面须要使用 JSTL 标签库,classpath中必须包含jstl的相关jar包
(若是想换其余模板引擎,就修改这里,如:freemarker)
prefix和suffix:查找视图页面的前缀和后缀(前缀【逻辑视图名】后缀),好比传进来的逻辑视图名为hello,则该jsp视图页面应该存放在“WEB-INF/JSP/HELLO.JSP”.
开发处理器/页面控制器(也在demo1-servlet.xml中配置)
<!-- 配置处理器 --> <bean name="/hello" class="indi.xiaoen.demo1.web.HelloWorldController"/>
name:表示若是请求的URL为 “上下文/hello”,则将会交给该bean进行处理。
class:为自定义控制器的类路径。
控制器类:HelloWorldControoler
/** 控制器实现 Controller接口 */ public class HelloWorldController implements Controller { /** * 重写 handleRequest 方法 */ @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { //一、收集参数、验证参数 //二、绑定参数到命令对象 //三、将命令对象传入业务对象进行业务处理 //四、选择下一个页面 ModelAndView mv = new ModelAndView(); //添加模型数据 能够是任意的POJO对象 mv.addObject("message", "Hello World!"); //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面 mv.setViewName("hello"); return mv; } }
开发视图页面
建立/WEB-INF/jsp/hello.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>Hello World</title> </head> <body> 是否获取到了Request 里的message :${requestScope.message}<br> 是否获取到了Session 里的message :${sessionScope.message} </body> </html>
ModelAndView.addObject 做用范围是:request
运行项目
ModelAndView
ModelAndView addObject(String attributeName, Object attributeValue)
ModelAndView addAllObjects(Map<String, ?> modelMap)
void setViewName(String viewName) void setView(View view)
运行步骤
1、 首先用户发送请求 http://localhost:8080/demo1/hello——>web 容器,web 容器根据“/hello”路径映射到 DispatcherServlet(url-pattern 为/)进行处理; 2、 DispatcherServlet——>BeanNameUrlHandlerMapping 进行请求处处理的映射,BeanNameUrlHandlerMapping 将 “/hello”路径直接映射到名字为“/hello”的 Bean 进行处理,即 HelloWorldController,BeanNameUrlHandlerMapping 将其包装为 HandlerExecutionChain(只包括 HelloWorldController 处理器,没有拦截器); 3、 DispatcherServlet——> SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter 将 HandlerExecutionChain 中的处理器(HelloWorldController)适配为 SimpleControllerHandlerAdapter; 4、 SimpleControllerHandlerAdapter — — > HelloWorldController 处理器 功 能 处 理 方 法 的 调 用 , SimpleControllerHandlerAdapter 将会调用处理器的 handleRequest 方法进行功能处理,该处理方法返回一 个 ModelAndView 给 DispatcherServlet; 5、 hello(ModelAndView 的逻辑视图名)——>InternalResourceViewResolver, InternalResourceViewResolver 使用 JstlView,具体视图页面在/WEB-INF/jsp/hello.jsp; 6、 JstlView(/WEB-INF/jsp/hello.jsp)——>渲染,将在处理器传入的模型数据(message=HelloWorld!)在视图中展现出 来; 7、 返回控制权给 DispatcherServlet,由 DispatcherServlet 返回响应给用户,到此一个流程结束。
POST中文乱码解决方案(wen.xml文件中配置)
<!--使用Spring框架自带的字符过滤器--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
ok ,但愿你们好好看。而后有疑问能够评价或加我微信18179068936来咨询。谢谢你们!