首先是框架结构图解

Spring常用的xml标头

<?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:tx="http://www.springframework.org/schema/tx"xmlns:beans="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"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-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"></beans>

第一步:在web.xml中配置Spring的入口DispatcherServlet

  <servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-context.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>appServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>

第二步:在springmvc-context.xml中配置注解扫描与视图解析器

    <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能如果扫描到有@Component @Controller@Service等这些注解的类则把这些类注册为bean--><context:component-scan base-package="test.jia.com" />
    <!-- 这个类用于Spring MVC视图解析 --><beans:bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><beans:property name="prefix" value="/WEB-INF/pages/" /><beans:property name="suffix" value=".jsp" /></beans:bean>

到这里,Spring最基本的框架已经搭建完成了,可以写个Controller测试一下

@Controller
@RequestMapping("LoginController")
public class LoginController {@RequestMapping("login")public String login(HttpServletRequest request , HttpServletResponse response){System.out.println("  welcome !  ");return "login";}}

启动web项目后,在浏览器访问是通过的,Spring最基本的框架搭建完成。下面我们在此框架的基础上进行功能扩展。

第三步:在springmvc-context.xml中配置Spring拦截器

    <!-- 拦截器配置 -->  <mvc:interceptors>  <mvc:interceptor>  <mvc:mapping path="/*/*"/>  <bean class="test.jia.com.interceptor.UrlsInterceptor">  <property name="urls">  <list>  <!-- 如果请求中包含以下路径,则不进行拦截 -->  <!-- 静态资源 --><value>/js</value>  <value>/css</value>  <value>/image</value>  <value>/images</value>  <value>/png</value>  <value>/jpg</value> <!-- <value>/xxx.do</value> --> </list>  </property>  </bean>  </mvc:interceptor>  </mvc:interceptors> 

创建UrlsInterceptor拦截器

public class UrlsInterceptor implements HandlerInterceptor {//存放被拦截的资源路径private String[] urls;public void setUrls(String[] urls) {this.urls = urls;}@Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {}@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object object) throws Exception {//设置回传格式与编码response.setContentType("text/html;charset=UTF-8");//获取请求String requestURI = request.getRequestURI();//判断uri是否为不拦截的资源for(String url : urls){if(requestURI.indexOf(url)!=-1){return true;}}//逻辑判断,是否拦截if (1==1) {//放行return true;}else {//拦截return false;}}
}

第四步:在springmvc-context.xml中读取property配置文件

    <!-- 引入配置文件 --> <context:property-placeholder location="classpath:config.properties"/><!-- 测试:将配置文件的username对应的值注入LoginUser的构造中 --><beans:bean id="loginUser" class="test.jia.com.entity.LoginUser" ><constructor-arg value="${username}"></constructor-arg></beans:bean>

注:一定要在web.xml配置Spring监听,因为Bean的注入依赖ContextLoaderListener监听

  <context-param><param-name>contextConfigLocation</param-name>  <param-value>classpath:springmvc-context.xml </param-value></context-param><!-- Spring 监听器 --><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 

config.properties配置文件里的内容

username=username

测试:从控制层读取注入的loginUser

    @RequestMapping("login")public String login(HttpServletRequest request , HttpServletResponse response){System.out.println("  welcome !  ");WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());LoginUser loginUser = context.getBean("loginUser", LoginUser.class);System.out.println(loginUser);return "login";}

第五步:在springmvc-context.xml配置:避免IE执行AJAX时,返回JSON出现下载文件

    <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --><!-- ①错误:Not found org.springframework.http.converter.json.MappingJacksonHttpMessageConverter解决方案:Spring版本变化导致,将class里的MappingJacksonHttpMessageConverter改为MappingJackson2HttpMessageConverter②错误:NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException解决方案:需要jackson相关Jar包支持Jar依赖:  jackson-core-2.6.0-rc4.jarjackson-databind-2.6.0-rc4.jarjackson-annotations-2.6.0-rc4.jar--><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean>

第六步:在springmvc-context.xml配置Spring的文件上传相关内容

    <!-- 配置springmvc的上传功能 id必须是multipartResolver --><!-- 错误:NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory解决方案:Spring的CommonsMultipartResolver需要apache的FileItemFactory支持Jar依赖: commons-fileupload.jarcommons-io.jar--><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- maxUploadSize:文件上传的最大值以byte为单位 --><property name="maxUploadSize" value="102400000"></property><!-- 设置默认编码 --><property name="defaultEncoding" value="utf-8" /></bean>

