2023年3月

---类似网友问题:但我按照这样无法解决。

eclipse中maven项目jar包不会自动下载解决办法 - wavemelody - 博客园
http://www.cnblogs.com/mymelody/p/5616685.html

eclipse的maven无法自动下载jar包 - 自古红蓝出CP的博客 - CSDN博客
http://blog.csdn.net/Blue_Red_1314/article/details/74003091

-------------

后来本人换了一个新的eclipse IDE,一个新的workspace,一个新的代码路径,从新SVN代码下来,都无法解决。

--------------------

Description    Resource    Path    Location    Type
The container
'Maven Dependencies' references non existing library 'F:\Projects\Java\.m2\repository\org\
springframework\boot\spring-boot-starter-data-jpa\1.5.6.RELEASE\spring-boot-starter-data-jpa-1.5.6.RELEASE.jar'
fsjxb Build path Build Path Problem

本人决定做实验,针对其中一个 jar包 到仓库去看看。

查看本地仓库的对应的文件夹,发现里面根本没有这个jar包(之前就知道),一直思考为什么不会自动下载。

现在做个试验,把下面四个文件删除,再更新maven项目看看是否会自动下载:

\spring-boot-starter-data-jpa-1.5.6.RELEASE.pom;
\spring-boot-starter-data-jpa-1.5.6.RELEASE.pom.lastUpdated;
\spring-boot-starter-data-jpa-1.5.6.RELEASE.pom.sha1;
\_remote.repositories;

更新后变成:没有解决

\spring-boot-starter-data-jpa-1.5.6.RELEASE-sources.jar;
\spring-boot-starter-data-jpa-1.5.6.RELEASE-sources.jar.lastUpdated;
\spring-boot-starter-data-jpa-1.5.6.RELEASE-sources.jar.sha1;
\spring-boot-starter-data-jpa-1.5.6.RELEASE.pom;
\spring-boot-starter-data-jpa-1.5.6.RELEASE.pom.sha1;
\_remote.repositories;

整个文件夹删除后,更新,变成以下:没有解决。--不知道为什么就是不下载,奔溃。

后来发现我的本地仓库已经很大了,是不是这个问题呢,后来证实不是。仓库多大都可以。

-----window-show view-maven repositories 开始折腾这个 索引问题,最后无果。

细心考虑:决定对比笔记本 maven的配置:发现配置一模一样。

解决:

原来Reindex按钮要点击,更新本地仓库的索引。一更新,maven立刻自己下来了对应jar包,项目完美运行。教训呀。

那为什么之前项目会认为jar包已经下载了呢?还有一种可能:之前曾经没有切换为本地仓库,已经更新过项目,对应的jar包都已经下载到

C:\Users\你的用户名\.m2\repository 下面了。

1.
系统设计--项目效果图请看最后面

1
技术选型 (系统架构)

JSTL + JSP + Servlet + JavaBean + BeanUtils + FileUpload + JavaMail + DBUtils(JDBC) + C3P0 +  MySQL + MyEclipse10+ Tomcat7.0 + JDK6  + Windows

MVC
模式

JavaEE
三层结构
web

service

dao

DAO
模式

2
数据库设计

系统存在以下实体:用户、商品、订单、购物车

项目跑起来 过程:1、讲课虽然是myeclipse  因为不熟悉,这个项目是兼容eclipse的,导入jsp-api.jar  servlet-api.jar【一般在tomcat 的 lib中】

2、导入数据库到mysql中,设定连接数据库 配置文件 /bookEstore/src/c3p0-config.xml中

3、有中文乱码,解决不了, 部分是字符串后面的 "  乱码了,手动添加;

4、 用jdk 1.7 可以跑,不用手动更改什么设定

5、运行,发现图片 flash 很多资源显示不出来,按照老师课程设定 本地 http://www.bookEstore.com就可以访问工程问题不成功,放弃;

将代码中 搜索有http://www.bookEstore.com 的地方都替换为${pageContext.request.contextPath }/     包括css js  的路径 ,

6、 运行完美显示 ,就是有乱码,蛋疼。

的一点理解:

1、
关于在浏览器上直接输入  http://www.bookEstore.com就可以访问工程问题

1.在tomcat/conf/server.xml文件中配置一个虚拟主机<Hostname="www.bookEstore.com"appBase="D:\j2eeWorkspaces\bookEstore"unpackWARs="true"autoDeploy="true">       
                <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"prefix="localhost_access_log."suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" />
                 
                <Contextpath=""docBase="D:\j2eeWorkspaces\bookEstore\WebRoot"/>                  
          </Host>2.需要在C:\Windows\System32\drivers\etc路径下查找一个配置文件hosts
在这个文件中配置
127.0.0.1 www.bookEstore.com
3.可以在server.xml文件中
<Enginename="Catalina"defaultHost="www.bookEstore.com">

2、通过 index 首页 简单语句 跳转到指定页面:

<%@ pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<jsp:forwardpage="/product"></jsp:forward>

3、forEach中 获得 每一行的 id

<c:forEach items="${ps}" var="p" varStatus="vs">

<c:if test="${vs.count%5==0}">

4、跨行布局 表格 下图是6行2列


colspan是跨列,rowspan是跨行

<tablealign="center">
        <tr>
            <tdrowspan="5"><imgsrc="http://www.bookEstore.com/${p.imgurl_s}">
            </td>
            <td>商品名称:${p.name}</td>
        </tr>

        <tr>
            <td>商品价格:${p.price}</td>
        </tr>
        <tr>
            <td>商品类别:${p.category}</td>
        </tr>
        <tr>
            <td>商品数量:${p.pnum}</td>
        </tr>
        <tr>
            <td>商品描述:${p.description}</td>
        </tr>

        <tr>
            <tdcolspan="2"align="right">
            <imgsrc="${pageContext.request.contextPath}/images/buy.bmp"onclick="addProductToCart('${p.id}')"></td>
        </tr>
    </table>

5、添加购物车 有技巧

//添加商品到购物车
    public voidadd(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {//1.得到要添加到购物车中的商品的id
        String id = request.getParameter("id");//2.根据id查找商品
        try{
Product p
= newProductServiceImpl().findById(id);//3.得到购物车 HttpSession session =request.getSession();
Map
<Product, Integer> cart = (Map<Product, Integer>) session
.getAttribute(
"cart");if (cart == null) {//如果cart不存在,说明是第一次购物. cart = new HashMap<Product, Integer>();
}
//判断购物车中是否有要添加商品。Integer count= cart.put(p, 1);//注意map的用法if (count != null) {//说明有吗 cart.put(p, count + 1);
}

session.setAttribute(
"cart", cart);

}
catch(SQLException e) {
e.printStackTrace();
}

response.sendRedirect(request.getContextPath()
+ "/index.jsp");
}

6、.查看购物车中商品

当点击查看购物车中商品时,会跳转到一个jsp页面,购物车是存储在session中的,
那么在jsp页面上就可以直接得到session中的商品信息.

jsp中学会标签库,jstl

订单查询操作:

订单的取消与支付:

订单的取消与支付
1.支付操作
使用了在线支付操作 epay第三方支付平台.

在显示订单页面上showOrder.jsp页面,显示订单信息中,包含了当前支付状态。
会显示 "已支付" "未支付",如果是未支付,会有一个连接访问pay.jsp页面,
并将当前订单的id,以及当前订单的金额传递到pay.jsp页面。

1.在pay.jsp页面上可以选择银行,表单提交时,将订单编号,金额,以及银行,提交到OnlinepayServlet中。
2.在OnlinePayServlet中完成请求参数封装.
3.第三方支付,会根据你提交的请求参数 p8_Url 向这个路径发送信息,
4.可以指定p8_url为CallbackServlet,那么我们在servlet中就可以得到支付结果信息
5.通过判断信息是否正确,以及r9_BType=1 r9_BType=2 可以知道,是否支付成功
6.当判断支付成功后,我们要修改订单的状态。
1.在orders表中有一个字段 paystate=0 代表未支付,我们支付成功后,要修改订单的状态。
paystat=1 这个代表订单已对付.

2.修改订单状态要根据订单编号修改,在返回的支付结果信息中r6_Order,它就代表了
我们的订单编号。
---------------------------------------------
2.订单取消
在显示订单的页面上,会提供一个删除订单的连接。

1.录取消订单时,这个超连接会携带当前订单的编号传递到服务器端.
<ahref="${pageContext.request.contextPath}/order?method=del&id=${order.id}">取消订单</a>2.这个连接会访问OrderServlet,并且 method=del id=订单编号

3.OrderServlet中会根据传递method判断执行取消订单操作,会根据id知道要删除哪一个订单.

4.删除订单注意事项
1.删除订单要将orders表中数据删除---根据id删除.
2.需要删除orderItem表中数据
3.需要修改商品的数量 也就是说需要对products表进行update操作.

代码:
1.根据订单id在orderitem表中查询出相关的商品信息.
2.修改商品信息
3.删除订单项信息
4.删除订单.
以上操作,也需要进行事务控制。

突然疑问:

1、登录成功后为什么要将用户存到session中?

// 登录成功后,将用户存储到session中.
request.getSession().invalidate();
request.getSession().setAttribute("user", user);

2、 feild 域,“username”这样就传一个参数进去了吗?  还有正则表达式?

//验证用户名
var flag1=checkNull("username");

//非空操作
function checkNull(field){
var reg = /^\s*$/; //代表0个或多个空白符
var value = document.getElementById(field).value;

3、勾选记住用户名,难到勾选了 就获得请求参数了吗

<td colspan="2"><input type="checkbox"
name="remember" value="on" />记住用户 <input
type="checkbox" name="autologin" value="on" />自动登陆</td>

String saveUsername = request.getParameter("remember");

4、点击添加到购物车后,js中这样就跳转

<script type="text/javascript">
function addProductToCart(id) {
location.href = "${pageContext.request.contextPath}/cart?method=add&id=" + id;
}
</script>

====

图书商城
1.功能分析
1、用户注册
2、用户登录
3、添加商品(CURD)
4、商品查看-- 列表查询
5、商品详情页面
6、将商品添加购物车
7、查看购物车
8、修改购物车
9、生成订单
10、订单查看(取消)
11、在线支付
12.下载销售榜单

游客(未登录): 注册、登陆、商品查看
商城注册用户 : 商品查看、添加商品到购物车、购物车管理、生成订单、订单管理、在线支付
管理员 : 添加商品、商品管理、查看订单 、榜单查看(导出)

2.系统设计

1技术选型 (系统架构)
JSTL + JSP + Servlet + JavaBean + BeanUtils + FileUpload + JavaMail + DBUtils(JDBC) + C3P0 + MySQL + MyEclipse10+ Tomcat7.0 + JDK6 + Windows
MVC 模式
JavaEE 三层结构 web层 service层 dao层
DAO 模式

2数据库设计
系统存在以下实体:用户、商品、订单、购物车
购物车不放入数据库 (Session或者Cookie实现)
用户表
create table users (
id int primary key auto_increment,
username varchar(40),
password varchar(100),
nickname varchar(40),
email varchar(100),
role varchar(100) ,
state int ,
activecode varchar(100),
updatetime timestamp );
商品表
create table products(
id varchar(100) primary key ,
name varchar(40),
price double,
category varchar(40),
pnum int ,
imgurl varchar(100),
description varchar(255));
订单表
create table orders(
id varchar(100) primary key,
money double,
receiverinfo varchar(255),
paystate int,
ordertime timestamp,
user_id int ,
foreign key(user_id) references users(id)
);

用户与订单之间存在 一对多关系 : 在多方添加一方主键作为外键
订单和商品之间存在 多对多关系 : 创建第三张关系表,引入两张表主键作为外键 (联合主键)
订单项
create table orderitem(
order_id varchar(100),
product_id varchar(100),
buynum int ,
primary key(order_id,product_id),
foreign key(order_id) references orders(id),
foreign key(product_id) references products(id)
);

设置数据库环境
数据库 :create database estoresystem

3 工程环境搭建和网站部署
1) 导入jar包
导入mysql驱动 mysql driver / mysql-connector-java-5.0.8-bin.jar
导入c3p0 c3p0/c3p0-0.9.1.2.jar 将c3p0-config.xml 复制src下 将DataSourceUtils复制 cn.itcast.estore.utils
----- 配置c3p0-config.xml数据库连接参数
导入dbutils apache commons\dbutils\commons-dbutils-1.4.jar
导入beanutils commons-beanutils-1.8.3.jar commons-logging-1.1.1.jar
导入fileupload commons-fileupload-1.2.1.jar commons-io-1.4.jar
导入javamail mail.jar
导入jstl jstl.jar standard.jar

2) 建立package结构 按照JavaEE 三层结构
cn.itcast.estore.web.servlet
cn.itcast.estore.web.filter
cn.itcast.estore.web.listener
cn.itcast.estore.service
cn.itcast.estore.dao
cn.itcast.estore.domain
cn.itcast.estore.utils

3) domain类编写

4) 工程发布
将bookEstore项目配置虚拟主机,以顶级域名方式进行发布
1) 将工程根目录 bookEstore目录 配置虚拟主机目录 ---- 配置conf/server.xml
<Hostname="www.bookEstore.com"appBase="myeclipse下的工程路径"unpackWARs="true"autoDeploy="true"xmlValidation="false"xmlNamespaceAware="false"> </Host>2) 将工程目录下WebRoot 目录,配置缺省web应用<Hostname="www.estore.com"appBase=" myeclipse下的工程路径"unpackWARs="true"autoDeploy="true"xmlValidation="false"xmlNamespaceAware="false"> <Contextpath=""docBase="WebRoot" /> </Host>3) 将www.estore.com 虚拟主机配置缺省虚拟主机 ----- 能够用ip直接访问主机<Enginename="Catalina"defaultHost="www.estore.com">4) 修改本机域名解析文件 hosts ---- c:\windows\system32\drivers\etc
添加 127.0.0.1 www.bookEstore.com

3.功能实现
1用户注册
1、 功能一: 用户注册 (技术点:验证码技术 、激活邮件技术)
1) 一次性验证码
原理:在生成验证码Servlet程序中,将生成验证码保存Session中,用户提交验证码 与 保存在Session验证码进行比较,如果相同,请求合法

2) 注册表单 JS校验
考虑JS校验是否可以抽取成框架
3) 处理form乱码问题 ---- 通用get post 乱码过滤器
4) 密码 MD5 加密

5) 激活邮件发送

6) 配置通用错误处理页面web.xml
<error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page>500.jsp 显示错误的信息
404.jsp 自动刷新跳转回主页面
2用户登录
原理:用户输入正确用户名和密码,登陆成功,用户信息将会被保存Session对象中。 ------ 记住用户名和密码 、自动登陆

1) 登陆表单中,添加记住用户名 和 自动登陆功能

2) 登陆过程中判断 账户是否激活

3) 在login.jsp 显示记住用户名
在username 的input项中添加 value="${cookie.username.value}"
在勾选自动登陆 checkbox 添加

4) 登陆后注销功能
注销Session
3用户自动登录过滤器
自动登陆功能 对系统所有页面有效 (例如访问index.jsp list_product.jsp info_product.jsp 这些页面在访问时都将执行自动登陆 )
* 对于登陆相关页面不会执行自动登陆逻辑 (login.jsp 、LoginServlet 、InvalidateServlet )
1) 判断该请求页面是否需要自动登陆
2) 是否已经登陆
3) 是否含有自动登陆cookie
4) 自动登陆

5) 在LoginServlet 添加对于没有勾选记住用户名和自动登陆 处理代码 !!!!!!!
6) 在退出功能 InvalidateServlet 清除自动登陆信息

4商品添加
文件上传三个注意事项
1) input输入框 必须有name属性
2) 表单form 必须post提交方式
3) 设置form的enctype 为 multipart/form-data

表单提交时,校验分为两种 : 客户端校验 、服务器端校验 ------ 只有服务器端校验才能确保数据准确

商品图片上传到服务器端后,保存在哪个目录 ??? 必须直接在WebRoot下及其除WEB-INF、META-INF 子目录外

一般情况下,一张表对应Domain类 --- DAO类 ---- Service类
5商品列表查看

列表中显示原图,因为原图比较大,页面加载非常缓慢 ,页面布局不会很美观 ---------------- 缩略图
* Java中通过图形界面技术,生成小图

在Product类中添加 getImgurl_s方法,用来获取缩略图路径

6商品详细信息查看
通过在列表中点击 商品图片或者商品名称 进入详情查看页面
7添加商品到购物车
购物车对象,不保存在数据库中,使用Session来保存用户购物车数据

保存购物车对象 Map
<Product,Integer>key 商品对象 value 商品购买数量

流程 :添加商品到购物车流程,点击添加到购物车,将商品id传递Servlet ,从Session中取出购物车对象,
判断商品是否已经在购物车中,如果不在添加商品到购物车数量 1 ,在购物车取出原有数量+1
1) 如果Map的key是一个自定义对象,重写 hashcode和equals
2) 如果商品不在购物车中,需要根据商品 id 查询商品所有信息,添加购物车

3) 添加商品到购物车
Session中信息在服务器正常关闭时,会被序列化到硬盘中 ---- Product实现 Serializable接口 完成序列化
8显示与修改购物车数据
购物车信息保存在Session中,不需要去查询数据库,将Session中信息显示出来

1) 在购物车中显示总价

2) 购物车修改 :
清空购物车 : request.getSession().removeAttribute("cart");
删除购物车中单项商品 : cart.remove(product) ; 注意:删除一项后,判断购物车是否为空,如果为空 移除购物车对象

* 删除确认功能
写法一:直接在href中 触发js函数,询问用户是否确认,如果确认,location.href 发起删除请求 -----
<ahref="javasript:confirmDel();" >...</a>写法二:<ahref="/delCart?id=xx"onclick="confirmDel(); "></a>在链接中添加 onclick事件 ,询问用户是否确认,如果用户取消,通过JS阻止href事件提交
阻止href默认事件 : e.preventDefault() ---- 必须支持事件 FF支持、IE不支持
IE阻止href默认事件
function confirmDel(e){
// 询问用户是否确认
var isConfirm = window.confirm("商品不要了吗?多好的商品啊!");
if(!isConfirm){
// 用户选择取消,阻止 a 标签 默认事件 href发生
if(e&
&e.preventDefault){
// e对象存在,preventDefault方法存在 ---- 火狐浏览器
e.preventDefault();
}else{
// 不支持e对象,或者没有preventDefault方法 ---- IE
window.event.returnValue = false;
}
}
}

修改购物车中商品购买数量 ---- JavaScript 控制购物数量修改
9订单生成

重点:
1) 向orders表插入订单信息后,同时需要向orderitem表插入 订单中每项数据
2) 多表插入 (数据完整性问题) --- 事务管理
3) 订单生成后 ,商品数量更新减少
10订单列表查询与取消
管理查询订单 --- 所有人订单信息
普通用户 ---- 只能查询自己的订单

在订单生成后,查看订单列表 、也可以通过index.jsp 进入订单查看页面

重点:查询订单时,同时查询订单项目信息
1) 查询订单基本信息时,查询下单用户昵称和用户名
在Order类中 添加 用户的 username 和 nickname字段
select orders.*,users.username,users.nickname from orders,users where orders.user_id = users.id;

2) 查询订单项信息时,查询商品的名称和单价
在OrderItem类中 添加商品的name和price 字段
select orderitem.*,products.name,products.price from orderitem,products where orderitem.produtct_id = products.id and orderitem.order_id = ?

订单取消 : 删除订单表信息时,同时删除订单项信息 (订单项信息依赖 订单信息 ,必须先删除订单项)
注意事项
1) 可以取消未支付的订单,如果订单已经支付,将无法取消
2) 管理员不能取消任何用户未支付订单,普通用户只能取消 自己的未支付的订单

取消订单进行事务管理 :删除订单项、删除订单、恢复商品数量
11订单在线支付
1) 网站进行支付,根据易宝支付接口请求规范,生成易宝需要数据,将数据提交到易宝指定网址 https://www.yeepay.com/app-merchant-proxy/node
* 在提交支付请求给易宝,需要将请求中数据,使用易宝提供密钥和算法进行加密,获得数字签名 hmac码 ,将hmac码发送给易宝
2) 易宝会连接银行,进行支付
3) 支付后,浏览器会以重定向方式访问 网站回调程序,易宝在收到银行转账后,会以Socket方式通知网站
* 在浏览器重定向通知后,提供给用户支付成功显示页面 (不要去修改订单状态)
* 在网站收到易宝点对点通知后,回复易宝success,修改订单状态

数字签名原理:将数据 使用密钥和算法加密后 获得数字签名hmac,将数据和数字签名hmac一起发送给易宝,
易宝采用同样密钥和算法对数据进行加密获得数字签名hmac,比较请求中数字签名hmac与加密后获得
数字签名hmac是否一致,如果一致 签名hmac有效 (数据没有被篡改 )

流程入口: 未支付订单可以进行支付,管理员不允许支付

在线支付
1) pay.jsp 银行选择页面
2) OnlinePayServlet 准备易宝支付参数
* 提供密钥和算法 商家编号 真实的 将PaymentUtil 复制 utils包 , 将 merchantInfo.properties 复制 src
* responseURL 支付成功后 回调地址 ,该地址会收到 浏览器重定向和服务器点对点两次通知 ,确保该地址 可以被易宝访问 (estore项目必须要配置缺省虚拟主机)
将OnlinePayServlet准备易宝参数,传递JSP 确认
3) confirm.jsp 通过form的隐藏域 提交参数给易宝网址 https://www.yeepay.com/app-merchant-proxy/node

4) CallbackServlet 回调程序
收到浏览器重定向和服务器点对点两个通知
浏览器重定向,显示支付成功,不要修改订单状态
服务器点对点,修改订单状态,回复success

12销售榜单导出功能
获得商品销售情况,需要查询orderitem表 ------- 统计已支付订单项内容

1) 榜单中存在哪些信息?(已支付订单中商品)
商品信息 products表
销售数量 orderitem表
订单支付情况 orders表

select * from products,orderitem,orders where products.id = orderitem.product_id and orderitem.order_id = orders.id ;

进行商品分组查询 group by

select products.* , sum(orderitem.buynum) totalSaleNum from products,orderitem,orders where products.id = orderitem.product_id
and orderitem.order_id = orders.id and orders.paystate = 1 group by products.id order by totalSaleNum desc;

2) 榜单文件是什么格式?
导出Excel 使用 POI类库

csv 格式文件 , 逗号分隔文件
1) 信息当中有,在两端加 双引号
2) 信息当中有" 在之前加双引号 转义

文件下载
设置Content-Type、Content-Disposition 头信息
文件流输出 (输出文件内容)

Excel 默认读取字符集gbk

4
练习使用技术:

Struts2 + hibernate5.x + spring4.x + mysql
数据库

