刚刚在网上东拼西凑的查了一下struts2+jquery+json 实现ajax请求,走了些许弯路,希望这篇文章对想了解ajax请求的同胞们一点帮助。
web.xml加上struts2配置废话少说,实现ajax首先要有jar包。首先加入struts2的jar包,要用json需要加入commons-lang.jar,commons-beanutils-jar,ezmorph.jar,json-lib.jar,json-plugin.jar,commons-collections.jar,commons-logging-jar,注意commons-logging-jar,struts2包中里面有。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
struts.xml注意继承json-default
<package name="frontAjax" extends="json-default" namespace="/front">
<action name="userLogin" class="com.apache.shopping.action.UserLoginAjaxAction">
<result type="json">
<param name="root">result</param>
</result>
<result type="json" name="error"></result>
</action>
</package>
ajax.jsp
说明一下,$.ajax(),这里可以用$,get(),$.post(),但是只有用$.ajax()才能和struts2返回的各种result做相应处理,
<script type="text/javascript"> function clickButton() { $.ajax({ url:"front/userLogin!userLogin", data:{'userDto.name':$('#name').attr('value'),'userDto.password':$('#password').attr('value')},//传送给后台的dto dataType:'json', type:'post', async: false, success:function(data){ alert(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("111"+textStatus); } }); } </script> 用户名 <input type="text" id="name" class="input"/> <input type="password" name="password" id="password" class="input"/> <input class="button" type="submit" value="登 录" οnclick="clickButton();"/>
后台Action
说明一下,这里我们可以从前台穿一个dto,或者vo过来,然后再处理的action中写上setget方法,返回结果result是一个json对象,是将一个map转换成string,因为json里面的值和map想对应
userdtopublic class UserLoginAjaxAction extends ActionSupport{ private UserService userService; private UserDto userDto; private String result; public UserDto getUserDto() { return userDto; } public void setUserDto(UserDto userDto) { this.userDto = userDto; } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } public String userLogin(){ Map<String,Object> map=new HashMap<String,Object>() ; map.put("name","password"); JSONObject json = JSONObject.fromObject(map); result=json.toString(); System.out.print(userDto.getName()+" "+userDto.getPassword()); String s= userService.userLogCheck(userDto.getName(), userDto.getPassword());//这里是写好的去后台数据库检查返回值,有可能成功success,有可能失败error System.out.print(s); return s; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } }
package com.apache.shopping.dto; import java.util.Date; public class UserDto { private String name;//姓名 private String password;//密码 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }