前言
我們從Web 2.0的隨波逐流,Ajax的大放異彩說起,Struts2框架自己整合了對Ajax的原生支持(struts 2.1.7+,之前的版本可以通過插件實現(xiàn)),框架的整合只是使得JSON的創(chuàng)建變得異常簡單,并且可以簡單的融入到Struts2框架中,當(dāng)然這只是在我們需要JSON的時候才會顯得流光溢彩。
ajax請求在項目中常常使用,今天就平時掌握的總結(jié)一下,關(guān)于使用ajax請求到Struts2中的action時,前臺頁面與后臺action之間的數(shù)據(jù)傳遞交互問題。
這里我主要記錄下自己所掌握的幾種方式。可以根據(jù)自己平時項目的需求來進行選擇。
1.使用stream類型的result
此種類型可以直接讓Struts2中的action向客戶端瀏覽器生成文本響應(yīng)。
示例:
jsp頁面:
<%@ taglib prefix="s" uri="/struts-tags" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>ajax提交登錄信息</title> <%--導(dǎo)入js插件--%> <script src="${PageContext.request.contextPath}/demo/js/jquery-1.4.4.min.js" type="text/javascript"></script></head><body><h3>異步登錄</h3><s:form id="loginForm" method="POST"> <s:textfield name="username"/> <s:textfield name="psw"/> <input id="loginBtn" type="button" value="提交"></s:form><div id="show" style="display:none;"></div></body><script type="text/javascript"> $("#loginBtn").click(function(){ $("#show").hide(); //發(fā)送請求login 以各表單里歌空間作為請求參數(shù) $.get("login",$("#loginForm").serializeArray(), function(data,statusText){ $("#show").height(80) .width(240) .css("border","1px solid black") .css("border-radius","15px") .css("backgroud-color","#efef99") .css("color","#ff0000") .css("padding","20px") .empty(); $("#show").append("登錄結(jié)果:"+data+"<br/>"); $("#show").show(600); },"html");//指定服務(wù)器響應(yīng)為html });</script></html>
處理邏輯的action:
/** * Description:eleven.action * Author: Eleven * Date: 2018/1/26 18:09 */public class LoginAction extends ActionSupport{ private String username; private String psw; //輸出結(jié)果的二進制流 private InputStream inputStream; public String login() throws Exception{ if(username.equals("tom")&& psw.equals("123")){ inputStream = new ByteArrayInputStream("恭喜您,登錄成功".getBytes("UTF-8")); }else{ inputStream = new ByteArrayInputStream("對不起,登錄失敗".getBytes("UTF-8")); } return SUCCESS; } //提供get方法 public InputStream getInputStream() { return inputStream; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; }}
新聞熱點
疑難解答
圖片精選