利用Struts2发起ajax请求,实现数据交互

来源:互联网 发布:男士休闲皮鞋 知乎 编辑:程序博客网 时间:2024/05/22 02:17

韩美针对朝鲜进行“先发制人”、“斩首行动”的联合军演;那边朝鲜刚刚搞完导弹试验,特朗普又新任不久。在局势不明朗的情况下,突然出现了金正男遇刺这样的死亡方式——如果真是如新闻所报那样的话,这种暗杀的方式真是非常“老套”。金正男遇刺身亡是国际舞台的博弈还是朝鲜本土的政治阴谋?这就不得不让我们从Web2.0的随波逐流,Ajax的大放异彩说起,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,当然这只是在我们需要JSON的时候才会显得流光溢彩。首先不谈Struts2的原生支持,自己写了一个ajax示例,使用异步请求,直接请求action动作

废话少说,由于Struts2特殊的值栈传值特性,实现在struts2上整合ajax必须在项目中引入struts2-json-plugin-2.2.1.jar(Struts2的其他依赖包这里不再列举

web.xml加上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="front" extends="json-default" namespace="/">
    <action name="index" >
<result>/login.jsp</result>
</action>


<!--ajax请求测试 -->
<action name="ajaxTest" class="com.hp.vote.action.Login" method="ajaxTest">
<result name="success" type="json"></result>
        </action>
    </package>

在struts.xml中,首先说明:

package extends为json-default,这是必须的,只用在json-default中才包含下面使用的result中 type为 json。

然后就是result类型需显示指明为json,result标签内,无需指明视图指向的界面。


文件配置完毕,下面就是具体的ajax请求实现数据交互:

view层:login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="contextPath" value="${pageContext.request.contextPath}"></c:set>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'login.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  <body>
  <script src="${contextPath}/js/jquery-1.7.1.js"></script>
    <form>
    <table  align="center">
    <tr><td>用户名:</td><td><input type="text" name="username" id="username"></td></tr>
    <tr><td>密&nbsp;码:</td><td><input type="password" name="password" id="password"></td></tr>
    <tr><td></td><td><input type="submit" value="登录">
    <input type="reset" value="重置"></td></tr>
    </table>
    </form>
    <button class="btn btn-info" type="button" id="ajaxTestButton">
<i class="ace-icon fa fa-plus-circle bigger-110"></i>
ajax请求测试
</button>

<div id="msg"></div>
  </body>
   <script>
  $('#ajaxTestButton').click(function(){
    $.ajax({
async : false ,
type : "get",
url : '${contextPath}/ajaxTest',
data : {
username : $("#username").val(),
password : $("#password").val()
},
success : function(obj) {
$("#msg").html('<div style="color:red">'+obj.json+'</div>');
}
});
  });
</script>
</html>


action层:

package com.hp.vote.action;
import com.opensymphony.xwork2.ActionSupport;
public class Login extends ActionSupport{
private String username;
private String password;
private String json;
public String getJson() {
return json;
}
public void setJson(String json) {
this.json = json;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute(){
if (username.equals("admin")&&password.equals("admin")) {
return "asuccess";
}else if(username.equals("user")&&password.equals("user")){
return "usuccess";
}else{
return "error";
}
}
/**

* 功能描述: 测试Struts2 整合 ajax请求
* @author wr
* @date 2017年2月28日 上午9:16:05
* @return
*/
public String ajaxTest(){
String name = username;
json = "ajax返回值 : "+name;
return "success";
}
}

最后就是运行结果了,在用户名中输入字符串,点击【ajax请求测试】就是运行结果了




1 0
原创粉丝点击