`
lovelease
  • 浏览: 387341 次
社区版块
存档分类
最新评论

struts1+json的应用

阅读更多
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+json"资源涉及到了Struts2框架中的Action设计、拦截器机制、结果类型的配置,以及AJAX和JSON在Web应用中的使用。理解这些知识点对于开发动态、交互性强的Java Web应用至关重要。

    Struts2+Json+Android简单实现

    1. **服务端**:在Struts2的Action类中,定义一个方法处理请求,该方法可能需要访问数据库或其他业务逻辑,然后将结果转化为JSON对象。通过配置struts.xml,设定这个方法返回JSON类型的结果。 2. **客户端**:在...

    ExtJs + Struts2 + JSON 程序总结

    ExtJs + Struts2 + JSON 是一种常见的前端与后端数据交互的技术组合,常用于构建富客户端应用。这里我们详细探讨一下这三个技术组件以及它们如何协同工作。 首先,ExtJs 是一个JavaScript库,用于创建复杂的、用户...

    struts1+JSON实例

    总的来说,这个"struts1+JSON实例"旨在帮助初学者了解如何在Java Web应用中整合这些技术。通过学习这个实例,你可以掌握Struts1的MVC模式,理解数据库设计,以及掌握JSON和Ajax在实际项目中的应用。实践这些知识点,...

    struts2+json+ajax整合例子(导入即可运行,附带详细教程)

    1. **配置Struts2**:首先,需要在Struts2的配置文件`struts.xml`中定义Action,设置返回类型为"json",这样Struts2就会自动将Action的返回值转化为JSON格式。 ```xml &lt;result type="json"&gt; &lt;param name="root"&gt;...

    Struts2+JSON+JQuery实现简单的验证

    这个简单的示例展示了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 Struts2 Jquery JSON

    extjs+struts2+hibernate+json登录程序

    ExtJS + Struts2 + Hibernate + JSON 登录程序是一个典型的Web开发示例,结合了前端JavaScript框架、MVC框架、持久层框架以及数据传输格式,实现了用户登录功能的前后端交互。下面将详细阐述这些技术及其在登录程序...

    ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例

    总结来说,这个实例展示了如何将前端的ExtJS4框架,特别是其Accordion布局和Ext.tree.Panel组件,与Servlet和Struts2后端框架集成,利用JSON进行数据交换,来创建一个动态的、交互性强的Web应用。用户可以通过折叠和...

    一个简单的struts2+json+jquery 交互的例子

    Struts2、JSON和jQuery是Web开发中常用的三个技术,它们在构建动态、交互式的Web应用程序时发挥着关键作用。这个例子将展示如何整合这三个工具,实现前后端的数据交换。 首先,Struts2是一个强大的MVC(Model-View-...

    Struts2+JSON+YUI组合应用之二构建RichClient

    1. **数据交互**:在Struts2中,可以通过Action类返回JSON格式的结果,这样客户端可以通过AJAX请求获取到服务器端的数据。Struts2提供了`@ResultType("json")`注解或在struts.xml配置文件中配置JSON结果类型,使得...

    Struts2 + jQuery+JSON 实现ajax

    1. **引入Struts2的JSON插件** 描述中提到的第一步是将Struts2的JSON插件加入到Web项目的lib目录下。这一步非常重要,因为JSON插件为Struts2提供了处理JSON数据的能力。插件的下载地址为:...

    联动(struts2+json+jquey)

    在IT行业中,构建动态、交互性强的Web应用是常见的需求,而"联动(struts2+json+jquey)"就是一种实现这种需求的技术组合。这里我们将深入探讨Struts2、JSON和jQuery这三者如何协同工作,以及如何通过它们实现联动效果...

    struts2+json/ajax

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。它结合了MVC设计模式,使得开发人员可以更高效地处理业务逻辑和表现层的分离。JSON(JavaScript Object Notation)是一种轻...

    struts2+spring+hibernate+jquery+json

    Struts2、Spring、Hibernate、jQuery 和 JSON 是五个在IT行业中极为重要的技术组件,它们各自在Web应用开发中扮演着不同的角色。这篇文章将详细介绍这些技术的整合使用以及它们的功能。 首先,Struts2 是一个基于 ...

    struts2+json+jquery实现ajax数据的存取

    通过以上步骤,"Struts2+JSON+jQuery实现Ajax数据的存取"能够有效地提高Web应用的交互性和响应速度,使得用户在不刷新整个页面的情况下,也能获取并处理服务器的新数据。在实际项目中,这通常用于实现表格数据的分页...

    Struts+Jquery+Ajax+Json应用实例

    在"Struts+Jquery+Ajax+Json应用实例"中,前端使用jQuery库来监听用户事件,比如点击按钮。当事件触发时,jQuery通过Ajax发送一个HTTP请求到后端的Struts Action。在Struts框架中,这个Action会处理请求,执行必要的...

    struts2+json的使用

    在Struts2中集成JSON,可以方便地将服务器端处理的结果以JSON格式传递给前端,简化数据传输并提高应用性能。 一、Struts2与JSON集成的必要性 在传统的Web开发中,服务器通常返回HTML页面来更新客户端视图。然而,...

    struts2.1+json+jquery用户名校验

    首先,Struts2.1是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了Web应用的开发,提供了强大的动作调度和拦截器机制。在本项目中,Struts2.1作为后端控制器,负责处理前端发送的请求,执行...

    Struts2+Json+Hibernater

    Struts2、Hibernate和Spring(通常简称为SSH)是Java Web开发中经典的三大框架,它们协同工作,构建出高效、可维护的Web应用程序。在这个"Struts2+Json+Hibernate"的主题中,我们将深入探讨这三个组件如何结合以及...

Global site tag (gtag.js) - Google Analytics