博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
intellij idea 12 搭建maven web项目 freemarker + spring mvc
阅读量:5136 次
发布时间:2019-06-13

本文共 5644 字,大约阅读时间需要 18 分钟。

配置spring mvc ,写这篇文章的时候spring已经出了4.0 这里还是用稳定的3.2.7.RELEASE,先把spring和freemarker配置好

1.spring mvc配置

在web.xml中添加

spring
org.springframework.web.servlet.DispatcherServlet
1
spring
*.do

 sping通过DispatherServlet做分发,如果不指定配置文件就是项目名-servlet.xml,这里已经制定了spring-servlet.xml

 这里再看spring-servlet.xml的配置

10
zh_CN
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
#.##

 <bean id="freemarkerConfigurer"

          class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">这个地方写入之后就报找不到类,原来光引用freemarker的类和spring-framework的类还不够,还少一个spring-context-support,添加这个类后正常了

org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter  这里引用的spring版本为3.2.7 这个类已经是废弃的了,源码里注释了

* * @deprecated in Spring 3.2 in favor of * {@link org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter RequestMappingHandlerAdapter} */@Deprecatedpublic class AnnotationMethodHandlerAdapter extends WebContentGenerator		implements HandlerAdapter, Ordered, BeanFactoryAware

 既然说了,那就用最新的,稍微找了下,没找到RequestMappingHandlerAdapter有什么区别,望指教

既然都配置好了,剩下就是写个controller了

package com.spring.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Controller@RequestMapping("/message")public class IndexController {    @RequestMapping(value = "/index", method = RequestMethod.GET)    public String index(HttpServletRequest request, HttpServletResponse response,ModelMap modelMap) {        modelMap.put("some", "spring freemarker模板终能使用");        return "index";    }}

 然后是freemarker模板,非常简单,文件放到/WEB-INF/view/下

freemarker

${some}

 

既然配置好了,就开始启动测试下,然后就出现了各种问题。。。

首先就是几个类找不到,最经典的javax.servlet.http.HttpServletResponse和javax.servlet.http.HttpServletRequest 本来就是servlet-api.jar包里的,由于公司有私服,添加了几个都不对,先把现在正确的pom文件发下

4.0.0
SpringMvc
SpringMvc
1.0-SNAPSHOT
org.apache.maven
maven-plugin-api
//这个经过我的测试,发现根本不用添加
3.1.0
org.apache.tomcat
servlet-api
//这个经过我的测试,发现根本不用添加
6.0.37
org.springframework
spring-context
3.2.7.RELEASE
servletapi
servlet-api
//这个是主要的servlet-api,在公共maven仓库上找了半天都没找对,因为我搜索的时候都是搜索的servlet-api,后来才知道直接搜servletapi就对了
2.4-20040521
org.springframework
spring-context-support
3.2.6.RELEASE
org.freemarker
freemarker
2.3.20
org.springframework.ws
spring-ws-core
2.1.4.RELEASE
org.mortbay.jetty
jetty-maven-plugin
1
9966
foo
7777
60000
${basedir}/webapp
/spring

 终于知道了添加servlet-api的包应该是哪个,真是郁闷http://www.mvnrepository.com/artifact/servletapi/servlet-api/2.4-20040521

启动成功了之后,访问地址http://127.0.0.1:7777/spring/message/index.do,报错

javax.servlet.ServletException: No adapter for handler [controller.UserInfoController@1470933]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler

之前完全没遇上过这种错,上网查说要加了两个adapter,就可以了

发现不行,后来修改了spring-servlet.xml 把这里又改回来了

<!-- 完成请求和注解POJO的映射 -->

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />就可以了

废弃的方法就废弃吧,先解决问题再说

在后面就是想传对象到freemarker里,原来我记得使用过modelandview,但是好像要添加什么配置,因为使用这个访问不到放到modelandview里的对象,所以有换成了modelmap,终于完成了

 

这次主要目的就是在intellij上配置一个maven 的web项目,在加上spring mvc和freemarker,没想到出现这么多的问题,使用jetty插件的目的是在项目启动期间,修改freemarker模板能即时生效,而

使用独立tomcat的话,还得部署才行,而插件很方便。这些东西配置好之后,就该加上mybatis和mongodb了

转载于:https://www.cnblogs.com/t2xingzhe/p/3540769.html

你可能感兴趣的文章
图片等比例缩放及图片上下剧中
查看>>
background-clip,background-origin
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
Android 画图之 Matrix(一)
查看>>
【模板】最小生成树
查看>>
设计模式之结构型模式
查看>>
jQuery EasyUI 的下拉选择combobox后台动态赋值
查看>>
timeline时间轴进度“群英荟萃”
查看>>