刚刚在网上东拼西凑的查了一下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="登 录" onclick="clickButton();"/>
后台Action
说明一下,这里我们可以从前台穿一个dto,或者vo过来,然后再处理的action中写上setget方法,返回结果result是一个json对象,是将一个map转换成string,因为json里面的值和map想对应
public 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;
}
}
userdtopackage 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;
}
}