struts的ajax与servlet的ajax比较

首先写的是servlet的ajax。

在index.jsp中

<body>
    <input type="button" onclick="ajaxCall()" value="确定"/>
    <div id="show"></div>
  </body>
	<script type="text/javascript">
		function ajaxCall(){
			$.get("AjaxServlet",null,function(data){
				$('#show').html(data);
			});
		}
	</script>

 因为其中使用了jquery,所以在开始的时候要引入jquery的js文件。

在AjaxServlet的service中主要是以下代码

public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print("欢迎您");
	}

 这样便实现了点击按钮,无刷新显示了。

2:使用struts的ajax。其实和使用servlet一样,首先要完成基本的配置。在

$.get()中第一个参数改成相应action的名称。

action中的相应内容改成

package action;


import java.io.ByteArrayInputStream;
import java.io.InputStream;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
	private String username;
	private String password;
	private InputStream inputStream;
	public String getUsername() {
		return username;
	}
	public InputStream getResult(){
		return inputStream;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String execute() throws Exception{
		System.out.println("execute....");
		inputStream=new ByteArrayInputStream("恭喜你,成功登录!".getBytes("utf-8"));
		return SUCCESS;
	}
}

 这里的inputstream 就是要显示在页面上的内容。

在struts.xml中

<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<constant name="struts.i18n.encoding" value="gbk"/>
	<constant name="struts.devMode" value="true"/>
	<package name="action" extends="struts-default">
		<action name="login" class="action.LoginAction">
			<result name="success" type="stream">
				<param name="contentType">text/html</param>
				<param name="inputName">result</param>
			</result>
		</action>
	</package>
</struts>

其中第二个参数设置的result 指定由action中的getResult方法返回输出结果。

总结下来区别就是,在action中加了一个inputStream,然后 使用一个getResult方法返回需要显示的信息。

在action中配置result 的type为stream类型。当然这种方法对于大量数据的传递还是有缺陷的。

相关推荐