
文章目录1. XML 配置方式示例1.1 项目结构1.2 配置文件web.xmlxml-servlet.xml1.3 控制器实现2. JavaConfig 配置方式示例2.1 项目结构2.2 配置文件JavaConfigWebInitializer.javaJavaConfigAppConfig.java2.3 控制器实现3. Spring Boot 配置方式示例3.1 项目结构3.2 配置文件SpringBootDemoApplication.java3.3 控制器实现4. 静态资源配置最佳实践4.1 配置静态资源映射5. 性能调优技巧5.1 启用缓存6. 测试对比6.1 访问路径对比6.2 性能对比7. 项目运行准备7.1 依赖配置pom.xml7.2 部署说明1. XML 配置方式示例1.1 项目结构src/main/java └── crj └── example └── xml └── controller └── XmlDemoController.java src/main/webapp └── WEB-INF ├── views │ └── xmlDemo.jsp └── xml-servlet.xml1.2 配置文件web.xmlweb-appxmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1!-- 配置 DispatcherServlet --servletservlet-namexmlDispatcher/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-value/WEB-INF/xml-servlet.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-namexmlDispatcher/servlet-nameurl-pattern/xml/*/url-pattern/servlet-mapping/web-appxml-servlet.xmlbeansxmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd!-- 扫描控制器 --context:component-scanbase-packagecrj.example.xml.controller/!-- 启用 MVC 注解驱动 --mvc:annotation-driven/!-- 配置视图解析器 --beanclassorg.springframework.web.servlet.view.InternalResourceViewResolverpropertynameprefixvalue/WEB-INF/views//propertynamesuffixvalue.jsp//bean/beans1.3 控制器实现XmlDemoController.javapackagecrj.example.xml.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;ControllerRequestMapping(/xml)publicclassXmlDemoController{RequestMapping(/demo)ResponseBodypublicStringhandleRequest(){returnResponse from XML configuration;}}2. JavaConfig 配置方式示例2.1 项目结构src/main/java └── crj └── example └── javaconfig ├── config │ ├── JavaConfigWebInitializer.java │ └── JavaConfigAppConfig.java └── controller └── JavaConfigDemoController.java2.2 配置文件JavaConfigWebInitializer.javapackagecrj.example.javaconfig.config;importorg.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;publicclassJavaConfigWebInitializerextendsAbstractAnnotationConfigDispatcherServletInitializer{OverrideprotectedClass?[]getRootConfigClasses(){returnnewClass[0];}OverrideprotectedClass?[]getServletConfigClasses(){returnnewClass[]{JavaConfigAppConfig.class};}OverrideprotectedString[]getServletMappings(){returnnewString[]{/javaconfig/*};}}JavaConfigAppConfig.javapackagecrj.example.javaconfig.config;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.EnableWebMvc;importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;importorg.springframework.web.servlet.view.InternalResourceViewResolver;ConfigurationEnableWebMvcComponentScan(basePackagescrj.example.javaconfig.controller)publicclassJavaConfigAppConfigimplementsWebMvcConfigurer{publicvoidconfigureViewResolvers(){InternalResourceViewResolverviewResolvernewInternalResourceViewResolver();viewResolver.setPrefix(/WEB-INF/views/);viewResolver.setSuffix(.jsp);}}2.3 控制器实现JavaConfigDemoController.javapackagecrj.example.javaconfig.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;ControllerRequestMapping(/javaconfig)publicclassJavaConfigDemoController{RequestMapping(/demo)ResponseBodypublicStringhandleRequest(){returnResponse from JavaConfig configuration;}}3. Spring Boot 配置方式示例3.1 项目结构src/main/java └── crj └── example └── springboot ├── SpringBootDemoApplication.java └── controller └── SpringBootDemoController.java3.2 配置文件SpringBootDemoApplication.javapackagecrj.example.springboot;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationpublicclassSpringBootDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(SpringBootDemoApplication.class,args);}}3.3 控制器实现SpringBootDemoController.javapackagecrj.example.springboot.controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.stereotype.Controller;ControllerRequestMapping(/springboot)publicclassSpringBootDemoController{RequestMapping(/demo)ResponseBodypublicStringhandleRequest(){returnResponse from Spring Boot configuration;}}4. 静态资源配置最佳实践4.1 配置静态资源映射在JavaConfigAppConfig.java中添加OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler(/static/**).addResourceLocations(classpath:/static/);}5. 性能调优技巧5.1 启用缓存在JavaConfigAppConfig.java中添加BeanpublicCacheManagercacheManager(){returnnewConcurrentMapCacheManager(springMvcCache);}6. 测试对比6.1 访问路径对比配置方式URL响应内容XML 配置http://localhost:8080/xml/demoResponse from XML configurationJavaConfig 配置http://localhost:8080/javaconfig/demoResponse from JavaConfig configurationSpring Boot 配置http://localhost:8080/springboot/demoResponse from Spring Boot configuration6.2 性能对比配置方式启动时间配置复杂度推荐场景XML 配置较慢高传统项目维护JavaConfig 配置中等中新项目开发Spring Boot 配置快低快速开发与微服务架构7. 项目运行准备7.1 依赖配置pom.xmldependencies!-- Spring MVC --dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.20/version/dependency!-- Servlet API --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/versionscopeprovided/scope/dependency!-- Spring Boot 依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.6.8/version/dependency/dependencies7.2 部署说明使用 Tomcat 9 或 Spring Boot 内置 Tomcat 部署访问路径示例XML 配置http://localhost:8080/xml/demoJavaConfig 配置http://localhost:8080/javaconfig/demoSpring Boot 配置http://localhost:8080/springboot/demo下一篇预告《控制器层精进映射、绑定与类型转换》将涵盖RequestMapping的高级使用场景复杂参数绑定与类型转换异步控制器与流式 API 处理