学习马士兵的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++开发为主,难免与其他 ...
随机推荐
- [Papers]MHD, $\p_3\pi$, Lebesgue space [Zhang-Li-Yu, JMAA, 2013]
$$\bex \p_3\pi\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=2,\quad \frac{3}{2}\leq q\leq 3 ...
- delphi 中字符串与16进制、10进制转换函数
//字符串转成16进制代码function strToHexStr(str:string):string;varc:char;ss:string;i:integer;beginwhile str& ...
- 【LeetCode 235】Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...
- Enter回车切换输入焦点方法兼容各大浏览器
做项目时,客户要求能够用enter回车直接切换输入(焦点),当最后一个时候,直接提交信息. 第一想法就是,网上去copy一段代码直接用.但了百度.谷歌找了个遍,找到的代码80%以上都是一样的.有的代码 ...
- Win10正式版激活方法有哪些?如何激活Win10?
很多用户都想将系统升级到Win10,但是却不知道怎么激活Win10正式版的方法,其实不同版本激活正式版Win10的方法秘钥不同,下面99安卓网小编就分享一些激活Win10正式版的方法和秘钥,供大家参考 ...
- 数往知来 ASP.NET_多线程_Socket<十五>
一.ASP.NET B/S 做网站(动态).管理系统(OA,进销存等) C/S--窗体软件 为什么现在很少用C/S做进销存等软件 B/S部署方便 C/S要安装 动态:与服务器(IIS(软件))进 ...
- 【工作备忘】suricata
因为工作遇到的困难,我向suricata的某个作者发送了邮件. On Wed, Sep 11, 2013 at 8:22 AM, likeyi <929812468@qq.com> wro ...
- Codeforces Educational Codeforces Round 15 D. Road to Post Office
D. Road to Post Office time limit per test 1 second memory limit per test 256 megabytes input standa ...
- HD1013Digital Roots
Problem Description The digital root of a positive integer is found by summing the digits of the int ...
- Mysql SQL优化&执行计划
SQL优化准则 禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在 ...