1 crm

customer relational manager
,客户关系管理

2 crm
功能介绍


1
)登录功能

3
功能模块划分

第一个
客户管理模块


1
)新增客户功能


2
)客户列表功能


3
)修改客户功能


4
)删除客户功能


5
)分页列表功能

第二个
联系人管理模块


1
)新增联系人

-
选择所属客户

-
上传文件(
struts2
实现上传)


2
)联系人列表


3
)修改联系人


4
)级联删除(删除客户,把客户里面所有联系人也删除)

第三个
客户拜访管理模块


1
)新增客户拜访


2
)客户拜访列表

-
解决问题:
hibernate
多对多配置实现方式

第四个
综合查询模块


1
)客户条件查询

-
多条件组合查询

第五个
统计分析模块


1
)根据来源进行统计分析

-
使用
hibernateTemplate
调用底层
sql

-------------------easyUI 第六天中:

    //查询所有联系人返回json
    public String linkmanJson() throwsIOException {
List
<LinkMan> list =linkManService.listLinkMan();
Map
<String,Object> map = new HashMap<String,Object>();
map.put(
"total", list.size());
map.put(
"rows", list);//禁止循环调用 String json =JSON.toJSONString(map,SerializerFeature.DisableCircularReferenceDetect);

HttpServletResponse response
=ServletActionContext.getResponse();
response.setContentType(
"application/json;charset=utf-8");
response.getWriter().write(json);
returnNONE;
}

easyUI里面 查询深层属性 的特殊用法

<script type="text/javascript">$(function() {
$(
"#linkmanid").datagrid({
url:
"${pageContext.request.contextPath }/linkman_linkmanJson.action", //返回json数据action路径 columns:[[
{field:
'lkmName',title:'联系人名称',width:200},
{field:
'lkmGender',title:'联系人性别',width:150},
{field:
'lkmPhone',title:'联系人电话',width:100},//得不到值 {field:'customer.custName',title:'所属客户',width:100} {field:'customer',title:'所属客户',width:100,formatter:function(value,row,index){
if(row.customer){
return
row.customer.custName;
}

}}
]],
pagination:
true, //是否显示分页 singleSelect:true});

})
</script>

-----栅格系统  ------  div[class*="col"] 说div下 的class 包含 有col 的所有 都被选择出来

栅格系统一定要放入容器中

<div class=”container”></div>

<div class=”container-fluid”></div>

<style>div[class*="col"]{
border:1px solid blue;
}
</style> </head> <body> <divclass="container"style="background:gray"> <divclass="row"> <divclass="col-md-3 col-xs-6 col-sm-4">44</div> <divclass="col-md-3 col-xs-6 col-sm-4">44</div>


