estore简版商城问题总结

来源:互联网 发布:php erp 开源 编辑:程序博客网 时间:2024/06/06 00:12

estore简版商城问题总结

1、order表创建失败   

create table order(

  id varchar(50)primary key,

  money double,

  ordertimedatetime,

  receiveinfovarchar(100),

  paystate int,

  user_idvarchar(50),

  foreignkey(user_id) references user(id)

);

以上就是建表语句

 

问题:

Error Code: 1064. You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the rightsyntax to use near 'order (   idvarchar(50) primary key,   moneydouble,   ordertime datetime,   re' at line 1

 

解决:

ordermysql的关键字,不能用order作为表名

所以将order表明更改为orders,建表成功

 

2、制作图片缩略图工具(PicUtils)导入错误

问题:

Accessrestriction: The type JPEGImageEncoder is not accessible due to restriction onrequired library

D:\myeclipse2014\binary\com.sun.java.jdk7.win32.x86_64_1.7.0.u45\jre\lib\rt.jar

解决:

解决方法:

Project ->Properties -> libraries,

先remove掉JRE System Library,然后再Add Library重新加入。

参考博文:http://blog.csdn.net/free4294/article/details/7017442

 

3以顶级域名的方式发布工程失败

问题:

失败:首页不是我的默认的index.jsp页面


解决一:失败

分析原因:可能是当初我安装了一个iis6软件有关


卸载后,看看能不能解决?

发现,失败

 

解决二:仍旧失败

打开控制面板 〉〉找到程序和功能>> 点开启用或关闭 Windows功能窗口,找到Internet信息服务,将Internet信息服务前面的加号点开,找到web管理工具,里面有IIS管理服务、IIS管理脚本和工具、IIS管理控制台。直接把将Internet信息服务关掉就行。

关闭后:


访问网页:仍旧有问题

 

当tomcat服务器设置回8080端口是,可以访问部署到tomcat内的web应用;

而为80端口时,出现上述的问题:HTTP Error 404. The requested resource is not found.

 

解决三:成功

80端口被占用

分析:80端口被占用

解决80端口被占用的问题?



参考文章行:最全最详细关于解决本地搭接80端口被占用问题

网址:

https://jingyan.baidu.com/article/c843ea0ba10c0d77921e4a61.html


80端口被占用解决,成功显示页面

 

总结:80端口被占用导致

问题二:

第二天,打开电脑,运行程序,发现80端口仍旧被占用。。。

看看昨天的修改,发现那个修改确实是改了,但是端口仍然被占用。。。

可能没有真正解决问题。。。

解决四:

可能是sql server占用80端口导致?

于是停止该报表服务。。。

发现问题解决。。

 

参考文章:解决System进程占用80端口

网址:http://blog.csdn.net/u010191243/article/details/50756487

第三天打开,仍旧如此,而解决办法仍旧是:ql server占用80端口导致,于是停止该报表服务。。。

 

4、jsp中5秒后跳转到另外一个页面

1.在head头部里写meta标签

<head>

        <meta http-equiv="refresh"content="0;URL=http://xxx.xxx.xxx/">

    </head>

content=0 ;   <!--设置本页面停留时间,单位为秒-->

url=http://www.baidu.com/    <!--将要跳转的页面路径-->

 

2.用javascript实现

  <html>

      <script language=javascript>

         setTimeout('window.location="http://panliu888.myetang.com"',5000)

      </script>

  </html>

location为指定跳转页面的路径,5000为时间,单位毫秒!

 

参考博文:http://blog.csdn.net/ling_du/article/details/51713391

 

5、自动登录(cookie实现+过滤器)

1.对于一些资源进行限制,某些情况,不用自动登录

2.注销不掉的问题:需要在删除session的同时,删除cookie

3.没有勾选自动登录的时候,清空cookie(保证安全)

4.信息被篡改,清空cookie(为了更加安全)

 

6、md5加密

是单向,我们只能进行加密,而不能进行解密

本estore商城,只是对用户的密码进行了加密操作。

鉴于密码的重要性,因此,我们必须要知道,这些加密前的数据到底是什么,否则,一旦忘记,就无法进行登陆了。

就是注册和登录前,那些密码数据利用md5进行加密,从而保存进数据库中

 

7、显示图片失败

失败原因:

1.写代码时,保存的图片存放路径是硬盘下的绝对路径,而不是web应用在images目录下的相对路径

