struts1不像struts2一样,并未对json做集成,因此要使用json就必须自己写代码实现json对象的封装,可以在BaseAction中写一个共通方法,用于封装后台的数据为json对象并发送到前台:
public class BaseAction extends Action{
private String encoding = "UTF-8";
private String contentType = "application/json";
/**
* to make JSON object that will be returned to the front-end and send it
*
* @param response response
* @param objName jsonObjectName
* @param obj object that is used to make jsonObject
* @throws IOException
*/
protected void makeJSONObject(HttpServletResponse response, String objName, Object obj) throws IOException {
this.contentType = contentType + ";charset=" + encoding;
LogUtil.log.info("Set contentType to: " + contentType);
JSONObject jsonObj = new JSONObject();
jsonObj.put(objName, obj);
response.setContentType(contentType);
response.setCharacterEncoding(encoding);
PrintWriter pw = response.getWriter();
pw.write(jsonObj.toString());
pw.flush();
}
}
action中调用该方法就可以发送json数据了,但是要保证传入的obj是能够序列化的,因此,一般来说需要事先做一些处理,最好的方法当然就是大家都熟悉的bean了:
public class SearchEnToCnAction extends BaseAction {
// 使用普遍依赖注入方式
private SearchEnToCnBean searchEnToCnBean;
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// 取得前台的Ajax数据
String searchStr = request.getParameter("searchStr");
List<Object[]> enWordInfo = searchEnToCnBean.searchEnToCn(searchStr);
if (enWordInfo.isEmpty()) {
Map<String, Object> jsonResponseLs = new HashMap<String, Object>();
jsonResponseLs.put("enWordInfo", null);
super.makeJSONObject(response, "enWordResponse", jsonResponseLs);
} else {
// json process for EnWord
List<EnWordVo> jsonEnWordLs = new ArrayList<EnWordVo>();
EnWordVo jsonEnWord;
for (int i = 0; i < enWordInfo.size(); i ++) {
Object[] enWord = enWordInfo.get(i);
jsonEnWord = new EnWordVo(enWord[0], enWord[1], enWord[2],
enWord[3], enWord[4], enWord[5], enWord[6], enWord[7],
enWord[8], enWord[9], enWord[10]);
jsonEnWordLs.add(jsonEnWord);
}
// json process for EnExtdWord
List<Object[]> enExtdWordInfo = searchEnToCnBean.searchEnToCnExtdInfo(searchStr);
List<EnExtdWordVo> jsonEnExtdWordLs = new ArrayList<EnExtdWordVo>();
if (enExtdWordInfo.isEmpty()) {
jsonEnExtdWordLs = null;
} else {
EnExtdWordVo jsonEnExtdWord;
for (int i = 0; i < enExtdWordInfo.size(); i ++) {
Object[] enExtdWord = enExtdWordInfo.get(i);
jsonEnExtdWord = new EnExtdWordVo(enExtdWord[0], enExtdWord[1], enExtdWord[2],
enExtdWord[3], enExtdWord[4], enExtdWord[5], enExtdWord[6], enExtdWord[7],
enExtdWord[8], enExtdWord[9], enExtdWord[10], enExtdWord[11]);
jsonEnExtdWordLs.add(jsonEnExtdWord);
}
}
Map<String, Object> jsonResponseLs = new HashMap<String, Object>();
jsonResponseLs.put("enWordInfo", jsonEnWordLs);
jsonResponseLs.put("enExtdWordInfo", jsonEnExtdWordLs);
super.makeJSONObject(response, "enWordResponse", jsonResponseLs);
}
return (mapping.findForward(null));
}
public void setSearchEnToCnBean(SearchEnToCnBean searchEnToCnBean) {
this.searchEnToCnBean = searchEnToCnBean;
}
public SearchEnToCnBean getSearchEnToCnBean() {
return searchEnToCnBean;
}
}
上面所使用的两个VO很简单:
public class EnWordVo {
private Object word;
private Object extdAttr;
private Object mean;
private Object dictId;
private Object wordId;
private Object partOfSpeech;
private Object meaningNum;
private Object exampleNum;
private Object exampleExtdAttr;
private Object enExmp;
private Object exmpMeaning;
public EnWordVo(Object word, Object extdAttr, Object mean, Object dictId,
Object wordId, Object partOfSpeech, Object meaningNum,
Object exampleNum, Object exampleExtdAttr, Object enExmp,
Object exmpMeaning) {
super();
this.word = word;
this.extdAttr = extdAttr;
this.mean = mean;
this.dictId = dictId;
this.wordId = wordId;
this.partOfSpeech = partOfSpeech;
this.meaningNum = meaningNum;
this.exampleNum = exampleNum;
this.exampleExtdAttr = exampleExtdAttr;
this.enExmp = enExmp;
this.exmpMeaning = exmpMeaning;
}
public Object getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public Object getExtdAttr() {
return extdAttr;
}
public void setExtdAttr(String extdAttr) {
this.extdAttr = extdAttr;
}
public Object getMean() {
return mean;
}
public void setMean(String mean) {
this.mean = mean;
}
public Object getDictId() {
return dictId;
}
public void setDictId(String dictId) {
this.dictId = dictId;
}
public Object getWordId() {
return wordId;
}
public void setWordId(String wordId) {
this.wordId = wordId;
}
public Object getPartOfSpeech() {
return partOfSpeech;
}
public void setPartOfSpeech(String partOfSpeech) {
this.partOfSpeech = partOfSpeech;
}
public Object getMeaningNum() {
return meaningNum;
}
public void setMeaningNum(String meaningNum) {
this.meaningNum = meaningNum;
}
public Object getExampleNum() {
return exampleNum;
}
public void setExampleNum(String exampleNum) {
this.exampleNum = exampleNum;
}
public Object getExampleExtdAttr() {
return exampleExtdAttr;
}
public void setExampleExtdAttr(String exampleExtdAttr) {
this.exampleExtdAttr = exampleExtdAttr;
}
public Object getEnExmp() {
return enExmp;
}
public void setEnExmp(String enExmp) {
this.enExmp = enExmp;
}
public Object getExmpMeaning() {
return exmpMeaning;
}
public void setExmpMeaning(String exmpMeaning) {
this.exmpMeaning = exmpMeaning;
}
}
分享到:
相关推荐
总的来说,"struts2+json"资源涉及到了Struts2框架中的Action设计、拦截器机制、结果类型的配置,以及AJAX和JSON在Web应用中的使用。理解这些知识点对于开发动态、交互性强的Java Web应用至关重要。
1. **服务端**:在Struts2的Action类中,定义一个方法处理请求,该方法可能需要访问数据库或其他业务逻辑,然后将结果转化为JSON对象。通过配置struts.xml,设定这个方法返回JSON类型的结果。 2. **客户端**:在...
ExtJs + Struts2 + JSON 是一种常见的前端与后端数据交互的技术组合,常用于构建富客户端应用。这里我们详细探讨一下这三个技术组件以及它们如何协同工作。 首先,ExtJs 是一个JavaScript库,用于创建复杂的、用户...
总的来说,这个"struts1+JSON实例"旨在帮助初学者了解如何在Java Web应用中整合这些技术。通过学习这个实例,你可以掌握Struts1的MVC模式,理解数据库设计,以及掌握JSON和Ajax在实际项目中的应用。实践这些知识点,...
1. **配置Struts2**:首先,需要在Struts2的配置文件`struts.xml`中定义Action,设置返回类型为"json",这样Struts2就会自动将Action的返回值转化为JSON格式。 ```xml <result type="json"> <param name="root">...
这个简单的示例展示了Struts2、JSON和JQuery在实际应用中的协作方式。通过Struts2处理业务逻辑和验证,JSON作为数据交换格式,JQuery在客户端进行交互和验证,可以构建出响应快速、用户体验良好的Web应用。理解并...
Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON Struts2 Jquery JSON
ExtJS + Struts2 + Hibernate + JSON 登录程序是一个典型的Web开发示例,结合了前端JavaScript框架、MVC框架、持久层框架以及数据传输格式,实现了用户登录功能的前后端交互。下面将详细阐述这些技术及其在登录程序...
总结来说,这个实例展示了如何将前端的ExtJS4框架,特别是其Accordion布局和Ext.tree.Panel组件,与Servlet和Struts2后端框架集成,利用JSON进行数据交换,来创建一个动态的、交互性强的Web应用。用户可以通过折叠和...
Struts2、JSON和jQuery是Web开发中常用的三个技术,它们在构建动态、交互式的Web应用程序时发挥着关键作用。这个例子将展示如何整合这三个工具,实现前后端的数据交换。 首先,Struts2是一个强大的MVC(Model-View-...
1. **数据交互**:在Struts2中,可以通过Action类返回JSON格式的结果,这样客户端可以通过AJAX请求获取到服务器端的数据。Struts2提供了`@ResultType("json")`注解或在struts.xml配置文件中配置JSON结果类型,使得...
1. **引入Struts2的JSON插件** 描述中提到的第一步是将Struts2的JSON插件加入到Web项目的lib目录下。这一步非常重要,因为JSON插件为Struts2提供了处理JSON数据的能力。插件的下载地址为:...
在IT行业中,构建动态、交互性强的Web应用是常见的需求,而"联动(struts2+json+jquey)"就是一种实现这种需求的技术组合。这里我们将深入探讨Struts2、JSON和jQuery这三者如何协同工作,以及如何通过它们实现联动效果...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。它结合了MVC设计模式,使得开发人员可以更高效地处理业务逻辑和表现层的分离。JSON(JavaScript Object Notation)是一种轻...
Struts2、Spring、Hibernate、jQuery 和 JSON 是五个在IT行业中极为重要的技术组件,它们各自在Web应用开发中扮演着不同的角色。这篇文章将详细介绍这些技术的整合使用以及它们的功能。 首先,Struts2 是一个基于 ...
通过以上步骤,"Struts2+JSON+jQuery实现Ajax数据的存取"能够有效地提高Web应用的交互性和响应速度,使得用户在不刷新整个页面的情况下,也能获取并处理服务器的新数据。在实际项目中,这通常用于实现表格数据的分页...
在"Struts+Jquery+Ajax+Json应用实例"中,前端使用jQuery库来监听用户事件,比如点击按钮。当事件触发时,jQuery通过Ajax发送一个HTTP请求到后端的Struts Action。在Struts框架中,这个Action会处理请求,执行必要的...
在Struts2中集成JSON,可以方便地将服务器端处理的结果以JSON格式传递给前端,简化数据传输并提高应用性能。 一、Struts2与JSON集成的必要性 在传统的Web开发中,服务器通常返回HTML页面来更新客户端视图。然而,...
首先,Struts2.1是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了Web应用的开发,提供了强大的动作调度和拦截器机制。在本项目中,Struts2.1作为后端控制器,负责处理前端发送的请求,执行...
Struts2、Hibernate和Spring(通常简称为SSH)是Java Web开发中经典的三大框架,它们协同工作,构建出高效、可维护的Web应用程序。在这个"Struts2+Json+Hibernate"的主题中,我们将深入探讨这三个组件如何结合以及...