\ssh框架综合项目开发视频day01\视频\01-今天内容介绍.avi;
\ssh框架综合项目开发视频day01\视频\02-svn概述和体系结构.avi;
\ssh框架综合项目开发视频day01\视频\03-svn服务器安装和使用.avi;
\ssh框架综合项目开发视频day01\视频\04-svn客户端安装和使用.avi;
\ssh框架综合项目开发视频day01\视频\05-svn版本冲突问题.avi;
\ssh框架综合项目开发视频day01\视频\06-eclipse安装svn插件.avi;
\ssh框架综合项目开发视频day01\视频\07-eclipse的svn操作(添加项目到svn).avi;
\ssh框架综合项目开发视频day01\视频\08-eclipse的svn操作(下载项目到工作空间).avi;
\ssh框架综合项目开发视频day01\视频\09-eclipse的svn操作(协同开发).avi;
\ssh框架综合项目开发视频day01\视频\10-crm练习介绍.avi;
\ssh框架综合项目开发视频day01\视频\11-crm练习(ssh环境搭建一).avi;
\ssh框架综合项目开发视频day01\视频\12-crm练习(ssh环境搭建二).avi;
\ssh框架综合项目开发视频day01\视频\13-crm练习(ssh环境搭建三).avi;
\ssh框架综合项目开发视频day01\视频\14-crm练习(登录功能一).avi;
\ssh框架综合项目开发视频day01\视频\15-crm练习(登录功能二).avi;
\ssh框架综合项目开发视频day01\视频\16-crm练习(登录功能三).avi;
\ssh框架综合项目开发视频day01\视频\17-crm练习(客户环境搭建).avi;
\ssh框架综合项目开发视频day02\视频\01-svn官方版本介绍.avi;
\ssh框架综合项目开发视频day02\视频\02-客户管理-添加客户.avi;
\ssh框架综合项目开发视频day02\视频\03-客户管理-客户列表.avi;
\ssh框架综合项目开发视频day02\视频\04-客户管理-客户删除(一).avi;
\ssh框架综合项目开发视频day02\视频\05-客户管理-客户删除(二).avi;
\ssh框架综合项目开发视频day02\视频\06-客户管理-客户修改(到修改页面).avi;
\ssh框架综合项目开发视频day02\视频\07-客户管理-客户修改(修改操作).avi;
\ssh框架综合项目开发视频day02\视频\08-客户管理-客户分页(分页回顾).avi;
\ssh框架综合项目开发视频day02\视频\09-客户管理-客户分页(封装数据到pageBean).avi;
\ssh框架综合项目开发视频day02\视频\10-客户管理-客户分页(页面显示分页信息).avi;
\ssh框架综合项目开发视频day02\视频\11-客户管理-客户分页(查询记录数和分页的方法实现).avi;
\ssh框架综合项目开发视频day02\视频\12-客户管理-条件查询.avi;
\ssh框架综合项目开发视频day02\视频\13-客户管理-条件查询多种方式比较.avi;
\ssh框架综合项目开发视频day03\视频\01_客户和联系人一对多映射配置.avi;
\ssh框架综合项目开发视频day03\视频\02_新增联系人(到新增页面).avi;
\ssh框架综合项目开发视频day03\视频\03_新增联系人(action封装数据).avi;
\ssh框架综合项目开发视频day03\视频\04_新增联系人(添加数据到数据库).avi;
\ssh框架综合项目开发视频day03\视频\05_新增联系人(struts2文件上传获取上传信息).avi;
\ssh框架综合项目开发视频day03\视频\06_新增联系人(文件上传代码实现).avi;
\ssh框架综合项目开发视频day03\视频\07_新增联系人(struts2上传问题处理).avi;
\ssh框架综合项目开发视频day03\视频\08_联系人列表(no session问题).avi;
\ssh框架综合项目开发视频day03\视频\09_修改联系人(到修改页面).avi;
\ssh框架综合项目开发视频day03\视频\10_修改联系人(修改代码实现).avi;
\ssh框架综合项目开发视频day03\视频\11_inverse属性使用.avi;
\ssh框架综合项目开发视频day03\视频\12_客户和联系人级联删除(inverse属性深入).avi;
\ssh框架综合项目开发视频day04\视频\01-内容介绍和input错误处理.avi;
\ssh框架综合项目开发视频day04\视频\02-客户拜访需求介绍.avi;
\ssh框架综合项目开发视频day04\视频\03-用户和客户关系分析(拆分成两个一对多).avi;
\ssh框架综合项目开发视频day04\视频\04-用户和客户关系配置(拆分成两个一对多).avi;
\ssh框架综合项目开发视频day04\视频\05-用户和客户配置测试.avi;
\ssh框架综合项目开发视频day04\视频\06-新增客户拜访(到新增页面).avi;
\ssh框架综合项目开发视频day04\视频\07-新增客户拜访(添加数据到数据库).avi;
\ssh框架综合项目开发视频day04\视频\08-客户拜访列表.avi;
\ssh框架综合项目开发视频day04\视频\09-BaseDao抽取介绍.avi;
\ssh框架综合项目开发视频day04\视频\10-BaseDao抽取(一).avi;
\ssh框架综合项目开发视频day04\视频\11-BaseDao抽取(二).avi;
\ssh框架综合项目开发视频day04\视频\13-BaseDao抽取(三).avi;
\ssh框架综合项目开发视频day04\视频\14-BaseDao抽取(四).avi;
\ssh框架综合项目开发视频day04\视频\15-多条件组合查询(调用hibernate模板find方法).avi;
\ssh框架综合项目开发视频day04\视频\16-多条件组合查询(测试).avi;
\ssh框架综合项目开发视频day05\视频\01-今天内容介绍.avi;
\ssh框架综合项目开发视频day05\视频\02-客户信息查询(离线对象查询).avi;
\ssh框架综合项目开发视频day05\视频\03-联系人信息查询(hql实现查询).avi;
\ssh框架综合项目开发视频day05\视频\04-联系人信息查询(离线对象实现查询).avi;
\ssh框架综合项目开发视频day05\视频\05-数据字典表介绍和分析.avi;
\ssh框架综合项目开发视频day05\视频\06-数据字典表和客户表关系配置.avi;
\ssh框架综合项目开发视频day05\视频\07-改造客户添加功能(添加数据字典表).avi;
\ssh框架综合项目开发视频day05\视频\08-统计分析功能(统计sql语句编写一).avi;
\ssh框架综合项目开发视频day05\视频\09-统计分析功能(统计sql语句编写二).avi;
\ssh框架综合项目开发视频day05\视频\10-统计分析功能(根据客户来源统计).avi;
\ssh框架综合项目开发视频day05\视频\11-统计分析功能(根据客户级别统计).avi;
\ssh框架综合项目开发视频day05\视频\12-crm知识点总结.avi;
\ssh框架综合项目开发视频day06\视频\01-jquery easyui概述.avi;
\ssh框架综合项目开发视频day06\视频\02-json数据格式.avi;
\ssh框架综合项目开发视频day06\视频\03-jquery ajax操作.avi;
\ssh框架综合项目开发视频day06\视频\04-jquery ajax效果演示.avi;
\ssh框架综合项目开发视频day06\视频\05-easyui布局.avi;
\ssh框架综合项目开发视频day06\视频\06-easyui菜单.avi;
\ssh框架综合项目开发视频day06\视频\07-easyui的datagrid执行过程.avi;
\ssh框架综合项目开发视频day06\视频\08-easyui的datagrid基本属性介绍.avi;
\ssh框架综合项目开发视频day06\视频\09-datagrid操作(action返回数据和fastjson基本使用).avi;
\ssh框架综合项目开发视频day06\视频\10-datagrid实现客户列表功能.avi;
\ssh框架综合项目开发视频day06\视频\11-datagrid实现客户列表功能(让set集合不进行转换).avi;
\ssh框架综合项目开发视频day06\视频\12-datagrid分页实现(一).avi;
\ssh框架综合项目开发视频day06\视频\13-datagrid分页实现(二).avi;
\ssh框架综合项目开发视频day06\视频\14-datagrid实现联系人列表(禁止循环调用).avi;
\ssh框架综合项目开发视频day06\视频\15-datagrid实现联系人列表(效果演示).avi;

课程视频目录