第七步:在web.xml配置字符编码过滤器

    <!-- 字符编码过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!-- 注入默认属性 --><init-param><description>字符集编码</description><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><!-- 过滤器名称 --><filter-name>encodingFilter</filter-name><!-- 拦截哪些请求 --><url-pattern>/*</url-pattern></filter-mapping>

[Spring]Spring框架搭建详解相关推荐

  1. Spring框架之Spring Boot框架搭建详解|CSDN创作打卡

    一.IDEA搭建Spring Boot 1.打开IDEA选择file-new-Project 2.进入新界面先选择Spring Initializr,然后选择SDK版本,及 Initializr Se ...

  2. java 详解 搭建 框架_maven 基本框架搭建详解

    在平时的开发中还是在写blog时,在项目实例开始都会需要一遍一遍的介绍maven框架搭建,重复性的工作让我觉得烦恼,现在展现一下Java的核心思想"重复利用",将这个重复性的描述提 ...

  3. java ssm框架_JavaWeb开发SSM框架搭建详解

    1.需要用到的jar包:由于很多的jar包不好下载,我直接上传到百度网盘: 很多,而且不好下载,我已经整理好好了: 关于SSM框架:以前的博客有介绍过 第一步:创建Dynamic Web Projec ...

  4. Java Spring框架入门详解教程【多测师_何sir】

    Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...

  5. Spring基于注解TestContext 测试框架使用详解

    原创整理不易,转载请注明出处:Spring基于注解TestContext 测试框架使用详解 代码下载地址:http://www.zuidaima.com/share/1775574182939648. ...

  6. Spring和Security整合详解

    Spring和Security整合详解 一.官方主页 Spring Security 二.概述 Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Sp ...

  7. Spring和Ehcache整合详解

    Spring和Ehcache整合详解 一.官方主页 Spring Cache 二.概述 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点. Spring 提供了对缓存功能的抽象: ...

  8. java处理请求的流程_Java Spring mvc请求处理流程详解

    Spring mvc请求处理流程详解 前言 spring mvc框架相信很多人都很熟悉了,关于这方面的资料也是一搜一大把.但是感觉讲的都不是很细致,让很多初学者都云里雾里的.本人也是这样,之前研究过, ...

  9. SpringBoot2.1.5(16)--- Spring Boot的日志详解

    SpringBoot2.1.5(16)--- Spring Boot的日志详解 市面上有许多的日志框架,比如 JUL( java.util.logging), JCL( Apache Commons ...

最新文章

  1. 摄像头(Ov965x)驱动分析
  2. C# 大型对象堆学习总结
  3. How Kyma plugin register hook to Activate and deactivate event
  4. 微软IIS6漏洞:服务器敏感信息易被窃
  5. 怎么安装aptdaemon模块_模块化扩容,米特拉轻商用空气能热水震撼亮相
  6. 《剑指 Offer I》刷题笔记 1 ~10 题
  7. 剑指offer面试题[49]-把字符串转化为整型
  8. Wine DLL库安装工具winetricks
  9. redis的操作笔记
  10. SiamRPN++相对于SiamRPN的改进
  11. 德国:认真是一种可怕的力量
  12. 饮水机和水桶图解RAID方式,强烈推荐
  13. mac 教程 终端设置代理
  14. Vue全家桶学习笔记:Vue Router篇
  15. 2020-11-17 胸口碎大石般的徒手冒泡排序
  16. 转)计算机领域的顶级会议和期刊
  17. 巧用年线抓长线牛股的四种经典技巧
  18. 认真开始学习C语言的2天总结(师承上官可编程----老陈)
  19. 2字节无符号累加和校验,校验从包头到数据的内容
  20. Spring Cloud Alibaba 实战(八)SkyWalking篇

热门文章

  1. python语言程序设计有用吗,python对设计师有什么用
  2. Windows server 2019安装net framework 2.0 3.5
  3. 解决 VS 出现错误 MSB3644 找不到 .NETFramework,Version=v4.6.1 的引用程序集。要解决此问题,请为此框架版本安装......
  4. python:累加数字求平均数(保留小数)
  5. content embedding
  6. java switch case 用法详解
  7. HDMI/DVI____TMDS编码
  8. 自媒体平台上剪视频的素材都是从哪来的?
  9. 国内物联网平台初探(四) ——京东微联
  10. AH6910-3V升12V+小封装SOT23-6升压芯片