学习马士兵的struts2/hibernate/spring中遇到的问题及其解决方法
STRUTS2
1. 写好最简单的hello world项目后,无法通过浏览器访问到hello.jsp页面,提示没有资源。
学习structs2的时间,已经更新到了2.3.16了,structs中的很多jar包都已和视频中的不一样了。试过只包含部分基础的jar包,结果发现无法访问hello.jsp页面,提示没有资源。后来,查看tomcat的日志时,发现启动这个项目有问题,提示有错误。后来将struct2中的struts-2.3.16\apps\struts2-blank\WEB-INF\lib中所有jar包都加入了项目中,项目就可以成功启动了。
后来自己建项目的时候,发现使用action进行页面处理的情况下,服务器端报404 resource not avaible的错误,而直接访问jsp页面没有错误。后来发现,是自己忘了配置web.xml中的struts2相关的filter所致。除此之外,struts.xml文件放错位置,会提示说找不到对应的action(虽然明明写有那个action)。struts.xml文件应该放在src文件夹下。
另外,如果直接复制其他项目来新建一个自己的项目,一定要记得修改web选项。右键单击自己的项目,选择properties->MyEclipse->Web,在右侧的面板上,修改Web context-root中的内容与自己的项目名称一致。
2. 设置devMode = true,但没有效果。
视频中提到,将<constant name="struts.devMode" value="true" />加入package前就可进入开发模式,当程序做出修改时,无需重启tomcat即可看到修改后的效果。但实际操作中发现,仅设置devMode为true,并不能达到效果。加入<constant name="struts.configuration.xml.reload" value="true"/>到package前,就可以启动开发模式了。(有的时候感觉添加了这句也不太靠谱,有时会出出修改package name 和action name的时候,需重启服务器才有效果的情况。)
3. 不能使用DMI动态方法调用。使用动态方法DMI时系统出错,提示说没有相应的方法
由于struct2版本更新,系统中默认将DMI方法相关设置参数的值设为false。如需使用,需要在package前设置参数如下:<constant name="struts.enable.DynamicMethodInvocation" value="true" />。可能在制作视频时,官网较为推荐该使用!符号调用方法的DMI方法。但目前,官网不太推荐使用这种了。官网现在推荐的是使用method方法+通配符方法来进行方法的调用。若使用该方法,可将参数还原为默认值:<constant name="struts.enable.DynamicMethodInvocation" value="false" />
4. 使用<s:fielderror fieldname = "name" />时报错
查了下官网的文档,文档上说可以用<s:fielderror />来显示所有错误,试了下,可行;文上还说可以用<s:fielderror fieldname = "filed1" />来显示个别field的错误,试了下,不行。不知道为什么。先在这里记录下。另外,<s:property value = "error.XXX">,这个XXX的值也不为filed的,而是传入field的值。这个和视频上说的不一样。如果是这样,不太方便显示第n个错误提示。因为并不知道用户会传什么值给field。执行了一下视频中带的源代码,发现源代码与视频中讲到的情况一样。可能是由于struct2升级的原因导致的不一致?
5. dynamic result时,在struts.xml中写<result>${r}</result>报错。
可能是由于struts2版本不一致,也可能是myeclipse版本不一致,此处报错。应改为:<result>${r}.jsp</result>,并在对应的action文件中,将r的值改为jsp文件的文件名部分。这样,程序就能正常运行了。
6. result with params时,在struts.xml中写<result>/xxx.jsp?t=${type}</result>,myeclipse报错。
这是由于MyEclipse 10对动态配置结果集支持不好,可以忽略这个错误提示,执行上是正常的。下面是网上的一个解决方案: Window->prefrences->MyEclipse->Validation->Struts2 Validator->去掉build的勾。去掉之后还是会有报错的,需要重启一下MyEclipse才行。
7. 自己写代码练习时,使用domainModel方式从页面向action传递参数,参数总是传递不进去。
自己的代码如下:index.jsp页面:
<a href = "test/add?u.name=a">Execute</a><br />
action.java的代码如下:
public class UserAction extends ActionSupport { private User user;
public String add() {
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} }
结果,程序在action.java中的System.out.println处出错,说是有空指针。找了半天,最后发现,是由于前台使用u作为传递值的实例名,而后台的类中,却使用user作为接收值的实例名。前后台实例名不一致,使得后台的user无法初始化,所以打印值是会出错。将前台的实例名改为user后,程序即可正确运行。
HIBERNATE
1. 删除数据表时提示有外键,无法删除(提示:a foreign key constraint fails)
因为husband和wife中都存在外键,删除外键wifeId和hs_id时,提示该字段不为外键。可以设置mysql,使得删除表时不照顾外键的情况:
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE Address;
SET FOREIGN_KEY_CHECKS = 1;
学习马士兵的struts2/hibernate/spring中遇到的问题及其解决方法的更多相关文章
- 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境
上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...
- struts2+hibernate+spring简单整合且java.sql.SQLException: No suitable driver 问题解决
最近上j2ee的课,老师要求整合struts2+hibernate+spring,我自己其实早早地有准备弄的,现在都第9个项目了,无奈自己的思路和头绪把自己带坑了,当然也是经验问题,其实只是用myec ...
- Struts2+Hibernate+Spring 整合示例
转自:https://blog.csdn.net/tkd03072010/article/details/7468769 Struts2+Hibernate+Spring 整合示例 Spring整合S ...
- 【Spring实战】—— 4 Spring中bean的init和destroy方法讲解
本篇文章主要介绍了在spring中通过配置init-method和destroy-method方法来实现Bean的初始化和销毁时附加的操作. 在java中,我们并不需要去管理内存或者变量,而在C或C+ ...
- Hibernate的懒加载session丢失解决方法
在web.xml加入spring提供的过滤器,延长session的生命周期 <!--Hibernate的懒加载session丢失解决方法 --> <filter> <fi ...
- 国内不fq安装K8S四: 安装过程中遇到的问题和解决方法
目录 4 安装过程中遇到的问题和解决方法 4.1 常见问题 4.2 常用的操作命令 4.3 比较好的博客 国内不fq安装K8S一: 安装docker 国内不fq安装K8S二: 安装kubernet 国 ...
- VS2012中丢失ArcGIS模板的解决方法
VS2012中丢失ArcGIS模板的解决方法 由于ArcGIS10.0(for .NET)默认是用VS2010作为开发工具的,所以在先安装VS2012后装ArcGIS10.0 桌面版及ArcObjec ...
- js中style.display=""无效的解决方法
本文实例讲述了js中style.display=""无效的解决方法.分享给大家供大家参考.具体解决方法如下: 一.问题描述: 在js中我们有时想动态的控制一个div显示或隐藏或更多 ...
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
随机推荐
- [摘]string.jion() 解决办法
for (int j = 1; j <= 5; j++) { List<int> list = new List<int&g ...
- memcache、memcached、groupcache的区别
对PHP语言来说,PHP使用memcache有两个模块,分别叫memcache和memcached,他们的区别看下表: 参考:http://hi.baidu.com/tony_wd/item/605e ...
- Using NuGet without committing packages to source control(在没有把包包提交到代码管理器的情况下使用NuGet进行还原 )
外国老用的语言就是谨慎,连场景都限定好了,其实我们经常下载到有用NuGet引用包包然而却没法编译的情况,上谷歌百度搜又没法使用准确的关键字,最多能用到的就是nuget跟packages.config, ...
- This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
在一个Mysql表达式中使用嵌套查询,出现了这个错误.原因是内层select语句带有limit子句. 在网上查了下,有文章指出: 比如这样的语句是不能正确执行的. select * from ta ...
- [转]Python文件操作
前言 这里的“文件”不单单指磁盘上的普通文件,也指代任何抽象层面上的文件.例如:通过URL打开一个Web页面“文件”,Unix系统下进程间通讯也是通过抽象的进程“文件”进行的.由于使用了统一的接口,从 ...
- xdebug初步
;加载xdebug模块. 根据PHP版本来选择是zend_extension还是zend_extension_ts ts代表线程安全 被坑过1次zend_extension="\web\ ...
- 通过扩展让ASP.NET Web API支持JSONP -摘自网络
同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的DOM,“跨源”操作来源于B的页面将会被拒绝.同源策略以及跨域资源共享在大部分情况下针对的是Ajax请 ...
- F2063 Could not compile used unit 'tt.pas'
install packge error F2063 Could not compile used unit 'tt.pas' 有可能是工程的pas文件相对路径不对.在工程管理看是否能打开文件,如果打 ...
- Active Record快速入门指南
一.概述 Active Record(中文名:活动记录)是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录.关系型数据库往往通过外键来表述实体关系,A ...
- C++11显式虚函数重载
[C++11显式虚函数重载] 在子类中给重载的虚函数加上override, 可以让编译器检察基类是否有这一虚函数.此功能适用于当基类原有的虚函数发生变化,即相当于编译期检察. 而基类,可以给函数加上f ...