ssm项目导入eclipse_ssm的死亡笔记

笔记一:

问题:我是在原来的ssm项目上进行的修改,修改完成后:无论如何都不能访问项目的controller层,但是可以访问项目原来的controller层。然后把和原来项目相关的东西全部删掉,可是情况依然不变。然后以为是缓存问题,尝试了各种重启,依然没有效果。

解决方案:

知识点:eclipse是复制了一个tomcat到自己的插件位置,也就是eclipse克隆了一个tomcat到自己里面,然后我的路径是在:

E:javaworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp0下

里面的wtpwebapps就类似于tomcat的发布项目的webapps。

然后在eclipse上运行的项目都是在这里的tomcat上运行的。

我点开路径,找到web-inf下的classes文件,发现这里面的还是我原来的项目。无论在eclipse上如何build project,还是clean tomcat ,都无法改变这个。

所以我直接在这个路径下把这个项目删除,然后重新把项目运行到tomcat下。终于正常了。

死亡笔记二:

作死记:本来只想做单纯的网站使用,不使用mybatis。不连接数据库,然后直接在原来的项目上进行修改。

第一步,我把不需要的实体删了。

第二步:把mapper里的xml文件删了

但是这里我的applicationcontext.xml文件里有如下配置:

<!-- **********		整合Mybatis		********** -->
	<!-- 1. 注册SqlSessionFactoryBean -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 指定mybatis主配置文件的位置 -->
		<property name="configLocation" value="classpath:mybatis.xml"/>
		<!-- 连接池注入 -->
		<property name="dataSource" ref="C3P0DataSource"/>
		<!-- 指定mapper文件的位置 -->
		<property name="mapperLocations" value="classpath:mapper/*.xml"/>
	</bean>

关键的是第三个property:

<property name="mapperLocations" value="classpath:mapper/*.xml"/>

由于我没有了mapper里的xml文件,所以编译后发布到tomcat里的文件里直接没有mapper文件,报错里说mapper路径不存在,所以我直接加了进去,发现必须要xml文件。然后我又把之前的xml文件复制进来,反正不用,放着不碍事。然后又报错说找不到一个实体类,忽然发现被我删了,然后我把xml文件里的实体类的相关内容又删了。

终于,运行成功了。一次ssm项目,但是不使用数据库,mybatis。

死亡笔记三:

在克隆的tomcat里直接删除项目其实是等于 在eclipse里的server的tomcat下, add or remove 里remove掉项目,然后再重新add回来,才重新run on server ,这样运行的肯定是你刚刚写好的代码,而不是你之前的代码残留了。

死亡笔记四:

论@responsebody的作用

先看最直观的现象:

即我的login路径下的方法添加了responsebody,而register路径下没有添加。然后现象如下图:

login的:

2712c343d5ca6674f40675451b4dddbb.png

register的:

b69de56dee2d30d769dc555299c0673c.png

status是404,错误提示是:

The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

然后我在register的方法上添加了responsebody,现象如下:

0217dc8d677e0e94cc8c52492e7cf85b.png

前端这边是用ajax发送数据到服务端,服务端这边都收到数据并且正常显示。只是没有responsebody的时候就变成前面那样了。

responsebody的作用:

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:

返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

而我们这里返回的就是json的数据。(可以参考:SSM框架中前后台json数据交互的相关知识 - csdn_stf_01的博客 - CSDN博客 即导入jackson的jar包,然后

<mvc:annotation-driven></mvc:annotation-driven> 加载json解析器,然后使用responsebody自动将返回的对象映射为想要的值(jquery的ajax()方法中指明的返回值类型) )

死亡笔记5:

Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'User'. Cause: java.lang.ClassNotFoundException: Cannot find class: User

运行ssm项目时出现上面的错误,然后根据以往经验,一般这些报错就看最前面一行的最后面部分,parse,resolve :解析 ,即解析mapper的xml文件的时候发生错误,无法识别类型 User,也就是找不到类class。然后我一看我的xml文件:

<insert id="addUser" parameterType="User">

insert into t_user(trueName,password) values(#{trueName},#{password})

</insert>

忽然记起这个parameterType需要取别名,如果没取就得写全名,即包名和路径名也要加上。所以后面我改为 parameterType="com.crud.bean.User" 就ok了。

死亡笔记六:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值