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

1.spring mvc配置

在web.xml中添加

  1. <!-- Spring MVC配置 -->
  2. <!-- ====================================== -->
  3. <servlet>
  4. <servlet-name>spring</servlet-name>
  5. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  6. <!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如spring-servlet.xml
  7. <init-param>
  8. <param-name>contextConfigLocation</param-name>
  9. <param-value>/WEB-INF/spring-servlet.xml</param-value>  默认
  10. </init-param>
  11. -->
  12. <load-on-startup>1</load-on-startup>
  13. </servlet>
  14.  
  15. <servlet-mapping>
  16. <servlet-name>spring</servlet-name>
  17. <url-pattern>*.do</url-pattern>
  18. </servlet-mapping>

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  7. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.0.xsd">
  10.  
  11. <!-- 启用spring mvc 注解 -->
  12. <context:annotation-config/>
  13.  
  14. <!-- 设置使用注解的类所在的jar包 -->
  15. <context:component-scan base-package="com.spring.controller"></context:component-scan>
  16.  
  17. <!-- 完成请求和注解POJO的映射 -->
  18. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
  19.  
  20. <!-- freemarker的配置 -->
  21. <bean id="freemarkerConfigurer"
  22. class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  23. <property name="templateLoaderPath" value="/WEB-INF/view/" />
  24. <property name="defaultEncoding" value="GBK" />
  25. <property name="freemarkerSettings">
  26. <props>
  27. <prop key="template_update_delay">10</prop>
  28. <prop key="locale">zh_CN</prop>
  29. <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
  30. <prop key="date_format">yyyy-MM-dd</prop>
  31. <prop key="number_format">#.##</prop>
  32. </props>
  33. </property>
  34. </bean>
  35. <!-- FreeMarker视图解析 如返回userinfo。。在这里配置后缀名ftl和视图解析器。。 -->
  36. <bean id="viewResolver"
  37. class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  38. <property name="viewClass"
  39. value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
  40. <property name="suffix" value=".ftl" />
  41. <property name="contentType" value="text/html;charset=GBK" />
  42. <property name="exposeRequestAttributes" value="true" />
  43. <property name="exposeSessionAttributes" value="true" />
  44. <property name="exposeSpringMacroHelpers" value="true" />
  45. </bean>
  46. </beans>

<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 这个类已经是废弃的了,源码里注释了

  1. *
  2. * @deprecated in Spring 3.2 in favor of
  3. * {@link org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter RequestMappingHandlerAdapter}
  4. */
  5. @Deprecated
  6. public class AnnotationMethodHandlerAdapter extends WebContentGenerator
  7. implements HandlerAdapter, Ordered, BeanFactoryAware

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

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

  1. package com.spring.controller;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.ModelMap;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RequestMethod;
  7.  
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10.  
  11. @Controller
  12. @RequestMapping("/message")
  13. public class IndexController {
  14.  
  15. @RequestMapping(value = "/index", method = RequestMethod.GET)
  16. public String index(HttpServletRequest request, HttpServletResponse response,ModelMap modelMap) {
  17. modelMap.put("some", "spring freemarker模板终能使用");
  18. return "index";
  19. }
  20. }

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

  1. <html>
  2. <body>
  3. <h2>freemarker</h2>
  4.  
  5. <div>${some}</div>
  6. </body>
  7. </html>

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>SpringMvc</groupId>
  8. <artifactId>SpringMvc</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10.  
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.apache.maven</groupId>
  14. <artifactId>maven-plugin-api</artifactId> //这个经过我的测试,发现根本不用添加
  15. <version>3.1.0</version>
  16. </dependency>
  17.  
  18. <dependency>
  19. <groupId>org.apache.tomcat</groupId>
  20. <artifactId>servlet-api</artifactId> //这个经过我的测试,发现根本不用添加
  21. <version>6.0.37</version>
  22. </dependency>
  23.  
  24. <dependency>
  25. <groupId>org.springframework</groupId>
  26. <artifactId>spring-context</artifactId>
  27. <version>3.2.7.RELEASE</version>
  28. </dependency>
  29.  
  30. <dependency>
  31. <groupId>servletapi</groupId>
  32. <artifactId>servlet-api</artifactId> //这个是主要的servlet-api,在公共maven仓库上找了半天都没找对,因为我搜索的时候都是搜索的servlet-api,后来才知道直接搜servletapi就对了
  33. <version>2.4-20040521</version>
  34. </dependency>
  35.  
  36. <dependency>
  37. <groupId>org.springframework</groupId>
  38. <artifactId>spring-context-support</artifactId>
  39. <version>3.2.6.RELEASE</version>
  40. </dependency>
  41.  
  42. <dependency>
  43. <groupId>org.freemarker</groupId>
  44. <artifactId>freemarker</artifactId>
  45. <version>2.3.20</version>
  46. </dependency>
  47.  
  48. <dependency>
  49. <groupId>org.springframework.ws</groupId>
  50. <artifactId>spring-ws-core</artifactId>
  51. <version>2.1.4.RELEASE</version>
  52. </dependency>
  53.  
  54. </dependencies>
  55.  
  56. <build>
  57. <plugins>
  58. <plugin>
  59. <groupId>org.mortbay.jetty</groupId>
  60. <artifactId>jetty-maven-plugin</artifactId>
  61. <configuration>
  62. <scanIntervalSeconds>1</scanIntervalSeconds>
  63. <stopPort>9966</stopPort>
  64. <stopKey>foo</stopKey>
  65. <connectors>
  66. <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
  67. <port>7777</port>
  68. <maxIdleTime>60000</maxIdleTime>
  69. </connector>
  70. </connectors>
  71. <webAppSourceDirectory>
  72. ${basedir}/webapp
  73. </webAppSourceDirectory>
  74. <webAppConfig>
  75. <contextPath>/spring</contextPath>
  76. </webAppConfig>
  77. </configuration>
  78. </plugin>
  79. </plugins>
  80. </build>
  81.  
  82. </project>

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

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

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

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

  1. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>

