浅谈JAVA-JS-JSP之间传值的各种方法

此文是为了归纳一下在JAVA-JSP-JS中传值的各种方法以便在以后的学习中熟练掌握和更好地在项目中使用。


1、JS封装的方法:

-----------------------------------------------JSP---------------------------------------------------

<a href="javascript:void(0);" id="qianshou-btn" class="qiandao-class">已签收</a>
<input type="hidden" value='${ret}' id="ret" class="ret-class"/>

-----------------------------------------------JS---------------------------------------------------

//签到按钮点击事件              (根据标签Id)
$("#qianshou-btn").click(function(){
var text=$("#qiandao-btn").html();
if("已签收"==text){
return; }
var ret = $("#ret").val();
if(ret ==-1){
checkLogin();
}else{
qianshouFun();
}});

//签到按钮点击事件              (根据标签class)
$("#qianshou-btn").click(function(){
var text=$(".qiandao-class").html();
if("已签收"==text){
return; }
var ret = $(".ret-class").val();
if(ret ==-1){
checkLogin();
}else{
qianshouFun();
}});

2.JS原生的方法         (根据标签Id)

-----------------------------------------------JS---------------------------------------------------

document.getElementById('qianshou-btn').value;
document.getElementById('ret').value;

以Struts2 为例:

1.Request.setAttribute方法。

常见基本数据类型:Int, String, Boolean......
Int,String
-----------------------------------------------JAVA---------------------------------------------------

HttpServletRequest request = ServletActionContext.getRequest();
String s="str";
int ret = 0;
request.setAttribute("str", s);
request.setAttribute("ret", ret);

------------------------------------------------JSP---------------------------------------------------

<input id="inputStr" type="hidden" value="${str}" />
<input id="inputStr" type="hidden" value="${ret}" />

常见基本数组类型:Map, List

Map
-----------------------------------------------JAVA---------------------------------------------------

//根据Id更行产品信息(包含Id,type,fee,startTime,endTime等字段),返回的是一个Map.
paramMap =FinancialService.updateProductionInit(product_id);
request().setAttribute("paramMap ", paramMap );
return SUCCESS;(Struts 拦截成功之后回调到指定的页面,页面中就可以直接调用该Map)

-----------------------------------------------JSP---------------------------------------------------

<h4>${paramMap.type }</h4>
<td align="left" class="f66"> ${paramMap.type }</td>
<td align="left" class="f66"> ${paramMap.fee }</td>
<td align="left" class="f66"> ${paramMap.startTime}</td>
<td align="left" class="f66"> ${paramMap.endTime}</td>

List
-----------------------------------------------JAVA---------------------------------------------------

//EL表达式 + jstl标签 需要导入JSTL标签库。

//根据Id更行产品信息(包含Id,type,fee,startTime,endTime等字段),返回的是一个List.
productInfoList=FinancialService.updateProductionInit(product_id);
request().setAttribute("productInfoList", productInfoList);
return SUCCESS;

-----------------------------------------------JSP---------------------------------------------------

<c:choose>
            <c:if test="${borrowInformationList != null}">
               <c:forEach items="${borrowInformationList }" var="bean"  varStatus="status">
                    <tr>
                        <td>${bean.type }</td>
                        <td>${bean.fee}</td>
                        <td>${bean.startTime}</td>
                        <td>${bean.endTime}</td>              
                 </tr>
                </c:forEach>
                 
            </c:if>
            <c:otherwise>
                <tr>
                    <td colspan="3">暂无产品信息</td>
                </tr>           
          </c:otherwise>
        </c:choose>

2.在JSP中使用<%%>写JAVA 代码。 建议在使用此方法时尽量使用此标签来获取session的信息。

-------------------------------------------JAVA&JSP---------------------------------------------------

<%@page import="com.iflysse.usermanager.impl.UserDAOImpl"%>
<%@page import="com.iflysse.usermanager.DAO.UserDAO"%>
<%String uName = request.getParameter("uName");
String uPass = request.getParameter("uPass");
UserDAO userDao = new UserDAOImpl();
String ups=userDao.getPass(uName);
if(ups.equals(uPass)){
response.sendRedirect("userlist.jsp?uName="+uName);
}else{
response.sendRedirect("fail.jsp");
}%>

3.使用Ajax。之前两种方法都是JAVA主动先前带传递数据,而是用Ajax的时候是前台条用后台的方法,然后后台向前台传递数据的一个被动传递过程。

-----------------------------------------------JSP---------------------------------------------------

