项目开发背景:
P2p项目的WEB模块,MOBILE模块均使用SSM框架,采用SpringMVC分发请求;唯独OPS采用Struts2分发请求,且前后端不分离。
问题:
开发维护人员需同时理解掌握springMVC,Struts2,JSP技术,虽然这样没什么不好,但额外的开发成本对于项目总是可以省掉的。
解决:
Struts2替换为SpringMVC的版本迭代应运而出,以最小的开发变动将Struts2替换为springMVC。
工程启动:
启动背景,个人对于Struts2,SpringMVC均处于会用的阶段,对这个工程是深感恐惧的,然而我还是开始了。
1.配置文件的替换
第一步也是最简单的就是配置文件的修改
1.加入SpringMVC配置文件,配置文件中包含了SpringMVC的拦截器(可用来拦截登陆请求),解决字符串乱码,对JSON的支持等,扫描@Controller。
2.在web.xml中将Struts的过滤器切换为springMVC的Servlet。由此,服务器在接受到网络请求将通过DispatcherServlet来分发请求。
2.恢复OPS的登陆功能
1.OPS采用Shiros做登录权限控制,由于Struts2时可将登录用户放于值桟中,后台在取数据时,可以很方便的从值桟中去。而SpringMVC则没有这个功能,于是,我在Shiros做登录校验的时候,将用户对象信息存放在Session中,方便在SpringMVC的拦截器中做登录判断。
2.重写SpringMVC的登录拦截器,在Struts2的基础上稍微做了一下取用户对象的更改。
3.配置修改Shiros,和SpringMVC的登录拦截器。最终实现登录
3.恢复OPS的菜单权限
权限使用的是shiros框架,权限控制在菜单级别,并没深入到元素标签级别,通过为后台管理人员分配一个角色来控制权限。
4.逐级恢复OPS的各项接口功能
期间遇到各种问题,主要是接口的400报错。
400报错的原因主要是:
1.传递参数为对象类型,前台封装的json包含了后端并没有的字段和属性。
2.传递参数为对象类型,传递参数中包含有Date类型,未做转义照成。
405报错 (请求方式不对,为了快速开发,将所有的接口设置为默认)
500报错(多为nullpointException报错,少传递了参数)
5.jsp界面的修改
1.删除jsp页面中的struts2 标签,使用jstl标签替换
<s:if>--><c:if>
<s:iterator>--><c:forEach>
网友评论