[Spring]Spring框架搭建详解

article/2025/10/27 21:33:55

首先是框架结构图解

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>

http://chatgpt.dhexx.cn/article/yG7mNUFL.shtml

相关文章

spring cloud 框架搭建

一、spring cloud简介 Spring Cloud为开发人员提供了用于快速构建分布式系统中某些常见模式的工具&#xff08;例如&#xff0c;配置管理&#xff0c;服务发现&#xff0c;断路器&#xff0c;智能路由&#xff0c;微代理&#xff0c;控制总线&#xff09;。分布式系统的协调产…

spring boot框架新手搭建

使用maven搭建基本的spring boot框架 先创建一个maven项目&#xff0c;基本流程可查看&#xff1a;https://blog.csdn.net/yuguiyang1990/article/details/8796726 …

spring框架介绍及搭建

介绍 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了使企业应用开发更简单。Spring使用基本的JavaBean替代以前只可能由EJB完成的事情。 spring主要起到解耦合的作用 spring主要学习AOP和IOC概念 IOC :inverse of control 控制反转或者依赖注入 控制反转&…

spring boot项目框架的搭建

spring boot项目框架的搭建 一、实验目的要求二、实验环境三、实验内容任务一 JDK的安装与配置任务二 maven组件的安装与配置任务三 设置localRepository任务四 测试任务五 eclipse中的设置任务六 spring项目的构建与运行任务七 jsp页面的部署任务八 问题与解决方案 一、实验目…

spring 框架简介与搭建

Spring的一个最大的目的就是使J2EE开发更加容易。同时&#xff0c;Spring之所以与Struts、Hibernate等单层框架不同&#xff0c;是因为Spring致力于提供一个以统一的、高效的方式构造整个应用&#xff0c;并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说S…

SpringBoot框架搭建

SpringBoot是一种开源&#xff0c;轻量级开发框架 为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发 如何简化开发的&#xff1f; 基于POJO的轻量级和最小侵入性编程通过IOC&#xff0c;依赖注入和面向接口实现松耦合基于切面AOP和管理进行声明式编程通过切面和…

Spring框架详解

简介 Spring5框架 内容介绍&#xff1a; 1.Spring概念 2.IOC容器 3.Aop 4.JDBCTEmplate 5.事物管理 6.Spring5新特性 一.Spring框架概述 1.概述 1.Spring框架是轻量级的JavaEE框架 2.Spring可以解决企业应用开发的复杂性 3.Spring有两个核心部分&#xff1a;IOC和Aop…

如何搭建一个Spring框架超详细

如何搭建一个Spring框架&#xff0c;首先我们要先了解Spring的核心构成部分 1.Spring 的构成 IOC 控制反转 spring 框架最核心的部分 DAO spring 对 访问数据库的支持 MVC spring 对 mvc设计模式的支持 ORM 对象关系映射 (数据库中的数据映射成对象的技术) 也有针对其它的ORM的…

Eclipse搭建Spring框架(绝对成功!)

花了许久才把Spring框架搭建完成&#xff0c;一把辛酸泪。。。。。。。。。。 一、首先下载好全部所需要的工具和jar包 1 安装 springsource-tool-suite: &#xff08;1&#xff09;打开eclipse-help-marketplace search中输入spring&#xff0c;下载 按install&#xff0c;…

Spring框架的介绍以及搭建

Spring框架的介绍以及搭建 1、框架和架构1.1、什么是框架1.2 架构的发展历程 2、Spring2.1、Spring框架的优势 3、IOC3.1、什么是IOC 4、Maven4、搭建Spring4.1、基于导入jar包和xml配置4.2、基于maven和xml配置4.2.1、本地搭建一个maven4.2.2、创建一个基于Maven的项目4.2.3、…

Spring 框架搭建

1 Spring 框架搭建 第一步&#xff1a;新建 Maven 项目、设置项目坐标以及Maven环境&#xff1a; 设置项目的名称和存放的工作空间&#xff1a; 第二步&#xff1a; 调整JDK版本 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEnc…

Spring框架介绍与搭建

文章目录 1. 简介1.1 什么是Spring1.2 为什么用Spring1.3 Spring5的特性 2. Spring框架核心2.1 IOC&#xff08;控制反转&#xff09;2.2 AOP(面向切面编程&#xff09;2.3 Spring 中 bean 的作用域2.4 Spring 中 bean 生命周期 3. Spring快速搭建3.1 官方提供的搭建方式3.2 使…

Spring框架搭建

Spring是一个轻量级的开源的控制反转&#xff08;IOC&#xff09;和面向切面编程&#xff08;AOP&#xff09;的框架&#xff0c;是很多程序员必须学的一个框架&#xff0c;所有我们使用他的第一个步骤就是导入框架&#xff0c;本文使用的是idea导入。 Spring有以下几个优点&am…

Python模块——glob模块详解

本文大纲 glob模块也是Python标准库中一个重要的模块&#xff0c;主要用来查找符合特定规则的目录和文件&#xff0c;并将搜索的到的结果返回到一个列表中。使用这个模块最主要的原因就是&#xff0c;该模块支持几个特殊的正则通配符&#xff0c;用起来贼方便&#xff0c;这个…

python—glob模块函数(搜索目录文件)

目录 glob函数 iglob函数 glob模块函数用于从目录通配符搜索中生成文件列表&#xff0c;可以快速获取一定格式的文件夹或文件路径的列表。glob匹配模式较少&#xff0c;一共有三种通配符&#xff1a;*、?、[]&#xff0c;属于轻量级。路径分隔符(Unix的/&#xff0c;Windows…

pathlib.Path模块下的glob、rglob,glob模块下的glob、iglob

1、导入所需模块 from pathlib2 import Path import glob2 as gb 2、当前所在路径 # D:\02周报 p Path.cwd()3、比较Path模块中的glob(*)、glob(**)、rglob(*)、rglob(**) # from pathlib2 import Path# D:\02周报 # p Path.cwd()type(p.glob(r"*")) print("P…

python中的glob.glob()(包含详细实例)

在网上搜了半天没搜到满意的解释&#xff0c;最终选择去原英文文档里寻找其释义&#xff0c;具体如下&#xff1a; glob.glob(pathname, *, root_dirNone, dir_fdNone, recursiveFalse) 其功能是返回一个与pathname匹配的路径名列表&#xff08;该列表可以为空&#xff0c;必…

python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用

欢迎大家关注笔者&#xff0c;你的关注是我持续更博的最大动力 原创文章&#xff0c;转载告知&#xff0c;盗版必究 python 的标准库模块glob使用教程&#xff0c;主要为glob.glob函数使用与glob.iglob函数使用 文章目录&#xff1a; 1 glob模块介绍2 glob模块的具体使用2.1 查…

glob.glob()

glob.glob()函数 glob.glob()含有的内容非常少&#xff0c;其功能是查找符合特定规则的文件路径。例如&#xff08;F:/Python/Hello&#xff09;。 功能类似于Windows的文件搜索。 查找文件只用到三个匹配符&#xff1a;" “,”?", “[]”。 " "&#x…

glob函数

查找符合自己要求的文件 glob.glob() 返回一个列表&#xff0c;列表里的元素是符合要求的文件名&#xff08;字符串&#xff09; 三个匹配符&#xff1a; ”*”匹配任意0个或多个字符 ”?”匹配任意单个字符 ”[ ]”匹配指定范围内的字符 例子1&#xff1a; glob.glob(&q…