在SSH网上商城项目中,遇到了很多错误,在此做出总结:
(1) Access denied for user 'root'@'localhost' (usingpassword: YES)
错误原因:安装mysql过程中配置错误,未给localhost用户授权
新建一个localhost root用户,然后授权给他
createuser 'root'@'localhost' identified by '你的密码';
grantall privileges on *.* to root@'localhost';即可。
tomcat加 载不起来,在网上查资料,在struts.xml的package标签中加入extends="struts-default"属性,明显已经有了这个属性配置,后来发现是路径问题,之前类名中多了一个”s”,将类名改掉之后在路径忘了进行修改。
(3)Can’tfind class [cn.itcast.shop.user.action] for bean with name ’userAction’ definedin class path resource [applicationContext.xml]
这个错误经常遇到,通过给出的提示,错误的原因一般有两点,而且一找一个准,(1)在action类中return 的字符串是否匹配,比如return"loginSuccess";
是否和struts.xml中的<result>里的name对应;(2)是否在struts中的jsp路径正确,都会爆出这个问题来。
(4)
2016-5-8 19:29:14 org.apache.catalina.startup.CatalinastopServer
严重: Catalina.stop:
java.net.ConnectException:Connection refused: connect
atjava.net.PlainSocketImpl.socketConnect(Native Method)
atjava.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
atjava.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
atjava.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
atjava.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
atjava.net.Socket.<init>(Socket.java:366)
atjava.net.Socket.<init>(Socket.java:180)
atorg.apache.catalina.startup.Catalina.stopServer(Catalina.java:422)
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
atjava.lang.reflect.Method.invoke(Method.java:597)
atorg.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:338)
atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:416)
意思是链接数据库没有成功,这个问题的原因也是五花八门,我所经历的有两点,一次是因为TomCat服务根本就没有开启,是指这里根本就没有TomCat 6.x
另外一次是连接192.168.21.**通过远程调用自己的服务器发现没有插网线,也是够够的了,爆出了这个问题。其实解决这个问题很简单,在没有网线插入的情况下将JDBC链接修改为local就可以了。
(5)严重: Errorinitializing endpoint,java.net.SocketException:Unrecognized Windows Sockets error: 0: JVM_Bind
错误原因:TomCat端口被占用。
解决办法:修改Tomcat的使用端口,具体做法——找到目录...\Tomcat 5.5\conf,在conf目录下有“server.xml”文件,用记事本打开此文件,查找(打开文件后Ctrl+F)文件中的所有“8080”,并改为其他没有被占用的端口值(如:8088、8081等)。
(6)严重:Exception sending context initialized event to listener instance of classorg.springframework.web.context.ContextLoaderListener
错误解决:该错误是在spring注入时候引发的。
<bean name="userService" class="com.ssh.service.impl.UserService" >
<property name="userDAO">
<ref bean="UserDAO"/>
</property>
</bean>
(7)/WEB-INF/jsp/index.jsp(142,75)According to TLD, tag s:property must be empt
这个错误的特点在于 tag s:property must be empt ,这个问题我遇到过最少三次了,原因全部在于写 JSP 路径的时候丢失了“ / ”。
(8)IOException while loadingpersisted sessions: java.io.WriteAbortedException: writing aborted;java.io.NotSerializableException: cn.itcast.shop.category.vo.Category
java.io.WriteAbortedException:writing aborted; java.io.NotSerializableException:cn.itcast.shop.category.vo.Category
解决办法:这个IOException也是个老问题了,在我之前的博客中写过Session持久化的问题,是因为操作过程中点击了这里的stop的问题 :
Session序列化异常介绍:
1、超时
2、服务器非正常关闭(tomcat 下的 session序列化文件 -- 只要单击Stop就会将Session保存到硬盘,下次启动时再反序列化)
办法:每次单击Console中的红方块,不会被序列化,另一个办法就是在Vo的java类中,implementSerializable接口
(9)Bean property ‘productService’ isnot writable or has in invalid setter method.
我们都知道在Action中的变量基本上都会设置一个set方法,这就是一个错误原因,有时候跟着视频敲的快了就会错误,还有一次我遇到这个问题是因为:
public Product getModel() {
return product;
}
我开始写的返回值是NULL,So,也会爆出这个错误,不解。
(10)Association references unmapped class()
错误在applicationContext.xml中,没有映射到类,
解决思路:
(1)查看映射是否写错,包括属性和路径
(2)类名是否写错了
(3)清除tomcat缓存,把tomcat文件下“work”文件夹中的内容删除即可。
(11)No Scope registered for scope'peoperty'
老师一直强调,在application.xml中配置<bean>属性的时候一定要加上scope,那么把scope="peoperty"写错了,或者是没有写就是上面这个错。
(12)配置过程中,从页面到Action跳转没有问题
问题在于,超链接没有问题:
而是:注入过程中:
将orderService中的“s”写成了小写,导致
这个Set方法和application中的:
这里面的:<property>中的orderService不一致,从而页面跳转不过去
(13)提交订单时候,说不认识实体Order.
两个错误:
1 、在 application 中配置错误:
所示划线处被窝写到了注释里。
2、该关系的主键值被窝写成“uid”---Order.java
(14)日期类型插不进去
虽然引用了关于Date的jar包,还得将Date转化为String之后才能够插入进去,这个问题我没有解决,在写这篇文章的时候老贾告诉我把jar包更新就oK.有待尝试。
(15) 在order.jsp页面当中的一个错误
错误在于将value和前面的单词链接在一起:
我写的是type=”text”value=”s:propertyvalue=”model.user.phone/>”
(16) id to load is required forloading
问题在于从jsp页面向action传值时候oid为空,导致action方法调用Service方法时候参数为null值,报错
(17) 异常ognl.OgnlException: target is null for setProperty(null,"y", [Ljava.lang.Stri
提交订单过程中,前台页面:
收货地址:<input name="addr" type="text" value="<s:property value="model.user.addr"/>" style="width:350px" />
<br />
收货人 :<input name="name" type="text" value="<s:property value="model.user.name"/>" style="width:150px" />
<br />
联系方式:<input name="phone" type="text" value="<s:property value="model.user.phone"/>" style="width:150px" />
这个页面里面,addr的值不是user.addr。 name的值不是username
注意在Struts.xml中的struts.devMode= true
struts.xml文件里面有这么一个"struts.devMode"。当设为true时,html表单数据中有和action属性匹配不上的参数名时就会提示这样的信息。
在开发过程中将其设置为true有助于我们发现一些不容易被发现的错误。
(18)
错误原因:后台登录过程中,Struts的重定向配置错误<resultname="loginSuccess" type="redirect">/admin/home.jsp</result>
因为,redirectAction的写法不适合这里,要知道重定向的写法有两种,一种是type=”redirect”,另外一种是type=”redirectAction”.
(19)
错误原因在于在jsp页面中提交整个form表单的时候,有一个<input>标签没有提交过去导致的,我的办法,把该标签删除掉即可。当然在action中为这个标签写一个set方法也是ok的。
( 20 )
如图所示,在商品管理部分,从left.jsp中跳入,在action中的方法名字是:findAll。而在left.jsp中调用的方法名则是:(findAllByPage)
于是,把这个名称统一即可。
至此,将这个系统中我自己解决了的一些问题进行总结。