JavaWeb:不同页面之间的传值及取值
Posted 晚风Adore
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb:不同页面之间的传值及取值相关的知识,希望对你有一定的参考价值。
JavaWeb开发中,页面传值是非常重要的,能帮助页面之间更好的协作。
Servlet向JSP传值
Servlet中的两种跳转方法
- response.sendRedirect(url)跳转到指定的URL地址后,上个页面(跳转之前的原来页面)中的请求全部结束,原request对象将会消亡,数据将会消失。紧接着,当前新页面会新建request对象,即产生新的request对象
- request.getRequestDispatcher(url).forward(request,response)是采用请求转发方式,在跳转页面的时候是带着原来页面的request和response跳转的,request对象始终存在,不会重新创建
所以Servlet向JSP传值使用request.getRequestDispatcher(url).forward(request,response)较为方便,
例如:
String name1 = "llsdd";
int age1 = 34;
request.setAttribute("name",name1);
request.setAttribute("age",age1);
request.getRequestDispatcher("jsp页面/Servlet").forward(request,response);
//由于getRequestDispatcher()跳转时request和response始终存在,
//在跳转的页面中使用request.getAttribute()即可获取传递的参数
Servlet获取参数值
使用request.getParameter(“参数名”),返回结果为String,若需要其他数据类型需要用Integer,Double等包装类进行类型转换
例如:
public void service(HttpServletRequest request ,HttpServletResponse response)
throws ServletException,IOException{
String userName=request.getParameter("userName");
String ages = request.getParameter("age");
Integer age = Integer.parseInt(ages);
}
JSP传值(地址栏参数)
方式一
使用form表单提交数据后会自动将提交的数据作为参数传递给目标Servlet
代码模板:
<form action="servlet-name">
<input type="text" name="参数名1"></input>
<input type="text" name="参数名2"></input>
<input type="submit" value="提交"></input>
</form>
<!-- 点击提交后显示在地址栏为
servlet-name?参数名1=value1&参数名2=value2
-->
方式二
链接标签的href属性中直接写入参数
例如:
<td>
<a href="delEmp?id=<%=e.getId()%>">删除</a>
<!--delEmp为自定义的ServletName-->
<a href="modEmp.html?id=<%=e.getId()%>&name=<%=e.getName()%>&salary=<%=e.getSalary()%>">
修改
</a>
<!--modEmp.html为跳转的页面-->
</td>
JSP从Servlet取值
由于Servlet传递的参数一般存在Attibute中,所以在JSP中使用request.getAttribute()即可获取参数
<%
String name1 = (String)request.getAttribute("name");
int age1 = (int)request.getAttribute("age");
%>
Attribute中存放的是Object类型的值,需要用强制类型转换来得到可用的数据
HTML页面从地址栏取参数
这里我们使用javascript自定义一个函数去实现,该函数的参数为地址栏的参数名,返回值为参数值。
//获取单个参数值:UrlParm.parm("参数名");
UrlParm = function() { // url参数
var data, index;
(function init() {
data = [];
index = {};
var u = window.location.search.substr(1);
if (u != '') {
var parms = decodeURIComponent(u).split('&');
for (var i = 0, len = parms.length; i < len; i++) {
if (parms[i] != '') {
var p = parms[i].split("=");
if (p.length == 1 || (p.length == 2 && p[1] == '')) {// p | p=
data.push(['']);
index[p[0]] = data.length - 1;
} else if (typeof(p[0]) == 'undefined' || p[0] == '') { // =c | =
data[0] = [p[1]];
} else if (typeof(index[p[0]]) == 'undefined') { // c=aaa
data.push([p[1]]);
index[p[0]] = data.length - 1;
} else {// c=aaa
data[index[p[0]]].push(p[1]);
}
}
}
}
})();
return {
// 获得参数,类似request.getParameter()
parm : function(o) { // o: 参数名或者参数次序
try {
return (typeof(o) == 'number' ? data[o][0] : data[index[o]][0]);
} catch (e) {
}
},
//获得参数组, 类似request.getParameterValues()
parmValues : function(o) { // o: 参数名或者参数次序
try {
return (typeof(o) == 'number' ? data[o] : data[index[o]]);
} catch (e) {}
},
//是否含有parmName参数
hasParm : function(parmName) {
return typeof(parmName) == 'string' ? typeof(index[parmName]) != 'undefined' : false;
},
// 获得参数Map ,类似request.getParameterMap()
parmMap : function() {
var map = {};
try {
for (var p in index) { map[p] = data[index[p]]; }
} catch (e) {}
return map;
}
}
}();
window.onload = function (){
var id = UrlParm.parm("id");
var name = UrlParm.parm("name");
var salary = UrlParm.parm("salary");
//用自定义的方法获得地址中的参数
document.getElementById("idd1").innerHTML = id;
document.getElementById("idd2").value = id;
document.getElementById("namee").innerHTML = name;
document.getElementById("salaryy").innerHTML = salary;
//将获取到的参数利用id值渲染到html中
}
将变量渲染到页面的方法
document.getElementById("id值").innerHTML = 变量;
//innerHTML表示将变量放在赋值给id值对应的标签,如 <div id="">变量</div>
document.getElementById("id值").value = 变量;
//value表示将变量放在赋值给id值对应的标签的value属性,如 <input id="" value="变量"/>
以上是关于JavaWeb:不同页面之间的传值及取值的主要内容,如果未能解决你的问题,请参考以下文章