\day44_项目NO.1\0406\视频\0406_01_项目介绍&SSH加jar.wmv;
\day44_项目NO.1\0406\视频\0406_02_SSH框架整合-struts&spring.wmv;
\day44_项目NO.1\0406\视频\0406_03_SSH框架整合-hibernate&事务控制.wmv;
\day44_项目NO.1\0406\视频\0406_04_资源文件分类&log4j&抽取BaseAction.wmv;
\day44_项目NO.1\0406\视频\0406_05_用户管理需求分析&CRUD方法.wmv;
\day44_项目NO.1\0406\视频\0406_06_用户管理批量删除&日期组件.wmv;
\day45_项目NO.2\0407_01_回顾&头像上传.wmv;
\day45_项目NO.2\0407_02_POI基础.wmv;
\day45_项目NO.2\0407_03_POI样式.wmv;
\day45_项目NO.2\0407_04_导出用户列表.wmv;
\day45_项目NO.2\0407_05_导入用户列表.wmv;
\day46_项目NO.3\0409\0409_01_回顾&用户帐号唯一性校验1.wmv;
\day46_项目NO.3\0409\0409_02_全局异常映射.wmv;
\day46_项目NO.3\0409\0409_03_返回结果类型.wmv;
\day46_项目NO.3\0409\0409_04_角色与权限的关系.wmv;
\day46_项目NO.3\0409\0409_05_角色管理.wmv;
\day47_项目NO.4\0410\0410_01_回顾&用户与角色关系.wmv;
\day47_项目NO.4\0410\0410_02_改造用户管理中角色.wmv;
\day47_项目NO.4\0410\0410_03_系统、子系统首页&登录1.wmv;
\day47_项目NO.4\0410\0410_04_登录过滤器.wmv;
\day47_项目NO.4\0410\0410_05_权限鉴定&解决登录嵌套.wmv;
\day48_项目NO.5\0412\0412_01_信息发布管理需求分析&CRUD.wmv;
\day48_项目NO.5\0412\0412_02_ueditor.wmv;
\day48_项目NO.5\0412\0412_03_异步信息发布.wmv;
\day48_项目NO.5\0412\0412_04_power designer概念、物理模型.wmv;
\day48_项目NO.5\0412\0412_05_逆向工程&抽取BaseService.wmv;
\day49_项目NO.6\视频\0413_01_回顾&条件查询分析.wmv;
\day49_项目NO.6\视频\0413_02_查询条件回显.wmv;
\day49_项目NO.6\视频\0413_03_分页对象分析.wmv;
\day49_项目NO.6\视频\0413_04_分页查询.wmv;
\day49_项目NO.6\视频\0413_05_分页对象应用&抽取pageNavigator.wmv;
\day50_项目NO.7\UML&SVN\0415_01_软件工程上.wmv;
\day50_项目NO.7\UML&SVN\0415_02_软件工程下.wmv;
\day50_项目NO.7\UML&SVN\0415_03_uml用例图.wmv;
\day50_项目NO.7\UML&SVN\0415_04_uml类图.wmv;
\day50_项目NO.7\UML&SVN\0415_05_uml时序图.wmv;
\day50_项目NO.7\UML&SVN\0415_06_svn启动、注册服务器端.wmv;
\day50_项目NO.7\UML&SVN\0415_07_svn使用.wmv;
\day51_项目NO.8\0416\0416_01_回顾&投诉受理需求分析&CDM&PDM.wmv;
\day51_项目NO.8\0416\0416_02_投诉受理查询.wmv;
\day51_项目NO.8\0416\0416_03_投诉受理保存受理信息.wmv;
\day51_项目NO.8\0416\0416_04_我要投诉1.wmv;
\day51_项目NO.8\0416\0416_05_我要投诉-根据部门查询用户.wmv;
\day52_项目NO.9\视频\0417_01_回顾&保存我要投诉.wmv;
\day52_项目NO.9\视频\0417_02_quartz&SimpleTrigger.wmv;
\day52_项目NO.9\视频\0417_03_quartz&CronTrigger.wmv;
\day52_项目NO.9\视频\0417_04_自动受理.wmv;
\day53_项目NO.10\视频\0419_01_回顾&fusioncharts介绍.wmv;
\day53_项目NO.10\视频\0419_02_投诉统计前端内容分析.wmv;
\day53_项目NO.10\视频\0419_03_投诉统计后端分析.wmv;
\day53_项目NO.10\视频\0419_04_投诉统计.wmv;
\day53_项目NO.10\视频\0419_05_完善首页数据&处理懒加载.wmv;
\day54_项目NO.11\0420_01_总结.wmv;
\day55_面试技巧\day55国税简历\0423\0423_01_项目简历编写上(1).wmv;
\day55_面试技巧\day55国税简历\0423\0423_01_项目简历编写上.wmv;
\day55_面试技巧\day55国税简历\0423\0423_02_项目简历编写下(1).wmv;
\day55_面试技巧\day55国税简历\0423\0423_02_项目简历编写下.wmv;
\day55_面试技巧\day55国税简历\0423\0423_03_项目1面试题上(1).wmv;
\day55_面试技巧\day55国税简历\0423\0423_03_项目1面试题上.wmv;
\day55_面试技巧\day55国税简历\0423\0423_04_项目1面试题下(1).wmv;
\day55_面试技巧\day55国税简历\0423\0423_04_项目1面试题下.wmv;
\day55_面试技巧\day55国税简历\0423\0423_05_最后的礼物idea(1).wmv;
\day55_面试技巧\day55国税简历\0423\0423_05_最后的礼物idea.wmv;

本课程是2015年2月份的,就是14年底的。

课程第一天的代码-添加 jsp-api.jar   servlet-api.jar就可以跑起来,环境 JDK1.7 和tomcat8,

SSH网上商城\SSH\网上商城day01\视频\01-SSH网上商城:需求分析:用户模块分析.avi;


