遇到的问题(电商)
算总账
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(function(){
$("#xx").click(function () {
var tds = $("td");
var total = 0;
for (var i = 1; i < tds.length; i += 2) {
// total += tds.eq(i)
total=total+parseFloat(tds.eq(i)[0].innerText.split('¥')[1]);
}
alert(total);
})
})
</script>
</head>
<body>
<table border="1">
<tr>
<th>网站名</th>
<th> 钱</th>
</tr>
<tr>
<td>Google</td>
<td> ¥5</td>
</tr>
<tr>
<td>Baidu</td>
<td> ¥1</td>
</tr>
<tr>
<td>菜鸟教程</td>
<td> ¥4</td>
</tr>
<tr>
<td>淘宝</td>
<td> ¥6</td>
</tr>
<tr>
<td>Facebook</td>
<td>¥2</td>
</tr>
</table>
<button id="xx">修改所有P元素的内容</button>
<input type="text" id="mm" value="22">
<p>这是另一个段落。</p>
</body>
</html>

以下是基于范围的 for 循环的一般格式:对数组遍历
for (dataType rangeVariable : array)
statement;
现在来仔细看一看该格式的各个部分:
- dataType:是范围变量的数据类型。它必须与数组元素的数据类型一样,或者是数组元素可以自动转换过来的类型。
- rangeVariable:是范围变量的名称。该变量将在循环迭代期间接收不同数组元素的值。在第一次循环迭代期间,它接收的是第一个元素的值;在第二次循环迭代期间,它接收的是第二个元素的值;以此类推。
- array:是要让该循环进行处理的数组的名称。该循环将对数组中的每个元素迭代一次。
int numbers[]={1,2,3};
for(int var : numbers)
{
cout << val << endl;
}
之前的项目用的integer,所以推荐实体类用integer
因为int如果设为空的话默认为0而Integer为Null.. Null对于程序来说比较好控制,可以做空值判断以及对数据做统一处理
盒子模型

Java语言支持一些特殊的转义字符序列。
lidom+="<li><a href=\"${pageContext.request.contextPath}/product/pageProduct.action?cid="+n.cid+"\">"+n.cname+"</a></li>";
| 符号 | 字符含义 |
|---|---|
| \n | 换行 (0x0a) |
| \r | 回车 (0x0d) |
| \f | 换页符(0x0c) |
| \b | 退格 (0x08) |
| \0 | 空字符 (0x0) |
| \s | 空格 (0x20) |
| \t | 制表符 |
| \" | 双引号 |
| \' | 单引号 |
| \\ | 反斜杠 |
| \ddd | 八进制字符 (ddd) |
| \uxxxx | 16进制Unicode字符 (xxxx) |
1 <script> 2 //jQuery的入口函数 3 $(function () { 4 //发送异步请求到后台查询商品的类型 5 $.post("${pageContext.request.contextPath}/product/categoryAll.action",{},function (data) { 6 var lidom=""; 7 //循环后端返回的json类型数据 8 $.each(data,function (i,n) { 9 // console.log(n.cid+"----"+n.cname); 10 //累加节点标签 11 lidom+="<li><a href=\"${pageContext.request.contextPath}/product/pageProduct.action?cid="+n.cid+"\">"+n.cname+"</a></li>"; 12 }); 13 //将拼接好的li追加到ul中即可 14 $("#categoryMain").html(lidom); 15 },"json"); 16 }); 17 </script>
List与Map的选择
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。
List:是存储单列数据的集合,存储的数据是有序并且是可以重复的
Map:存储双列数据的集合,通过键值对存储数据,存储 的数据是无序的,Key值不能重复,value值可以重复

//第二种遍历,使用迭代器
System.out.println("--------使用while的iterator-------");
Iterator<Hero> it= heros.iterator();
//从最开始的位置判断"下一个"位置是否有数据
//如果有就通过next取出来,并且把指针向下移动
//直到"下一个"位置没有数据
while(it.hasNext()){
Hero h = it.next();
System.out.println(h);
package cn.gb.test;
import java.util.*;
public class foreach {
public static void main(String[] args) {
list();
map();
}
//遍历ArrayList
static void list(){
List<String> list=new ArrayList<>();
list.add("hello");
list.add("world");
list.add("HAHAHA");
//第一种方法for-each 遍历List
for (String s:list){
System.out.println(s);
}
//第二种方法迭代器 从第一个空的位置开始移向下一个 有就输出,直到最后一个位置返回为false 则迭代完毕
Iterator<String> it=list.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
//遍历Map
static void map(){
Map<String,String> map=new HashMap<>();
map.put("1","va1");
map.put("2","va2");
map.put("3","va3");
//第一种普遍使用,二次取值 通过Map.keySet遍历key和value
for (String key:map.keySet()){
System.out.println(key+"-"+map.get(key));
}
//第二种 通过Map.entrySet使用iterator遍历key和value
Iterator<Map.Entry<String,String>> iterator=map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String,String> it=iterator.next();
System.out.println(it.getKey()+"--"+it.getValue());
}
//第三种:推荐,尤其是容量大时通过Map.entrySet遍历key和value
for (Map.Entry<String,String> entry:map.entrySet()){
System.out.println(entry.getKey()+"---"+entry.getValue());
}
}
}
进行订单项保存在session里面时,从前端传过来的pid和number需要穿入后台,此时我们可以采用List集合也可以采用Map集合,这步操作在进行保存在session上面是没有问题的,但是在后续的进行订单操作时候,保存在数据库表order_和orderitem里面时
JSP引擎将隐含的session对象暴露给开发者。由于提供了session对象,开发者就可以方便地存储或检索数据。
下表列出了session对象的一些重要方法:
| S.N. | 方法 & 描述 |
|---|---|
| 1 | public Object getAttribute(String name)
返回session对象中与指定名称绑定的对象,如果不存在则返回null |
| 2 | public Enumeration getAttributeNames()
返回session对象中所有的对象名称 |
| 3 | public long getCreationTime()
返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起 |
| 4 | public String getId()
返回session对象的ID |
| 5 | public long getLastAccessedTime()
返回客户端最后访问的时间,以毫秒为单位,从1970年1月1号凌晨开始算起 |
| 6 | public int getMaxInactiveInterval()
返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开 |
| 7 | public void invalidate()
将session无效化,解绑任何与该session绑定的对象 |
| 8 | public boolean isNew()
返回是否为一个新的客户端,或者客户端是否拒绝加入session |
| 9 | public void removeAttribute(String name)
移除session中指定名称的对象 |
| 10 | public void setAttribute(String name, Object value)
使用指定的名称和值来产生一个对象并绑定到session中 |
| 11 | public void setMaxInactiveInterval(int interval)
用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效 |
浙公网安备 33010602011771号