Sample.html

<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>form</title>
<script type="text/javascript" src="js/angular.min.js"></script>
</head>
<body>
<form name="form1" id="form1" ng-controller="form1">
账号:<input type="text" name="username" ng-model="formData.username" required>
<span style="color:red" ng-show="form1.formData.username.$dirty && form1.formData.username.$invalid">
<span ng-show="form1.formData.username.$error.required">请输入账号</span>
</span>
<br />
邮箱:<input type="text" name="email" ng-model="formData.email" required>
<span style="color:red" ng-show="form1.formData.email.$dirty && form1.formData.email.$invalid">
<span ng-show="form1.formData.email.$error.required">请输入邮箱</span>
</span> <p>
<input type="submit" ng-disabled="form1.formData.username.$dirty && form1.formData.username.$invalid || form1.formData.email.$dirty && form1.formData.email.$invalid" value="提交" ng-click="submitForm()">
</p>
</form>
<script type="text/javascript">
var app = angular.module('myApp',[]);
app.controller("form1",function($scope,$http){
$scope.formData = {};
$scope.submitForm = function() {
$http({
method : 'POST',
url : 'Sample.action',
responseType : 'text',
data : $scope.formData
}).success(function(data) {
console.log(data); if (data=="success") {
location.replace("Main.action");
} else {
alert(data.message);
}
});
};
});
</script>
</body>
</html>

angularjs默认提交的方式是appliction/json,我在获取提交的参数username和pwd费了一番功夫,后台用struts2获取username和pwd的代码如下

SampleAction.java

    InputStream is = arg0.getInputStream();
String headerJson = IOUtils.toString(is);
String headerMap = new Gson().fromJson(headerJson, new TypeToken<Map<String, String>>() {}.getType());
String username = ObjectUtils.toString(headerMap.get("username"));
String pwd = ObjectUtils.toString(headerMap.get("pwd"));

我后来是在基类做了一个改造:

public class ActionSupportExtend extends ActionSupport implements ServletRequestAware {

    private HttpServletRequest request;

    private String headerJson;
private Map<String,String> headerMap; public void setServletRequest(HttpServletRequest arg0) {
this.request = arg0;
try {
InputStream is = arg0.getInputStream();
this.headerJson = IOUtils.toString(is);
this.headerMap = new Gson().fromJson(headerJson, new TypeToken<Map<String, String>>() {}.getType());
} catch (IOException e) {
e.printStackTrace();
}
} public String getHeaderAttribute(String key) {
String returnValue = "";
if(this.headerMap!=null) {
if(this.headerMap.containsKey(key)) {
returnValue = ObjectUtils.toString(this.headerMap.get(key));
}
}
return returnValue;
} public HttpServletRequest getRequest() {
return request;
} public void setRequest(HttpServletRequest request) {
this.request = request;
} public String getHeaderJson() {
return headerJson;
} public void setHeaderJson(String headerJson) {
this.headerJson = headerJson;
} }

那么在每次取用angularjs的ajax异步请求的参数,就可以直接这么写:

public class SampleAction extends ActionSupportExtend {

    @Override
public String execute() throws Exception {
String username = getHeaderAttribute("username");
String pwd = getHeaderAttribute("pwd");
// 业务逻辑代码省略
return SUCCESS;
} }

如何使用angularjs实现ajax异步请求的更多相关文章

  1. ajax异步请求

    做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...

  2. spring HandlerInterceptorAdapter拦截ajax异步请求,报错ERR_INCOMPLETE_CHUNKED_ENCODING

    话不多说,直接上正文. 异常信息: Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING 问题描述: 该异常是在页面发送ajax请 ...

  3. jquery Ajax异步请求之session

    写了一个脚本,如下: $(function () { $("#btnVcode").click(function () { var receiveMobile = $(" ...

  4. ajax异步请求Response.Redirect重定向

    一个ajax异步请求报错->捕获异常->重定向错误提示页面.  一个简单的流程 结果一直搞不定.重定向无效.各种百度之. 后来突然想起 ajax的请求是不能在后台重定向的. 如果硬要重定向 ...

  5. jquery的ajax异步请求接收返回json数据

    http://www.jb51.net/article/51122.htm jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发 ...

  6. MVC&WebForm对照学习:ajax异步请求

    写在前面:由于工作需要,本人刚接触asp.net mvc,虽然webform的项目干过几个.但是也不是很精通.抛开asp.net webform和asp.net mvc的各自优劣和诸多差异先不说.我认 ...

  7. AJAX异步请求原理和过程

    AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML),它不是一种新的编程语言,而是一种使用现有标准的新方法. AJAX 基于 JavaS ...

  8. Ajax异步请求-简单模版

    <script type="text/javascript"> window.onload = function () { document.getElementByI ...

  9. art.dialog 与 ajax 异步请求

    上周写了一些代码,涉及到jquery异步请求,这里归纳总结下,希望对刚接触编程的同学有帮助. 主要习惯使用 art.dialog 框架,非常好用,在异步请求上,它提供了很多简便的方法. 加载使用art ...

随机推荐

  1. React Native学习

    学习 首先,假使你已经安装了Nodejs 6,也有使用npm进行Nodejs的包管理 npm install -g react-native-cli 也可以使用yarn作为包管理工具 npm inst ...

  2. zoj 4020 The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light(广搜)

    题目链接:The 18th Zhejiang University Programming Contest Sponsored by TuSimple - G Traffic Light 题解: 题意 ...

  3. [onethink ucenter] 跨域名单点登录关键点

    1.uc_client/data/cache/apps.php <?php $_CACHE['apps'] = array ( 1 => array ( 'appid' => '1' ...

  4. LOJ #6281. 数列分块入门 5-分块(区间开方、区间求和)

    #6281. 数列分块入门 5 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 5   题目描述 给出 ...

  5. C# 推送到极光

    https://docs.jiguang.cn/jpush/resources/ 下载后有完整的例子 引用 Jiguang.JPush.dll using System; using Jiguang. ...

  6. 【C语言期末实训】学生学籍管理系统

    目录: 一,设计要求 ,总体要求: ,具体功能: 二,设计框架 三,程序代码 ,声明函数和头文件 ,声明结构体 ,声明全局变量 ,主体启动函数 ,主菜单函数 ,创建学生档案函数 ,编辑学生档案函数 , ...

  7. Bzoj3566/洛谷P4284 [SHOI2014]概率充电器(概率dp)

    题面 Bzoj 洛谷 题解 首先考虑从儿子来的贡献: $$ f[u]=\prod_{v \in son[u]}f[v]+(1-f[v])\times(1-dis[i]) $$ 根据容斥原理,就是儿子直 ...

  8. Flask实战第37天:服务器权限验证

    完成服务器权限验证之前,我们先如下页面先补上 帖子管理 {% extends 'cms/cms_base.html' %} {% block title %} 帖子管理-CMS管理系统 {% endb ...

  9. 旺财C# .NET代码生成器之DTcms4/5代码批量生成功能

    经近半年的实战积累.于2017年6月底,增加对第三方开源软件DTcms(4和5都支持)的代码生成支持. 可以一键生成的DTcms4/5代码如下:1.Model经典三层实体2.DAL经典三层数据库访问层 ...

  10. 【模拟】Flo's Restaurant

    [poj2424]Flo's Restaurant Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2960   Accept ...