当前位置: 首页 > news >正文

SpringMVC实战:从配置到JSON处理全解析

目录

项目概述

核心配置文件解析

web.xml配置

springmvc.xml配置

控制器详解

基本控制器示例

请求处理方式

获取请求参数

返回JSON数据

请求转发

重定向

视图解析与页面跳转

项目结构说明

关键知识点总结


项目概述

这是一个基于SpringMVC的Web应用示例,展示了如何配置SpringMVC环境、创建控制器以及处理不同类型的请求和响应。项目包含了以下核心功能:

  • 基本页面跳转
  • 请求参数处理
  • JSON数据返回
  • 请求转发与重定向

核心配置文件解析

web.xml配置

<web-app><!-- 字符编码过滤器 --><filter><filter-name>encodingFilter</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><!-- 前端控制器配置 --><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>
</web-app>

关键点:

  • 配置了字符编码过滤器,统一处理请求和响应的编码为UTF-8
  • 配置了SpringMVC的前端控制器DispatcherServlet
  • 指定了SpringMVC配置文件的位置(classpath:springmvc.xml)

springmvc.xml配置

<beans><!-- 组件扫描 --><context:component-scan base-package="com.qcby"/><!-- 注解驱动 --><mvc:annotation-driven/><!-- 视图解析器配置 --><bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver"><property name="templateEngine" ref="templateEngine"/></bean><!-- JSON视图支持 --><bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
</beans>

关键点:

  • 配置了组件扫描,自动注册带有@Controller注解的类
  • 启用注解驱动,简化配置
  • 配置了Thymeleaf视图解析器
  • 添加了JSON视图支持

控制器详解

基本控制器示例

@Controller
public class HelloController {@RequestMapping("/toIndex")public String toIndex(){return "index"; // 返回视图名称}
}

请求处理方式

获取请求参数

@RequestMapping(value = "/save", method = RequestMethod.GET)
public void save(HttpServletRequest request, HttpServletResponse response){String name = request.getParameter("name");String password = request.getParameter("password");System.out.println("name="+name+" password="+password);
}

返回JSON数据

@RequestMapping(value = "/save1", method = RequestMethod.GET)
public void save1(HttpServletRequest request, HttpServletResponse response) throws IOException {String name = request.getParameter("name");String password = request.getParameter("password");String json = "{\"name\":\""+name+"\",\"password\":\""+password+"\"}";response.setContentType("application/json;charset=utf-8");response.getWriter().append(json);
}

请求转发

@RequestMapping(value = "/save2", method = RequestMethod.GET)
public void save2(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {request.getRequestDispatcher("/suc").forward(request,response);
}

重定向

@RequestMapping(value = "/save3", method = RequestMethod.GET)
public void save3(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {response.sendRedirect("html/suc.html");
}

视图解析与页面跳转

项目配置了Thymeleaf视图解析器,默认查找/html/目录下的.html文件:

<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"><property name="prefix" value="/html/" /><property name="suffix" value=".html" />
</bean>

控制器返回视图名称时,会自动拼接前缀和后缀:

@RequestMapping("/suc")
public String suc(){return "suc"; // 实际查找 /html/suc.html
}

项目结构说明

关键知识点总结

  1. @Controller注解:标识一个类作为SpringMVC的控制器
  2. @RequestMapping注解:映射URL到控制器方法
  3. 请求处理方式:
    1. 通过HttpServletRequest获取参数
    2. 直接返回视图名称
    3. 手动处理JSON响应
  4. 请求妆发与重定向:
    1. 转发:request.getRequestDispatcher().forward()
    2. 重定向:response.sendRedirect()
  5. 视图解析:通过配置视图解析器简化试图定位
http://www.lryc.cn/news/577007.html

相关文章:

  • AlphaFold3安装报错
  • SpringCloud系列(40)--SpringCloud Gateway的Filter的简介及使用
  • cron 表达式 0 10 0/2 * * ? 的含义
  • Linux基本命令篇 —— head命令
  • 5 c++核心——文件操作
  • Origin绘制复合子母饼状图—复合柱饼图、复合环饼图及复合饼图
  • [Linux] PXE
  • es6特性-第一部分
  • Tomcat 安装使用教程
  • mybatis-plus从入门到入土(一):快速开始
  • 云端可视化耦合电磁场:麦克斯韦方程组的应用-AI云计算数值分析和代码验证
  • Spring Cloud:服务监控与追踪的高级实践
  • 为什么要安装create-vue@3.17.0
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 20(题目+回答)
  • 通过交互式可视化探索波动方程-AI云计算数值分析和代码验证
  • redisson看门狗实现原理
  • ai数据分析黄金
  • RuoYi-Vue学习环境搭建
  • Vue 与react 生命周期对比
  • WSL连不上网解决方案(包含WSL虚拟交换机不正常以及WSL网络配置不正常两种解决方案)
  • wpf的Binding之UpdateSourceTrigger
  • 【惯性导航知识杂记7】舒拉 (休拉、舒勒)周期、傅科周期、地球周期
  • Boss:技能选取——随机概率
  • 【51单片机按下按键1,8位共阴极数码管输出2022-606。按下按键2,8位共阴极数码管输出606-1132。】2022-6-10
  • 现代C++ 文件系统库
  • Spring生态创新应用
  • 学习React官方文档(描述UI)
  • 【机器学习实战笔记 13】集成学习:GBDT算法
  • (七)集成学习
  • stm32hal模块驱动(1)hpdl1414驱动