发表于: 2017-08-28 22:45:56
1 830
今天完成的事情:
今天做了一个单纯的springmvc的例子
核心的包就是spring-webmvc,这个包导入之后会自动导入spring-core,spring-web等它的依赖包;
后面jstl、taglibs等包的导入是为了在jsp页面中使用jstl等标签;
hibernate-validator的导入是为了正常使用springmvc的valid,springmvc的valid只有接口没有实现,如果要使用它的功能需要导入一个实现包,导入hibernate-validator就是为了这个目的,本文的demo里面没有用到validation,所以只是为了运行基本demo,这个可以不导入;
jackson-mapper的导入是为了使用springmvc返回json的功能,对于这个功能springmvc也是只有接口没有实现,如果不导入实现包,要返回json时会返回406错误。jackson-core包会作为依赖导入。
然后配置web.xml
springmvc还要做很多配置,那些配置在单独的配置文件里,这个配置文件的默认位置就是在web.xml相同目录下的<servlet-name>-servlet.xml,比如我的servlet-name配置的是spring-dispatcher,那么我的springmvc配置文件的默认位置就是web.xml同目录下的spring-dispatcher-servlet.xml。
在mvc里应该是单独会为mvc做一个配置文件
Springmvc的虚拟路径与处理函数的映射,是通过annotation来设置的,这些类都在哪个包下面,就是那个component-scan属性配置的,并设置支持annotation支持,springmvc的每一个处理函数都会返回一个String类型的变量(有的函数返回值就是String,有的返回值是一个对象,对象里有一个viewResolver需要的字符串),我这个设置就是设置一个前缀和后缀,举个例子来说,对于函数返回的这个String,比如是abc,那么需要渲染的文件就是/pages/abc.jsp。
multipartResolver是上传文件需要的配置,还是那句话,本demo中用不到,不过还是写上,哪个项目里不需要上传点东西呢。
最后一个属性,是对静态资源的映射,经过这个映射之后,要访问/static/a.png时,实际访问的就是/resources/a.png。
最后再简单的写一个简单的controller
这儿类这个级别的RequestMapping的值是"/",home这个方法级别的呢值是空,两个加起来就是"/",而json这个方法的RequestMapping是"/json",所以,当访问的URL是"/"的时候,会调用home这个方法来处理,返回值是一个字符串index,还记得前面的viewResolver吗,根据那个配置,这个方法执行完成之后会渲染/pages/index.jsp,所以在WEB-INF的同级目录下创建pages目录(也就是WEB-INF的兄弟目录),再创建index.jsp,运行整个工程,访问"http://localhost:8080/demo4springmvc/"得到的就是index.jsp,因为json方法有一个@ResponseBody的annotation,它的返回值直接给客户端。
明天的计划:继续学习,搭ssm
遇到的问题:一边写一边自己改bug的过程,有趣
收获:很累心很累
评论