剛剛在網上東拼西湊的查了一下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;
}
}