\网上商城day01\视频\02-SSH网上商城:需求分析:后台需求分析.avi;
\网上商城day01\视频\03-SSH网上商城:表关系分析.avi;
\网上商城day01\视频\04-SSH网上商城:SSH框架整合的环境搭建.avi;
\网上商城day01\视频\05-SSH网上商城:引入静态页面.avi;
\网上商城day01\视频\06-SSH网上商城:首页页面转向.avi;
\网上商城day01\视频\07-SSH网上商城:用户模块:注册页面跳转.avi;
\网上商城day01\视频\08-SSH网上商城:用户模块:注册页面JS前台校验.avi;
\网上商城day01\视频\09-SSH网上商城:用户模块:用户名是否存在校验.avi;
\网上商城day01\视频\10-SSH网上商城:用户模块:后台数据校验.avi;
\网上商城day01\视频\11-SSH网上商城:用户模块:注册将数据存入到数据库.avi;
\网上商城day01\视频\12-SSH网上商城:用户模块:注册邮件概述及发送过程.avi;
\网上商城day01\视频\13-SSH网上商城:用户模块:邮件发送的服务器安装及客户端软件安装.avi;
\网上商城day01\视频\14-SSH网上商城:用户模块:邮件发送.avi;
\网上商城day01\视频\15-SSH网上商城:用户模块:激活用户.avi;
\网上商城day01\视频\16-SSH网上商城:用户模块:跳转到登录页面.avi;
\网上商城day01\视频\17-SSH网上商城:用户模块:用户登录功能.avi;
\网上商城day01\视频\18-SSH网上商城:用户模块:退出登录.avi;
\网上商城day01\视频\19-SSH网上商城:用户模块:验证码程序.avi;
\网上商城day02\视频\01-SSH网上商城:首页一级分类的显示.avi;
\网上商城day02\视频\02-SSH网上商城:首页热门商品显示.avi;
\网上商城day02\视频\03-SSH网上商城:首页最新商品显示.avi;
\网上商城day02\视频\04-SSH网上商城:首页点击商品显示商品详情.avi;
\网上商城day02\视频\05-SSH网上商城:首页查询一级分类商品(左侧分类显示).avi;
\网上商城day02\视频\06-SSH网上商城:首页查询一级分类商品(分类显示商品一).avi;
\网上商城day02\视频\07-SSH网上商城:首页查询一级分类商品(分类显示商品二).avi;
\网上商城day02\视频\08-SSH网上商城:分类显示商品的页面跳转到商品详情页面.avi;
\网上商城day02\视频\09-SSH网上商城:二级分类显示商品带分页.avi;
\网上商城day02\视频\10-SSH网上商城:购物模块的实体的封装.avi;
\网上商城day02\视频\11-SSH网上商城:购物模块跳转到购物车页面.avi;
\网上商城day02\视频\12-SSH网上商城:购物模块添加到购物车.avi;
\网上商城day02\视频\13-SSH网上商城:购物模块清空购物车.avi;
\网上商城day02\视频\14-SSH网上商城:购物模块移除购物项.avi;
\网上商城day02\视频\15-SSH网上商城:购物模块我的购物车.avi;
\网上商城day02\视频\16-SSH网上商城:网站首页配置成index.jsp.avi;
\网上商城day03\视频\01-SSH网上商城:订单模块表的创建.avi;
\网上商城day03\视频\02-SSH网上商城:订单模块类创建及配置.avi;
\网上商城day03\视频\03-SSH网上商城:订单模块跳转到订单页面.avi;
\网上商城day03\视频\04-SSH网上商城:订单模块保存订单到数据库.avi;
\网上商城day03\视频\05-SSH网上商城:订单模块订单数据的显示.avi;
\网上商城day03\视频\06-SSH网上商城:订单模块我的订单查询.avi;
\网上商城day03\视频\07-SSH网上商城:订单模块根据订单编号查询订单.avi;
\网上商城day03\视频\08-SSH网上商城:订单模块在线支付方式分析.avi;
\网上商城day03\视频\09-SSH网上商城:订单模块在线支付流程分析.avi;
\网上商城day03\视频\10-SSH网上商城:订单模块在线支付跳转到网银.avi;
\网上商城day03\视频\11-SSH网上商城:订单模块在线支付成功后跳转.avi;
\网上商城day03\视频\12-SSH网上商城:后台页面的布局及dtree的使用.avi;
\网上商城day03\视频\13-SSH网上商城:后台管理员登录准备工作.avi;
\网上商城day03\视频\14-SSH网上商城:后台管理员登录功能代码实现.avi;
\网上商城day03\视频\15-SSH网上商城:后台一级分类管理查询所有.avi;
\网上商城day03\视频\16-SSH网上商城:后台一级分类管理添加一级分类.avi;
\网上商城day03\视频\17-SSH网上商城:后台一级分类管理删除一级分类.avi;
\网上商城day04\视频\01-SSH网上商城:后台一级分类管理修改一级分类.avi;
\网上商城day04\视频\02-SSH网上商城:后台二级分类管理查询二级分类带分页.avi;
\网上商城day04\视频\03-SSH网上商城:后台二级分类管理添加二级分类.avi;
\网上商城day04\视频\04-SSH网上商城:后台二级分类管理删除二级分类.avi;
\网上商城day04\视频\05-SSH网上商城:后台二级分类管理修改二级分类.avi;
\网上商城day04\视频\06-SSH网上商城:后台商品管理查询商品带分页.avi;
\网上商城day04\视频\07-SSH网上商城:后台商品管理跳转到添加页面.avi;
\网上商城day04\视频\08-SSH网上商城:后台商品管理添加商品(上传图片).avi;
\网上商城day04\视频\09-SSH网上商城:后台商品管理删除商品.avi;
\网上商城day04\视频\10-SSH网上商城:后台商品管理编辑页面显示.avi;
\网上商城day04\视频\11-SSH网上商城:后台商品管理修改商品操作.avi;
\网上商城day04\视频\12-SSH网上商城:后台订单管理带分页查询订单.avi;
\网上商城day04\视频\13-SSH网上商城:后台订单管理异步加载订单项的操作.avi;
\网上商城day04\视频\14-SSH网上商城:后台订单管理修改订单状态.avi;
\网上商城day04\视频\15-SSH网上商城:前台订单修改订单状态.avi;
\网上商城day04\视频\16-SSH网上商城:后台权限拦截器编写.avi;