日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2中通过Ajax传递json数据

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2中通过Ajax传递json数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、導入Struts2所需要的jar包

下載Struts2的jar包時,可以下載struts-2.5.13-min-lib.zip,然后放到項目的/WebContent/WEB-INF/lib路徑下
struts-2.5.13-min-lib只包含以下jar包:
  commons-fileupload-1.3.3.jar

  commons-io-2.5.jar

  commons-lang3-3.6.jar

  freemarker-2.3.23.jar

  javassist-3.20.0-GA.jar

  ognl-3.1.15.jar

  struts2-core-2.5.13.jar

2、導入操作json數據所需要的jar包

  commons-collections-3.2.2.jar

  commons-lang-2.4.jar

  ezmorph-1.0.6.jar

  json-lib-2.3-jdk15.jar

  struts2-json-plugin-2.5.13.jar

  commons-benautils-1.8.3.jar

?

3、在web.xml文件中添加filter

(配置文件內容可以在下載的struts2文件的\struts-2.5.13-all\struts-2.5.13-all-lib\src\apps\showcase\src\main\webapp\WEB-INF路徑下找到示例文件web.xml)

?

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><filter><filter-name>struts-prepare</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class></filter><filter><filter-name>struts-execute</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class></filter>
<filter-mapping><filter-name>struts-prepare</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts-execute</filter-name><url-pattern>/*</url-pattern></filter-mapping> </web-app>

?4、在src目錄下創建struts.xml文件

(配置文件內容可以在下載的struts文件的\struts-2.5.13-all\struts-2.5.13-all-lib\src\apps\showcase\src\main\resources下找到示例文件struts.xml)

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"> <struts><package name="Login" extends="struts-default,json-default"> <!-- 需要繼承struts-default和json-default --><action name="login"><result>/login.jsp</result></action><action name="loginaction" class="com.hpe.struts.LoginAction"><result type="json"><!-- 返回的數據類型為json --><param name="res">data</param><!-- 這個地方的data就是在LoginAction中定義的data,它必須要有getter、setter,這樣就可以將data傳遞到前臺頁面上,LoginAction類中所有具有getter的字段都會被封裝到一個類中,傳遞到前臺  {"data":"{\"msg\":\"登錄成功!\",\"status\":\"1\"}","mmp":2000} --></result></action></package> </struts>

5、LoginAction類

public class LoginAction extends ActionSupport implements ServletRequestAware {private HttpServletRequest request;private Map<String, String> map = new HashMap<String, String>();private String data;public String getData() {return data;}public void setData(String data) {this.data = data;}public Map<String, String> getMap() {return map;}public void setMap(Map<String, String> map) {this.map = map;}UserService service = new UserService();public String execute() throws IOException {
     // 獲取HttpSession對象HttpSession session
= ServletActionContext.getRequest().getSession();
     // 獲取用戶輸入的驗證碼 
String veryCode = request.getParameter("veryCode").toString();try {// 判斷驗證碼
       // 獲取session中的驗證碼
Object code = session.getAttribute("verycode");if (code == null || !veryCode.toLowerCase().equals(code.toString().toLowerCase())) {
          // 保存狀態碼和狀態信息map.put(
"status", "0");map.put("msg", "驗證碼錯誤!");
          // 將Map對象裝換為JSONObject對象,然后轉換為String類型,保存,并傳遞至前臺頁面data
= JSONObject.fromObject(map).toString();
          return SUCCESS;}
// 判斷用戶名和密碼
       String name = request.getParameter("name").toString();
       String pwd = request.getParameter("pwd").toString();
       User u = service.login(name, pwd);
if (u != null) {session.setAttribute("user", u);map.put("status", "1");map.put("msg", "登錄成功!");data = JSONObject.fromObject(map).toString();} else {map.put("status", "-1");map.put("msg", "用戶名或密碼錯誤!");data = JSONObject.fromObject(map).toString();}} catch (SQLException e) {map.put("status", "-2");map.put("msg", "登錄異常:" + e.getMessage());data = JSONObject.fromObject(map).toString();}return SUCCESS;}@Overridepublic void setServletRequest(HttpServletRequest request) {this.request = request;} }

?6、通過JQuery實現異步訪問

function login() {var name = $('#name').val();var pwd = $('#pwd').val();var vcode = $('#vcode').val();$.ajax({url : "/MyEasyBuy/loginaction",type : "post",data : {"name" : name,"pwd" : pwd,"veryCode" : vcode},dataType : "json",success : function(res) {// 此時獲取到的res是一個Object類型的對象// 將對象轉化為json字符串alert(JSON.stringify(res));// {"data":"{\"msg\":\"登錄成功!\",\"status\":\"1\"}"}// res對象的data屬性alert(res.data);// {"msg":"登錄成功!","status":"1"}// 將res對象的data屬性轉化為json對象var obj = eval("(" + res.data + ")");alert(obj.msg);// 登錄成功!// 錯誤// var obj2 = eval("{" + res.data + "}");// alert(obj2.msg);// alert(res.data.msg); // undefined// alert(JSON.parse(res.data).msg);// 登錄成功!// res已經是一個對象,不能再次將其轉換為json對象// alert(JSON.parse(res)); // 將json字符串轉換為json對象 },err : function() {alert("error");}});}

?在調試過程中,一直提示一些錯誤,如下圖所示:

當struts.devMode設置為true時,html表單數據中出現和action中屬性名不匹配的參數名時就會提示錯誤,這個沒有什么影響,只是為了便于使用者調試。

可以在strust.xml文件中將struts.devMode屬性設置為false就可以了。

?

轉載于:https://www.cnblogs.com/cs569/p/7594112.html

總結

以上是生活随笔為你收集整理的Struts2中通过Ajax传递json数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。