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>&nbsp;
	<!--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:不同页面之间的传值及取值的主要内容,如果未能解决你的问题,请参考以下文章

通知模式实现两个textField传值及模态视图——iOS开发

struts2中jsp页面与action之间的传值

mui跨页面的传值和取值

Vue组件传值及页面缓存问题

界面之间的传值

vue父组件与子组件之间的传值