struts2考勤系统备忘录

描述:对于现有纯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,解决,

进度二:课程管理的增删改查
套用进度一模式,问题就比较少
课程列表的显示改造完成,添加课程模块完成,添加过程,检测课程名完成,
接下来改造模块,课程模块的修改,删除

收获:每解决一个问题,就对框架的理解又深入一部分,体会到学习还是要与实践相结合

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值