此文是为了归纳一下在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");