查询月份:
           <input id="createTimeStart"  type="text" >--
           <input id="createTimeEnd"  type="text" >
           <input id="bt_search" type="button" value="搜索" />


-----------------------------------------------JS---------------------------------------------------

$(function(){
                    $("#bt_search").click(function(){
                        param["paramMap.createTimeStart"]= $("#createTimeStart").val();
                        param["paramMap.createTimeEnd"]= $("#createTimeEnd").val();
                       //调用后台方法并传递参数
                        $.shovePost("userCountInfodisplay.do",param,initCallBack);
                        });
                    });
                   //调用成功之后后台返回三个JSON对象。
                 function initCallBack(data,label,line){
                    alert(data);
                    alertlabel);
                    alert(line);
             $("#chartContainer").html(data,label,line);
            }

-----------------------------------------------JAVA---------------------------------------------------

//查询临时表中的数据源
            String   createTimeStart  =paramMap.get("createTimeStart")  ;  
            String   createTimeEnd=paramMap.get("createTimeEnd")  ; 
           userCountInfo = statisManageService.userCountInfo(createTimeStart,createTimeEnd);
          //labels等是List-->JSONArray-->toString 的JSON格式的字符串
           String labels="[{\"category\":"+labels_json+}]";
           String datas="[{\"category\":"+datas_json+}]";          
           String lines="[{\"category\":"+lines_json+}]";  
            request().setAttribute("line", lines);
            request().setAttribute("data", datas);
            request().setAttribute("label", labels);

1  Struts 的标签Form 表单。


-----------------------------------------------JSP---------------------------------------------------

<form  id="updateProduct" name="updateProduct" action="updateProduct.do" method="post">
	<table width="100%" border="0" cellspacing="1" cellpadding="3">
		<tr>
			<td class="blue12" name="paramMap.id">商品名称:</td>
				<s:hidden id="tb_id" name="paramMap.id"></s:hidden>
				<s:textfield id="tb_goodsName" name="paramMap.goodsName"></s:textfield>
		</tr>
		
		<tr>
			<td class="blue12" >商品价格:</td>
				<s:textfield id="tb_goodsName" name="paramMap.price"></s:textfield>
		</tr>
		
		<tr>
			<td class="blue12" >商品链接:</td>
				<s:textfield id="tb_goodsName" name="paramMap.url"></s:textfield>
		</tr>
		
		<tr>
			<td class="blue12">商品介绍:</td>
				<s:textfield id="tb_goodsName" name="paramMap.introduction"></s:textfield>
		</tr>
		
		<tr>
		<button type="button" οnclick="update();"></button>
		</tr>
</form>


-----------------------------------------------JS---------------------------------------------------

function update(){ 
					document.updateProduct.submit();
					}

-----------------------------------------------JAVA---------------------------------------------------

                //获取前台表单信息
                int id = Convert.strToInt(paramMap.get("id"), 0);
		String goodsName = paramMap.get("goodsName");
		String goodsPrice = paramMap.get("goodsPrice");
		String url = paramMap.get("url");
		String introducation = paramMap.get("introduction");
		try {
			//更新产品信息
			result = production.updateProductById(id, goodsName, goodsPrice, url, introduction);
			}



3.用Servlet 封装好了的container

首先将一个Map 用Servlet 封装好专门用来存放表单数据源。具体引包可参考网上的资料,不赘述。

-----------------------------------------------JAVA---------------------------------------------------

/**
 * action的基类
 *
 */
public class BaseAction extends ActionSupport{
	.........
	//页面表单存放数据
	protected Map<String, String> paramMap = new HashMap<String, String>();
	
	public Map<String, String> getParamMap() {
		return paramMap;
	}
	
	public void setParamMap(Map<String, String> paramMap) {
		this.paramMap = paramMap;
	}
	........
	}

-----------------------------------------------JSP--------------------------------------------------

查询月份:
           <input id="createTimeStart"  type="text" >--
           <input id="createTimeEnd"  type="text" >
           <input id="bt_search" type="button" value="搜索" />

-----------------------------------------------JAVA--------------------------------------------------
//查询临时表中的数据源
            String   createTimeStart  =paramMap.get("createTimeStart")  ;  
            String   createTimeEnd=paramMap.get("createTimeEnd")  ; 
           userCountInfo = statisManageService.userCountInfo(createTimeStart,createTimeEnd);


3 使用Servlet 获取 前台页面的值:

-----------------------------------------------JSP---------------------------------------------------

<input class="textbox1" type="text" name="productType" value="productType"/>

-----------------------------------------------JAVA---------------------------------------------------

request.getParameter("productType");


  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值