JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射到任何视图资源。因为JSON插件会负责将Action里的状态信息序列化成JSON格式的数据,并将该数据返回给客户端页面的JavaScript。
简单地说,JSON插件允许我们在JavaScript中异步调用Action,而且Action不再需要使用视图资源来显示该Action里的状态信息,而是由JSON插件负责将Action里的状态信息返回给调用页面——通过这种方式,就可以完成Ajax交互。
Struts2提供了一种可插拔方式来管理插件,安装Struts2的JSON插件与安装普通插件并没有太大的区别,一样只需要将Struts2插件的JAR文件复制到Web应用的WEB-INF/lib路径下即可。
--------引用
JSON插件下载地址:JSON插件下载
框架结构为:struts2 jquery JSON
首先搭建struts2环境
然后引入jar包 如下图:
还需引入jquery.js文件
整个项目结构图如下
配置struts.xml
建立Action类 LoginAction.java
前台页面 login.jsp
my.js
备注:
在调试的时候 出现了乱码,本人水平有限,解决不了。
在login.jsp中设置了
<%@ page contentType="text/html; charset=utf-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%
//竟然还是TMD乱码
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
%>
最后在struts.xml中也配置了
<constant name="struts.i18n.encoding" value="UTF-8" />
还是乱码....
在struts.xml的配置文件中需要注意一点:
package继承的是json-default 而不是struts-default 这是因为只有在该包下才有JSON类型的Result
写到此处还是有点不明:
在my.js 中利用ajax请求地址到loginAction返回是JSON格式数据,不知道它是如何得到Action中的数据的。
我尝试把所有属性的set,get方法注释掉,发现得不到数据了,也许就是set,get传递数据的。
不解与不明之处还请指教!