struts2考勤系统备忘录
2016-09-18 09:30
309 查看
描述:对于现有纯JSP系统,修改为SSH框架,本周主要 内容是修改基于Struts2的视图层改造,下边是在改造过程中遇到的一些问题,和对出现问题的猜想,和验证猜想从而解决问题的过程,,代码就不上了,因为很多问题都是由多个代码文件的不同位置造成的
关键字:JSP Struts2
原生 JSP ,转换struts2框架存在的问题进度一:管理员对用户模块的增删改查
问题一:装饰器中对于action无法装饰的问题
siteMeshFilter/jsp/*
FORWARD
REQUEST
问题二:
关于验证码问题,在Struts2框架下,无法在用Serclet 构建映射路径,类似于 /yzm ,框架会当作yzm.action 去配置文件寻找action 找不到
会爆出页面问题
所以在strust2框架下,验证码也要用action 来获取,result 类型stream
问题三:
有关原页面当中存在的超链接(原来用于跳转页面的链接,都要使用action)问题四:
在装饰器装饰页面范围内,点击触发事件无法运行JS函数这个问题比较坑爹,因为装饰器用的模板页构成了一个模板,根据模板标签的位置
将被装饰页面的 “各部分内容” 按标签位置插入到模板页,对!被修饰页面,被修饰内容以外
是不会插入的, 如果你的 写到了被修饰内容标签以外,,是不会被插入,,,,
所以要将js 写在模板页,或者被修饰页可以被导入的标签内
建议,如果采用将JS 在模板页写入,那么每个页面都会加载这部分JS,因为JS 函数应该
按不同功能放在不同页面,所以应该将页面 这些被导入的标签内
问题五:
对于一个模板的增加,删除,修改,查找,一般封装在一个模块ACTION不同的功能用不同的方法实现,不同的方法接受的参数不一样,在校验的过程中
校验参数,就需要不同的校验器,目前掌握三种方法,用代码实现,但是一般
用声明校验器来做,有对所有方法校验,不需要校验的方法,用注解跳过,
还有就是针对不同action,配置不同文件 文件名-动作名-validation,这里用最后一种
问题六:
一个功能,从跳转到该页面到,实现该页面功能,需要配置两个动作//因为构建,修改用户信息页面,根据ID 从数据库提取一些信息,
//不需要提取信息的,直接调用EXECUTE方法就可以,就是一个用ACTION
//隐藏页面URL的,但是涉及到用提取信息,就不用公用的EXCUTE方法了
//那样会造成数据越界,所以要声明一个方法来返回信息
问题七:
,每个页面中这个标签用来,返回执行结果修改用户信息功能基本完成,异步检测没做,而且异步转换拼音还用的JS 实现的异步,
后期希望用JQUERY改造,权限判断语句没做,修改过程没有问题
问题八:
异步请求,返回页面信息,装饰器配置 ,排除配置失效,总是返回带有装修模板的页面,但是排除/index.jsp生效,猜想是异步请求页面,会绕过模板排除配置(后期测试得出错误定论),
地址栏直接输入地址加参数也无效,,,不加参数没有问题,,尝试POST传参数
,测试结果POST可以所以,装饰器,,过于死板,一旦使用GET 传参,URL会增加
参数部分这样就不是配置的URL 了,结果是仍然装饰,
但是按框架要求,一般这样包含动态代码的页面,应被ACTION 代替,
事实上,我将把ACTION放在装饰范围以外
问题九:
当使用ACTION进行异步检测用户名是否存在的时候,需要返回一个0或者1,但是ACTION直接返回一个页面,解决方法,添加一个JSP 用来作为action的结果页面,用STRUTS2标签
获取ACTION 封装的值,将页面信息返回给异步请求结果,可以达到效果
但是以上违反设计原则,我采用去除弹窗的形式,用原jsp直接调用标签接受,改成非弹框
形式提示
下一步工作内容:
admin_adduser.jsp 修改JS去除弹窗的形式,用原jsp直接调用标签接受,改成非弹框形式提示用原jsp直接调用标签接受,改成非弹框形式提示,因为要将表单提交到本身的ACTION ,用AJAX
就便的无意义,需要重载本页面才能获取,或者用ACTION获取的返回信息是更新后的本身页面,
还是采用另一种方法,采用中间JSP 转发,第二种方法是有效的
问题十:
问题描述:是否为管理员,是以布尔型变量存储的,Struts2框架中,校验器无法获取这个变量,导致一直进行拦截,
问题猜想:struts2框架获取一个变量,那么在定义该变量的过程中,必须有GET SET 方法,该框架
是用GET 方法获取的,因为idea对于布尔型变量,默认是IS 方法而不是GET方法,所以导致该问题
解决方法:添加为每个变量都配置上SET GET 方法
猜想结果:错误,这种问题并不是因为没有GET方法导致校验器无法获取的,虽然以前出现过这种
但是现在struts2可以识别 isFlag(),所以不是GET方法问题
问题猜想2:校验器对变量校验设置为判断是否为空,这次猜想布尔型,应该采用其他的检验参数
查询结果:required 是否为空;requiredstring 必须字符;由于第一次使用的是requiredstring,
这个参数是用来判断String 类型的,无法用来判断布尔型变量,一旦采用将用返回为NULL,
而required是用来判断是否纯空,应该是任何类型,是真正意义上的空,当采用required,校验器
成功接收到布尔型参数,问题成功解决
解释:关于一个功能由两个ACTION 完成,一个用来隐藏URL ,给执行功能ACTION
传参数。起到分支控制器的作用,第一个ACTION 不需要校验器,因为自带判断功能
。,第二个ACTION配上校验使逻辑严谨
问题十一:
问题描述:删除用户模块,业务流程显示正常,发现实际无法删除数据,数据库中数据仍然存在问题猜想:UserService 传参发生问题,
问题原因:因为想要用deleteuser_page.action 根据ID 将USER 传给deleteuser.action
而实际是两个action 之间还有一层admin_deleteuser.jsp ,所以导致USER最后放在了
jsp 而没有进行下一步传输到ACTION ,
解决方法:在deleteuser_page.action返回的admin_deleteuser.jsp 的表单上加入一个隐藏变量ID
将是否要删除的ID 传给,deleteuser.action,解决,
进度二:课程管理的增删改查
套用进度一模式,问题就比较少
课程列表的显示改造完成,添加课程模块完成,添加过程,检测课程名完成,
接下来改造模块,课程模块的修改,删除
收获:每解决一个问题,就对框架的理解又深入一部分,体会到学习还是要与实践相结合
相关文章推荐
- Linux Generating SSH Keys
- JQuery+Strusts1.x无刷新登录
- ssh以及ssh的key认证
- 【DevOps】为什么我们永远疲于奔命?
- 网络管理之IP地址篇
- 文件的读出 编辑 管理
- 插件管理框架 for Delphi(一)
- SQL Server 2008 R2 应用及多服务器管理
- 使用CSS框架布局的缺点和优点小结
- 一起动手编写Android图片加载框架
- 基于.NET平台常用的框架和开源程序整理
- VC下通过系统快照实现进程管理的方法
- 列举PHP的Yii 2框架的开发优势
- perl脚本实现限制ssh最大登录次数(支持白名单)
- Windows窗体的.Net框架绘图技术实现方法
- 浅谈JavaScript 框架分类
- 轻量级javascript 框架Backbone使用指南
- javascript实现框架高度随内容改变的方法
- JS刷新框架外页面七种实现代码