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

SpringMVC响应数据:页面跳转与回写数据

页面跳转

搭建好springmvc的环境后,尝试使用ModelAndView来配置模型与视图来进行返回。但是遇到问题:

控制层代码如下:

@Controller
public class UserController{
    @RequestMapping("save2")
    public ModelAndView save2(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("index");
        modelAndView.addObject("username","hxy");
        return modelAndView;

    }
}

index.jsp文件如下:

<html>
<body>
<h2>Hello World!"${username}"</h2>
</body>
</html>

按道理来说我应该是配置好了ModelAndView,但是最终在页面呈现的内容为Hello World!"${username}",也就是没有解析"${username}"这部分内容,最后找原因:

根据提供的代码和配置,问题可能出在JSP页面未正确解析EL表达式 ${username}。以下是详细原因和解决方案:

原因分析:​

  1. Servlet版本过低导致EL默认禁用
    您的web.xml使用了Servlet 2.3(对应Dweb-app_2_3.dtd),而Servlet 2.3及之前的版本默认忽略(不解析)EL表达式,导致${username}直接显示为字符串。

  2. web.xml更改为支持Servlet 3.0或更高版本,以默认启用EL:

    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                                 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
             version="3.0">
        <!-- 其他配置保持不变 -->
    </web-app>

 回写数据

在springmvc中使用@Response标签来标记,用于回写数据,上述的内容是返回的视图,响应数据是指直接将响应体进行返回。

比如如下代码,使用jackson包中的类转json格式,将响应体进行了返回,最后在页面上呈现了json字符串数据内容

    @RequestMapping("save3")
    @ResponseBody
    public String save3() throws JsonProcessingException {
        User user = new User();
        user.setName("haha");
        user.setAge(18);
        user.setAddress("sc");
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.writeValueAsString(user);
    }
}

上述的方法使用了jackson包中的内容,但我们是在学框架,所以考虑spring-mvc框架中是否有这样的内容能够完成这种形式的转换?

答案当然是有的,框架中携带了这种功能,但是我们需要在配置文件中对其进行重写。

在spring-mvc配置文件中配置处理器

<!--        配置处理器适配器-->
        <bean id="requestMappingHandlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<!--                修改适配器中的消息转换属性-->
                <property name="messageConverters">
<!--                        消息转换的属性对应一个list,所以使用list进行配置-->
                        <list>
                                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
                        </list>
                </property>
        </bean>

上述方式也比较繁琐,现在引入最简单的,在spring-mvc配置文件导入注解驱动也能完成上述功能。

http://www.dtcms.com/a/108517.html

相关文章:

  • 蓝桥杯最后十天冲刺 day 2 双指针的思想
  • TortoiseSVN设置忽略清单
  • 新零售系统是什么样的?有什么好处?
  • Links for llama-cpp-python whl安装包下载地址
  • WEB安全--SQL注入--上传webshell的其他方式
  • QT_xcb 问题
  • java问题
  • 《Viewport:解析与优化,提升网页体验的关键要素》
  • ETLCloud是如何通过Oracle实现CDC的?
  • Elasticsearch 报错index_closed_exception
  • JavaScript Array(数组)
  • LVGL实现一个简易画图板
  • OSPF的Broadcast网络类型
  • [论文笔记] Deepseek技术报告解读: MLAMTP
  • Ubuntu与本地用户交流是两种小方法
  • 一个c#的简单日志记录类,避免使用Nuget依赖
  • Zabbix_agent自动注册教程!
  • 利用 PHP 爬虫按关键字搜索淘宝商品
  • uni-app 微信小程序 WebSocket 接入讯飞语音合成(流式版)WebAPI 示例
  • 【Redis】如何处理缓存穿透、击穿、雪崩
  • 在 Blazor 中使用 Chart.js 快速创建数据可视化图表
  • 大模型生成浏览器端的初级俄罗斯方块
  • 美团民宿 mtgsig 小程序 mtgsig1.2 分析
  • Unity中的C#脚本中文字符无法正常显示问题
  • mysql-创建和删除索引的两种方式
  • 针对 MySQL 数据库中 主键/唯一约束的更新方法 和 ON DUPLICATE KEY UPDATE 语法的详细说明及示例,并以表格总结
  • YOLOv11区域检测
  • Element Plus 常用组件
  • 超越人工智能驱动的网络攻击:现代防御者的策略
  • 电子电气架构 --- 智能座舱域控设计