2.因为当前web应用是以定义域名方式发布工程的,所以书写路径的时候要注意,因为再去访问web应用中的资源文件的时候,都不要再加主机名了,否则会出现访问不到的情况

 

//D:/myeclipse_workspace/estore/images/1/2+  "/"  +xxx.jpg

product.setImageurl(path+"/"+uuidName);//存放图片位置   失败

//应该是   /images/1/2 +  "/" +   xxx.jpg

 

 

8、权限控制,一些路径不会写

读取配置文件

配置文件在src目录下, 所以可以 使用 类加载器去读 ,还可以 使用SerlvetContext去读 ???

不熟悉???【已解决】


9、一个异常:

现象:

网页内容重复了,而且还报错。。。

异常:

十一月 17, 2017 4:42:21下午org.apache.catalina.core.StandardWrapperValveinvoke

严重: Servlet.service() for servlet [default] in context with path [] threw exception

java.lang.IllegalStateException: Cannot call sendError() after the responsehas been committed

尝试解决一:(缩小问题范围)

把写好的过滤器,自动登录过滤器和权限控制过滤器,在web.xml文件中注释掉,发现问题没了,

因此问题,可能在自动登录过滤器和权限控制过滤器中

再一次缩小范围,发现自动登录过滤器没有问题,

因此,问题应该处在权限控制过滤器中.

 

发现自己确实有一个地方出错,但是与这个问题毫无关系,所以最后就莫名奇妙的解决了。

但是也不确定,是不是,整的解决了

 

改正前:

// 读取配置文件admin.txt获取管理员的权限列表

StringadminPath = PrivilegeFilter.class.getClassLoader()

.getResource("user.txt").getFile();//首先,此处文件写为了user.txt是错了,现在改正了

 

改正后:

// 读取配置文件admin.txt获取管理员的权限列表

StringadminPath = PrivilegeFilter.class.getClassLoader()

.getResource("admin.txt").getFile();//首先,此处文件写为了user.txt是错了,现在改正了

 

发现并没有解决

尝试解决二:(自动登录过滤器)

看看异常中,还提到了自动登录过滤器,分析下代码,可能下面的那段代码是多余的,所以尝试删除那段代码看看

 

删除后


仍旧失败

 

解决三:(删除多余  chain.doFilter(req,resp))

过滤器里写了两次chain.Filter(req,resp)


最终成功了

10、一个异常

异常:

十一月 18, 2017 10:23:01 上午 org.apache.catalina.session.StandardSessionwriteObject

警告: Cannot serialize session attribute cart for session4ACD6D46CC5845CE7552A3DF9E10E6CF

java.io.NotSerializableException: com.zhku.jsj144.domain.Product

 

解决方法

参考博文:Cannot serialize session attribute XXX for .的解决方法

网址:http://blog.csdn.net/xuanjiewu/article/details/48938849

 

11、实时改变一个输入文本框的值?


通过改变文本框的数字:比如,1改为23,然后购物车的session中的cart也做了更改,如何实现?

解决:

主要是,怎样获得当前文本框的值的问题:this.value(文本框当前值)

<input type="text" name="count"value="${cartitem.value}" size="5"onblur="change('${cartitem.key.id} ',this.value)">

12、购买逻辑

购物车  à确认订单(填写收货人信息)à生成订单  à支付

13、生成订单

web层与service层的功能,分别做什么有点混淆?

web层,负责封装数据

service,负责处理一些业务逻辑,并开启事务管理(ThreadLocal本地线程类的使用,实现解耦合【因为Connection不应该出现在service层】)

而自己对ThreadLocal的实现不是怎么熟悉?

14、查看订单

多表查询?

多表查询后,同时查询出来的几个表的数据如何处理?如何分别进行获取?

解决1

MapHandler()和MapListHandler()的使用可以解决这个问题

CommonUtil.toBean(map,xxx.class);  封装到某个对象中

解决2

在现有的javabean中添加一些字段,就可以减少查询的难度

15、总结:

1、知识点不清晰,导致不懂

2、遇到问题时,没有认真去分析和思考,而是盲目的粘贴问题去百度,导致没有对症下药,东忙一阵子,西忙活一阵子,浪费很多时间也没有解决问题。

  因此,个人认为,遇到问题,首先要分析原因所在,利用排除法去推理问题出现的原因,才能比较快的找到问题的答案

3、一些业务逻辑不懂,有点不知如何下手。

因此,弄懂业务逻辑是关键

原创粉丝点击