发现不行,后来修改了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了

intellij idea 12 搭建maven web项目 freemarker + spring mvc的更多相关文章

  1. intellij idea 12 搭建maven web项目 freemarker + spring mvc(续)

    上次有2个东西没整明白,一个就是controller的注解使用RequestMappingHandlerAdapter报错 No adapter for handler [controller.Use ...

  2. intellij idea 12 搭建maven web项目

    原来公司一直使用eclipse,突然使用这个intellij还真有点不习惯,等用了一段时间才发现的确好用,因为也是刚开始用,所以很多不理解的地方,搭建一个项目从头好好了解下intellij 最开始的m ...

  3. Eclipse 搭建 Maven Web项目

    第一步:安装JDK: 第二步:安装Eclipse: 第三步:安装tomcat7: 第四步:安装maven插件: 4.1 下载maven:http://maven.apache.org/download ...

  4. 在Eclipse中使用Struts和Hibernate框架搭建Maven Web项目

    前言 学习使用Java还是2012年的事情,刚开始学习的Java的时候,使用的是MyEclipse工具和SSH框架.初学者适合使用MyEclipse,因为他将struts.Spring和Hiberna ...

  5. 搭建maven web项目并配置quartz定时任务【业务:对比数据变化内容】 历程

    搭建maven web项目并配置quartz定时任务[业务:对比数据变化内容] 历程2018年03月03日 10:51:10 守望dfdfdf 阅读数:100更多个人分类: 工作 问题编辑版权声明:本 ...

  6. 搭建 maven 项目 搭建 maven web 项目及遇到 JDK 的问题

    临时起意搭建一个 maven web 项目.使用的servlet 3.0 及 1.8 JDK. maven 默认创建了一个JDK 1.5 版本的项目. 注意此处选择一下WAR包.不然在配置中配置的话会 ...

  7. Eclipse搭建maven web项目

    最近在做做一个小实验,搭建ssm框架,要求使用maven来统一管理jar包,接下来就看如何建立maven项目,首先必须有要有相应的开发环境:JDK和maven,以及配置tomcat. 开发环境搭建可以 ...

  8. eclipse搭建maven project的spring4 spring mvc mybatis

    一,先确定已经安装好了Eclipse Java EE IDE for Web Developers我用的是如下版本 Version: Neon.3 Release (4.6.3)Build id: 2 ...

  9. Java框架搭建-Maven、Mybatis、Spring MVC整合搭建

    1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...

随机推荐

  1. Nodejs应用安全备忘录

    本人新博客www.wjs.photo,基于360的firekylin,感兴趣的可以看看哈 本文翻译自 www.risingstack.com ,并非逐字逐句的翻译,有错误的地方请指出,谢谢啦 应用程序 ...

  2. Js 使用new关键字调用函数和直接调用函数的区别

    最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=na ...

  3. C语言之带有返回值的函数

    带有返回值的函数 语法: 类型 函数名(参数列表){ 函数体; return 数据; } 例: int getSum(int num1,int num2){ int sum = num1 + num2 ...

  4. C语言之形参和实参

    一 形参与实参 1).定义 形参:形式参数. 就是定义函数的时候,写在函数名小括号后面的参数叫形参 实参:实际参数. 就是调用函数的时候,调用函数时写在函数名小括号后面的参数就叫实参 2).注意项 a ...

  5. 用C++实现斐波那契数列

    我是一个C++初学者,控制台输出斐波那契数列. 代码如下: //"斐波那契数列"V1.0 //李国良于2017年1月12日编写完成 #include <iostream> ...

  6. 双色球机选算法java实现

    双色球机选算法java实现 一.代码 package com.hdwang; import java.util.Random; /** * Created by admin on 2017/1/10. ...

  7. 利用fiddler将本地网页放到某个域下

    注: 1)在学习慕课网课程<搜索框制作>中遇到如题困难,查找资料后解决,做此记录.课程网址http://www.imooc.com/video/263. 2)建议同时去学习慕课网课程< ...

  8. KMS服务器搭建

  9. 分享基于.NET MVC+EF CodeFirst+IOC+EasyUI的框架设计

    **注:要做工,没什么时间,等有空时会上传到GIT,项目结构如上,简单的说一下: **支持IOC及多数据库等,各项目由MVC区域隔离: 主要使用基于接口与抽象类进行高度的抽象与接口隔离,与其它框架比较 ...

  10. 系统不识别某些Android设备:adb devices不显示问题解决

    1.获取厂商android设备ID 电脑连接android设备,然后执行命令: system_profiler SPUSBDataType 2.将厂商ID添加到 adb_usb.ini 文件中 Mac ...