SpringMVC学习笔记7----view-controller标签

用处与代码

太简单,就不演示了!

错误的发现与解决

视频中老师用一个view-controller轻松简单,他几行代码搞定的东西让我纠结苦恼了三天晚上,不知道到底是哪里出了问题,第一天是将mvc:view-controller错误地放在了web.xml文件中,我还一直苦恼为什么这个会报错呢。纠正后发现还是不能直接通过url运行。之前success.jsp(即这次想直接访问的目标文件)和index.jsp放在一个文件夹下,教学内容为了显示这个的使用场合,即放在web-inf下的文件不能直接通过url访问,而是一定要通过controller转发,配置了mvc:view-controller就可以直接url访问!我百思不得其解便想完全按照他的方式来做,先将mvc:view-controller全部注释掉!然后改变internalResourceViewResolver的前缀为/WEB-INF/,运行发现还是/为前缀,后来通过调试,分析源码发现/*.jsp是默认配置,而我怎么改前缀后缀都没用,才发现我的springmvc.xml即SpringMVC的配置文件根本没有起到作用,然后发现我的springmvc文件的路径写错了,其放在src文件夹下面,我就写了classpath:sprinmvc.xml,我误以为src文件夹下的所有文件的路径都在classpath:路径下,好像错了,然后再去查了下,http://chengtong-java.iteye.com/blog/2254482也没有什么确切的结果!只是把springmvc.xml文件移到了WEB-INF下,然后修改相关配置,运行下就行了!

<init-param>
    <param-name>contextConfigLocationparam-name>
    <param-value>/WEB-INF/springmvc.xmlparam-value>
init-param>

然后直接访问下,就通过了!
代码非常简单,这里就不演示了,重要的是找寻问题的过程,这让我回想了很多spring的原理和SpringMVC的相关知识,学以致用了一下下。。。

springMVC的配置文件的路径问题

参照项目在tomcat的部署文件的目录,发现将springmvc.xml放在WEB-INF下在此目录下和此目录下的classes目录里都会有springmvc.xml文件,如果springmvc.xml放在src文件夹下的话就只有WEB-INF/classes文件夹下面才有,而我们需要的DispatcherServlet又需要spring来初始化,spring的配置文件默认在WEB-INF下面,所以就会出现问题!所以以后安全起见,spring和springMVC的配置文件都放在WEB-INF下吧!
SpringMVC学习笔记7----view-controller标签_第1张图片

这是将springmvc.xml放在src下时的部署的项目下WEB-INF的文件夹内容(我用的是IDEA),放在WEB-INF下的文件都直接显示在这个目录下,而放在src下的文件,都在classes文件夹下,lib是相关jar包,jsp文件夹不知什么鬼!

搜索得知
classpath代表的仅仅是classes的目录!
而classpath*则还包括lib等目录!

ps.

springMVC的默认配置文件是:/WEN-INF/xxx-servlet.xml
spring的默认配置文件是:/WEN-INF/applicationContext.xml

添加mvc:view-controller后正常的controller不起作用

当我们添加mvc:view-controller后,直接用mvc访问成功了,可是原先需要控制器转换的方式却不起作用了!
我们这里在springmvc.xml文件中添加一行:

<mvc:annotation-driven> mvc:annotation-driven>

即可解决这个问题!具体原因后面再说。

次日添加:

真是越下去越能发现自己的这个项目有多少个bug,今天发现的这个bug是致命的,就是我的文件目录结构完全是错的!
之前的文件结构是这样的
src —–main ——src———–一些包以及相关类!
———————–webapp—–WEB-INF
我所谓的src是src下main下的src,这个文件夹是我自己创建的,我完全无视了最外层的系统自动创建的src(也是拜有些教程所赐),所以,前面说的classpath:下的目录即是外层的src目录!放在这边即可解决昨日的bug。。。。哎,将错就错这么久,还能完成那么多的内容!

你可能感兴趣的:(ssm,框架,Spring,J2EE,Java)