什么是request对象
Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。
request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。
在JS中获取到request,网页地址的方法:
windowlocationhref这里假设URL完整为:baiducom/indexhtmltest=233333
这里要取request中值的属性,可以使用正则表达式获取
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
首先使用RegExp构造一个正则正则表达式对象
var reg = new RegExp("(^|/|&)test=([^&])(&|$)", "i");参数
pattern 一个字符串,指定了正则表达式的模式或其他正则表达式。
attributes 可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。
修饰符
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
然后使用match匹配出结果来
var match= windowlocationhrefmatch(reg);match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
参数
searchvalue 规定要检索的字符串值。
regexp 规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
取出结果
match[2]返回:233333
将它封装为一个函数
function getRequestValue(name) {var reg = new RegExp("(^|/|&)" + name + "=([^&])(&|$)", "i");
var match= windowlocationhrefmatch(reg);
return match&&match[2]||null;
}
完整实例代码:
<html><head>
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
function getValue(name) {
var reg = new RegExp("(^|/|&)" + name + "=([^&])(&|$)", "i");
var match= windowlocationhrefmatch(reg);
return match&&match[2]||null;
}
consolelog(getValue('test'));
</script>
</html>
获取id ${userid}
获取name ${username}
获取company ${usercompany}
JS中直接从java后台获得对象的值(数组的值)
这里举得例子是:JS直接从后台Contorller中(SpringMVC中的model中)获得数值的值
Contorller 此处将 talentIntegralRecordsDay talentIntegralRecordsIntegral 两个数组用JSONtoJSONString()封装。
@SuppressWarnings("deprecation")
@RequestMapping("/integralParadise") public ModelAndView Welcome(>
Users user = userServicecurrentUser(request);
usergetTalentUser()getIntegral();
Systemoutprintln(usergetTime()getDate());
TalentIntegralRecord[] signInTalentIntegralRecords= wechatIntegralServicegetUserSignInTalentIntegralRecords(usergetId()); int size = signInTalentIntegralRecordslength; int[] talentIntegralRecordsDay = new int[size];
Long[] talentIntegralRecordsIntegral = new Long[size]; for(int i=0;i<signInTalentIntegralRecordslength;i++){
talentIntegralRecordsDay[i]=signInTalentIntegralRecords[i]getOperatorTime()getDate();
talentIntegralRecordsIntegral[i]=signInTalentIntegralRecords[i]getIntegral();
}
Map<String,Object> map = new HashMap<String,Object>();
mapput("talentIntegralRecordsDay", JSONtoJSONString(talentIntegralRecordsDay));
mapput("talentIntegralRecordsIntegral", JSONtoJSONString(talentIntegralRecordsIntegral)); return new ModelAndView("wechat/integralParadise/rili",map);
}
前台JSP 因为用到两个数组数据的JS代码为页面引用的JS代码所以要在页面中先声明获得后台两个数组(这段JS代码应在引用的JS文件前面)
<script type="text/javascript">
$(document)ready(function(){
windowtalentIntegralRecordsDay = ${talentIntegralRecordsDay};
windowtalentIntegralRecordsIntegral = ${talentIntegralRecordsIntegral};
});</script>
引用的JS文件 开始就获得了两个数组的值
$(function() { var signFun = function() {
var dateArray = windowtalentIntegralRecordsDay;// 假设已经签到的
var talentIntegralRecordsIntegral = windowtalentIntegralRecordsIntegral; var $dateBox = $("#js-qiandao-list"),
$currentDate = $("current-date"),
$qiandaoBnt = $("#js-just-qiandao"),
_html = '',
_handle = true,
myDate = new Date();
$currentDatetext(myDategetFullYear() + '年' + parseInt(myDategetMonth() + 1) + '月' + myDategetDate() + '日'); var monthFirst = new Date(myDategetFullYear(), parseInt(myDategetMonth()), 1)getDay(); var d = new Date(myDategetFullYear(), parseInt(myDategetMonth() + 1), 0); var totalDay = dgetDate(); //获取当前月的天数
for (var i = 0; i < 42; i++) {
_html += ' <li><div class="qiandao-icon"></div></li>'
}
$dateBoxhtml(_html) //生成日历网格
var $dateLi = $dateBoxfind("li"); for (var i = 0; i < totalDay; i++) {
$dateLieq(i + monthFirst)addClass("date" + parseInt(i + 1)); for (var j = 0; j < dateArraylength; j++) { if (i == dateArray[j]) {
$dateLieq(i)addClass("qiandao"); var integral; if(talentIntegralRecordsIntegral[j]==0){
integral="大转盘";
}else{
integral="+"+talentIntegralRecordsIntegral[j];
}
$dateLieq(i)find("div")text(integral);
}
}
} //生成当月的日历且含已签到
$("date" + myDategetDate())addClass('able-qiandao');
$dateBoxon("click", "li", function() { if ($(this)hasClass('able-qiandao') && _handle) {
$(this)addClass('qiandao');
qiandaoFun();
}
两种情况
1 JS代码在JSP页面中, 这可以直接使用EL表达式 如:
[html] view plain copy print
<script type="text/javascript">
$(function () {
new BacklogOverview("${paramalert}");
});
</script>
2JS代码是单独的js 文件, 通过引入到 JSP中来这时候可通过提前定义JS变量的形式的解决,如:
[html] view plain copy print
<c:set var="contextPath" value="${pageContextrequestcontextPath}" scope="application"/>
<script>
<%--JS gloable varilible--%>
var contextPath = "${contextPath}";
</script>
在JSP页面上定义JS变量 contextPath
这样在之后引入的JS文件中就可以使用contextPath变量了
[html] view plain copy print
//Image setting
configfilebrowserImageUploadUrl = contextPath + "/ckeditor/uploadhtm";
<form:select path="planId" class="input-xlarge"> 最后会生成正常的H5 标签,只要你的属性里配置了就会在生成的标签里附带又id值,然后用js根据id值取值即可:
var val = documentgetElementById(id)value;val就是你要取的标签的value。
ajax是客户端获取服务器上数据的方法
EL表达式利用的是服务器上的数据
显然,EL表达式是不可能获取ajax请求得到的数据的
千万要谨记:JSP也是servlet,它是不可能直接跟JS产生交互的,自然也无法利用JS取到的数据
以上就是关于js函数中怎么获取request中值的属性全部的内容,包括:js函数中怎么获取request中值的属性、js怎样获得后台Model中的值、在JS中如何遍历一个EL表达式的集合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)