总结SSH阶段常见异常之四struts2续

总结SSH阶段常见异常之四struts2续(10条)

异常一

异常描述: 空值异常:valueStack.set(“list”,list);放到值栈中的对象在页面中取不到
异常信息: 无
异常原因: 页面中获取值栈对象的语句不规范
解决方案: 规范为

异常二

异常描述: 方法调用输出异常:使用ognl获取随机数的时候,控制台可以打印出结果,但是有报错。
异常信息: ognl.ExpressionSyntaxException: Malformed OGNL expression: @random() [ognl.ParseException: Encountered ” “(” “( “” at line 1, column 8.
Was expecting one of:
“.” …
“@” …
]
at ognl.Ognl.parseExpression(Ognl.java:112)
at ognl.Ognl.getValue(Ognl.java:596)
at ognl.Ognl.getValue(Ognl.java:566)
at cn.itcast.web.test.OgnlDemo.Demo1(OgnlDemo.java:20)
异常原因: 支持类静态的方法调用和值访问,表达式的格式:
@[类全名(包括包路径)]@[方法名 | 值名]
解决方案: 在使用的random()前加上包名@java.lang.Math@random()

异常三

异常描述: Web工程启动异常:原因:父包strutsdefault未定义-[未知路径]
异常信息: Caused by: Parent package is not defined: strutsdefault - [unknown location]
异常原因:
在struts.xml配置文件中标签中的extends属性值在通常情况下写的都是struts2-core.jar包中的struts-default.xml配置文件中的默认的name属性值
解决方案: 将标签中的extends属性值strutsdefault改为struts-default

异常四

异常描述: 严重:找不到对应/struts2/userAction.action的action或result
在上下文路径[/struts2]的命名空间[/]中没有找到与action名称[userAction]相关的Action映射
异常信息: 严重: Could not find action or result
/struts2/userAction.action
There is no Action mapped for namespace [/] and action name [userAction] associated with context path [/struts2]. - [unknown location]
异常原因: 经检查struts.xml配置文件,发现在中配置了命名空间”/user”,因此如果在浏览器地址栏想要访问这个action时,必须在项目名称后面加上”/命名空间名”,然后才是action名称
解决方案: 1.在浏览器地址栏上的项目路径后面加上命名空间名
2.将struts.xml中的namespace属性值设置为”/”

异常五

异常描述: Hibernate系统异常:获取活动的事务刷新模式失败
在hibernate.cfg.xml中配置了属性hibernate.current_session_context_class值为thread,访问service方法报错
异常信息: org.springframework.orm.hibernate5.HibernateSystemException:
getFlushMode is not valid without active transaction
异常原因: 在Spring整合Hibernate的会话工厂LocalSessionFactoryBean中有一个方法buildSessionFactory(),在这个方法当中Spring将hibernate的属性hibernate.current_session_context_class转换为了SpringSessionContext类的全路径
解决方案: 我们如果想要使用getCurrentSession(),那么我们可以给sessionFactory配置属性org.springframework.orm.hibernate5.SpringSessionContext,值与hibernate当中的配置值相同

异常六

异常描述: Http状态500 – 在只读模式下不允许进行写操作(刷新模式.手动):把你的会话或事务定义为flushmode.commit/auto去掉“只读”标记。
异常信息: HTTP Status 500 - Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove ‘readOnly’ marker from transaction definition.
异常原因: 在service层中没有配置事务
解决方案: 1.给service层中的方法配置通知、传播行为、切入点、切面
2.配置注解事务,并在service类上配置@Transcation注解

异常七

异常描述: 捕捉异常:找不到struts-mydefault.xml配置文件。
异常信息: Caught Exception while registering Interceptor class cn.itcast.web.interceptor.CheckLoginInterceptor - interceptor - file:/D:/apache-tomcat-7.0.52/wtpwebapps/day39_struts_AnLi/WEB-INF/classes/struts-mydefault.xml:10:91
异常原因: Struts-default.xml配置文件有struts-system.xml,struts-system.xml里配置的是拦截器,但struts-system.xml配置文件放在src/web.action/目录下。
解决方案: 把src/web.action目录下的struts-system.xml放到src目录下。

异常八

异常描述: 查询语法异常:from cn.itcast.domain.User where user_name=?,user_password=?语句中发现未期待的字符:逗号
异常信息: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: , near line 1, column 46 [ from cn.itcast.domain.User where user_name=?,user_password=?]
org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74)
org.hibernate.hql.internal.ast.ErrorCounter.throwQueryException(ErrorCounter.java:91)
异常原因: HQL语法错误,在where条件后,多个条件要使用and或者or进行分割
解决方案: 将HQL语句中的逗号删除,使用and连接符进行连接

异常九

异常描述: BeanCreationException:bean创建异常,在accountDaoImpl类的JdbcTemplate属性
异常信息: Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.jdbc.core.JdbcTemplate cn.itcast.dao.impl.AccountDaoImpl.jdbcTemplate;
异常原因: 在accountDaoImpl类中注入jdbcTemplate属性但在配置文件里没有配置jdbcTemplate类。
解决方案: 在配置文件里配置JdbcTemplate类

异常十

异常描述: 非法数据异常:过滤器映射指定了一个位置的名称为Struts2的过滤器
异常信息: Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name Struts2
异常原因: 经检查struts.xml配置文件,发现在标签对中定义的为struts2,而标签对的却为Struts2,大小写不一样导致在根据过滤器映射中的过滤器名称来找过滤器时找不到报这个错误
解决方案: 将标签对中的中的值与标签对中对应一致

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值