当前位置: 首页 > 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.lqws.cn/news/571897.html

相关文章:

  • 开源免费计划工具:帮你高效规划每一天
  • UE5 Grid3D 学习笔记
  • 什么是IPFS(InterPlanetary File System,星际文件系统)
  • c# 在sql server 数据库中批插入数据
  • C++ 格式化输入输出
  • 「Java案例」输出24个希腊字母
  • 计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)
  • Linux下的调试器-gdb(16)
  • 信息安全与网络安全---引言
  • 矩阵的定义和运算 线性代数
  • 设计模式 | 组合模式
  • VMware设置虚拟机为固定IP
  • Transformer结构与代码实现详解
  • redisson看门狗实现原理
  • Linux基本命令篇 —— head命令
  • 【锁相环系列5】再谈数字锁相环
  • python sklearn 机器学习(1)
  • 多模态大语言模型arxiv论文略读(143)
  • 代理模式 - Flutter中的智能替身,掌控对象访问的每一道关卡!
  • ⚙️ 深度学习模型编译器实战:解锁工业级部署新范式​​—— 基于PyTorch-MLIR的全流程优化指南(开源工具链集成)​​
  • Python银行管理系统01升级(适合初学者)
  • 【百日精通JAVA | 语法篇】static关键字
  • CppCon 2017 学习:Undefined Behavior in 2017
  • idea运行到远程机器 和 idea远程JVM调试
  • x86 rop攻击理解2
  • 设计模式-外观模式、适配器模式
  • 设备健康状态实时监测:从技术原理到中讯烛龙的智能实践
  • X-Search:Spring AI实现的AI智能搜索
  • redis延时双删,为什么第一次删除
  • 检查达梦外部表