当前位置:首页 > 问答 > 正文

用Struts和ON技术搞定数据库连接,顺带聊聊struts json怎么整合数据的那些事

说到用Struts和那个什么ON技术(这里应该是指JSON)来搞定数据库连接和整合数据,这事儿其实说白了就是怎么让一个老牌的Web框架(Struts)能更时髦地处理现在前端最爱的数据格式(JSON),并且能顺畅地和数据库打交道,咱们一步步来拆解这个事,尽量不用那些让人头疼的专业词儿。

咱们得把基础打牢,Struts这框架,它的核心就是一个叫Action的东西,你可以把Action理解成一个专门负责处理用户请求的“办事员”,以前的做法是,用户点个按钮,提交个表单,这个请求就跑到了对应的Action那里,Action忙活一通,可能是去数据库查点东西,然后根据结果,告诉Struts框架:“好了,下一步你该跳转到那个叫success.jsp的页面去”,然后框架就把这个JSP页面渲染成HTML,返回给用户的浏览器,这是最传统的玩法。

但现在时代变了,前端页面越来越复杂,很多逻辑都放在浏览器里用JavaScript做了,这时候,前端就不满足于你后端直接给我一个完整的HTML页面了,它更想要的是“纯数据”,页面上有个下拉菜单,需要动态加载省份和城市的列表,前端就希望我点选省份后,发个请求给后端,后端你别给我整个页面,你就把属于这个省份的所有城市数据,用一种我们前后端都能轻松读懂的格式发给我就行了,这种格式,就是JSON,它长得就像JavaScript里的对象和数组,轻便又好用。

怎么让Struts这个“老办事员”学会输出JSON这种新语言,而不是总想着去跳转JSP页面呢?这就是整合Struts和JSON的关键,这里通常需要一个额外的“翻译官”,也就是一些专门处理JSON的插件或者库,在Struts2的时代,有一个非常常用且好用的插件,就叫Struts2 JSON Plugin,你只需要在你的项目里引入这个插件的JAR包,就像给Struts装上一个新技能。

装好之后,魔法就发生了,你那个负责处理请求的Action类,几乎不用做大改动,你原来怎么写代码去数据库里查数据,现在还怎么写,你有一个UserAction,里面有个方法叫listUsers,这个方法里会调用一个Service,Service再去调用DAO,最后从数据库里捞出一串用户列表,存到一个叫userList的列表里,在传统方式下,你接下来要配置跳转到showUsers.jsp。

但现在,有了JSON插件,一切都简单了,你不需要跳转页面了,你只需要在你的Action类里,为你想要返回给前端的数据提供对应的getter方法,你想返回userList,那你肯定已经有public List getUserList() 这个方法了,在Struts的配置文件(通常是struts.xml)里,你配置这个Action的结果(result)类型时,不再写"dispatcher"或者"redirect"了,而是直接写成"json",你告诉Struts框架:“我这个Action干完活之后,你别找JSP了,直接把我那个userList对象,用JSON的格式序列化(其实就是打包转换),然后直接发送给请求的客户端。”

这样一来,当前端Ajax请求你这个UserAction的listUsers方法时,它收到的就不再是一堆HTML标签,而是一串干净整齐的JSON数据,比如像 [{"id":1, "name":"张三"}, {"id":2, "name":"李四"}] 这样的,前端拿到这个字符串,用JavaScript的JSON.parse一解析,立刻就变成了一个JavaScript的数组对象,想怎么显示就怎么显示,往表格里插也行,填充下拉框也行,非常自由。

咱们再把数据库连接这事串起来,其实数据库连接层(通常用JDBC或者更高级的像MyBatis、Hibernate这样的框架)对于Struts Action来说,是完全隐藏在后面的,Action不需要关心数据库的IP地址、用户名密码是啥,它只跟一个“业务经理”(比如UserService)打交道,Action对“业务经理”说:“喂,给我把所有用户列表拿过来。”“业务经理”就去吩咐“数据专员”(UserDao)去办。“数据专员”才负责真正地连接数据库,执行SQL查询,把结果封装成一个个User对象,然后返回给“业务经理”,“业务经理”再返回给Action,Action最后拿着这一堆User对象,通过我们上面说的JSON插件,直接转换成JSON字符串发回前端,数据库连接是基础,是底层劳动,而Struts Action配合JSON插件,负责的是最后的汇报和呈现工作。

用Struts和JSON搞定这事,核心思路就是:依靠像Struts2 JSON Plugin这样的“翻译官”,让Struts Action跳过生成视图(JSP)的步骤,直接将后台从数据库查询到的Java对象,自动转换成JSON字符串响应给前端,从而实现前后端数据的无缝对接。 这种做法保留了Struts在控制层流程管理上的优势,又迎合了现代Web应用前后端分离、数据驱动的主流趋势。

用Struts和ON技术搞定数据库连接,顺带聊聊struts json怎么整合数据的那些事