Eclipse IDE练习SSM整合项目遇到的问题

Eclipse IDE 练习SSM整合项目遇到的问题

    • 1. 建立项目
    • 2 . Dao层
    • 3. 其他问题
        • 3.1 运行报错
        • 3.2 applicationContext.xml
        • 3.3 spring-security

简述:在实现黑马的SSM整合项目过程中遇到的一些小坑。

1. 建立项目

         new->Maven Project,以maven-archetype-site方式建立作为父项目。
maven-archetype-site
         右键点击父项目->new->Maven Model 新建子项目,以maven-archetype-quickstart方式建立。
maven-archetype-quickstart
         最后是web层,maven-archetype-webapp以方式建立。
         在eclipse搭建父子项目时,maven update一直报错显示不能更新项目。

 org/codehaus/plexus/archiver/jar/JarArchiver

说是连不上的问题。最后找到一个方法:打开mavend路径下/conf/setting.xml文件,ctrl+f 找到 mirrors 标签。在标签里添加以下信息:


	alimaven
	central
	aliyun maven
  http://maven.aliyun.com/nexus/content/repositories/central/

保存再次运行,没问题。

2 . Dao层

         在实现查询角色的权限遇到问题。在测试文件RoleDaoTest里,查询结果的permissions结果一直为空。
IRoleDao文件

@Select("select * from role where id in (select roleId from users_role where userId=#{userId})")
@Results({
       @Result(id = true, property = "id", column = "id"),
       @Result(property = "roleName", column = "roleName"),
       @Result(property = "roleDesc", column = "roleDesc"),
       @Result(property = "permissions",column = "id",javaType = java.util.List.class,
       many =@Many(select="com.itcast.ssm.dao.IPermissionDao.findPermissionByRoleId"))})
public List findRoleByUserId(String userId) throws Exception;

IPermissionDao

@Select("select * from permission where id in (select permissionId from role_permission where roleId=#{id})")
public List findPermissionByRoleId(String id) throws Exception;

         把findPermissionByRoleId单独调用几次都不行。奇怪的是把sql语句放在PL/SQL Developer里测试能够执行且结果正确。逐一排查,发现把PL/SQL Developer的账号退出去,再进行测试发现有结果显示。难道同时在eclipse和PL/SQL Developer两个地方登录会冲突?

3. 其他问题

3.1 运行报错

         在运行时,爆红说找不到ContextListener。可以右键点击web层模块项目->propertise->Deployment Assembly 。查看有没有加载maven dependencies路径。
Eclipse IDE练习SSM整合项目遇到的问题_第1张图片
如果没有,点击add->选中Java Build Path Entries->选中maven dependencies,之后点击保存。
         先清除服务器(右键服务器->clean),然后右键点击父项目run as->maven clean,接着按maven install,最后右键点击web子项目run as->run on service运行
         每次修改后,运行服务器爆红或者黑都可以先尝试上述方法清理运行。但是清理一次10s,重建一次25s,慎用。
         

3.2 applicationContext.xml

         发现他们在视频中,把这个文件整合放在web层上,实际开发中还是在Dao层建立一个applicationContext-dao.xml的分文件,在web层的.xml文件中以资源文件形式导入.xml分文件。


         因为在模块测试时,读不到放在另一个子模块下的资源文件(也有可能是没有导入依赖的问题)。所以这样操作方便测试Dao模块。

3.3 spring-security

         最后就是securiy的坑,domian中SysLog文件time属性,按照之前Orders时,修改get方法。开启注释这三个属性在同一security:global-method-security 标签下。



         如果傻傻地直接复制文档那段将属性单独分开三个标签,就会一直爆红说重复注册多行属性。其余都是关于反射的知识,这方面不熟练,之后要补课。
总结完毕。

你可能感兴趣的:(java)