1.配置web.xml

  在web.xml配置使用springmvc框架,其他配置略。

  1. <display-name>xxx.com</display-name>
  2.  
  3. <!-- 配置Spring MVC DispatcherServlet -->
  4. <servlet>
  5. <servlet-name>MVC DispatcherServlet</servlet-name>
  6. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  7. <!-- 初始化参数 -->
  8. <init-param>
  9. <!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
  10. <param-name>contextConfigLocation</param-name>
  11. <!-- 下面这个参数是指定springmvc的配置文件所在 -->
  12. <param-value>classpath:com/jieli/config/springmvc-context.xml</param-value>
  13. </init-param>
  14. <load-on-startup>1</load-on-startup>
  15. </servlet>
  16.  
  17. <!-- 配置DispatcherServlet所需要拦截的 url -->
  18. <servlet-mapping>
  19. <servlet-name>MVC DispatcherServlet</servlet-name>
  20. <!-- <url-pattern>/</url-pattern> 这样配置的话,所有页面都会进入拦截器
  21. 这个在springmvc 的配置文件里还有对其进行再次配置-->
  22. <url-pattern>/</url-pattern>
  23. </servlet-mapping>

2.配置springmvc-context.xml

  根据web.xml里面的指定配置springmvc 核心代码在第18-19行和第85-92行进行配置。

  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"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:util="http://www.springframework.org/schema/util"
  7. xmlns:mvc="http://www.springframework.org/schema/mvc"
  8. xmlns:task="http://www.springframework.org/schema/task"
  9. xsi:schemaLocation="
  10. http://www.springframework.org/schema/beans
  11. http://www.springframework.org/schema/beans/spring-beans.xsd
  12. http://www.springframework.org/schema/util
  13. http://www.springframework.org/schema/util/spring-util.xsd
  14. http://www.springframework.org/schema/context
  15. http://www.springframework.org/schema/context/spring-context.xsd
  16. http://www.springframework.org/schema/mvc
  17. http://www.springframework.org/schema/mvc/spring-mvc.xsd
  18. http://www.springframework.org/schema/task
  19. http://www.springframework.org/schema/task/spring-task-3.0.xsd" >
  20.  
  21. <!-- ==============基础配置 开始============= -->
  22. <!-- 开启controller注解支持 -->
  23. <!-- use-default-filters="false" 只扫描指定的注解 -->
  24. <context:component-scan base-package="com.jieli.controller" use-default-filters="false">
  25. <context:include-filter type="annotation"
  26. expression="org.springframework.stereotype.Controller" />
  27. </context:component-scan>
  28.  
  29. <!-- 视图解析器 -->
  30. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  31. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  32. <property name="contentType" value="text/html"/>
  33. <property name="prefix" value="/WEB-INF/views/"/>
  34. <property name="suffix" value=".jsp"/>
  35. </bean>
  36.  
  37. <!-- 如果当前请求为"/"时,则转发到"index" -->
  38. <mvc:view-controller path="/" view-name="forward:index"/>
  39.  
  40. <!-- 默认的注解映射的支持 -->
  41. <mvc:annotation-driven />
  42.  
  43. <!-- 静态资源映射 不经过controller-->
  44. <mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
  45. <mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
  46. <mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
  47. <mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
  48. <mvc:resources mapping="/images/**" location="/WEB-INF/images/" />
  49. <mvc:resources mapping="/html/**" location="/WEB-INF/html/" />
  50. <mvc:resources mapping="/jsp/**" location="/WEB-INF/jsp/" />
  51. <!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
  52. <mvc:default-servlet-handler/>
  53.  
  54. <!-- 自定义拦截器 准备用于权限管理 -->
  55. <!-- <mvc:interceptors> -->
  56. <!-- 如果不定义 mvc:mapping path 将拦截所有的URL请求 -->
  57. <!-- <bean class="com.demo.web.auth.AuthInterceptor"></bean> -->
  58. <!-- <mvc:interceptor> -->
  59. <!-- <mvc:mapping path="/secure/*"/> -->
  60. <!-- <bean class="*****.***Interceptor"></bean> -->
  61. <!-- </mvc:interceptor> -->
  62. <!-- </mvc:interceptors> -->
  63.  
  64. <!-- ==============基础配置 结束============= -->
  65.  
  66. <!-- =========下面的配置是一些插件化配置====== -->
  67. <!-- 支持上传文件 -->
  68. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  69. <!-- 设置上传文件的最大尺寸为1MB -->
  70. <property name="maxUploadSize">
  71. <value>2048576</value>
  72. </property>
  73. <property name="defaultEncoding">
  74. <value>UTF-8</value>
  75. </property>
  76. </bean>
  77.  
  78. <!-- 权限控制, 作用是让所有的请求动通过拦截器 -->
  79. <mvc:interceptors>
  80. <!-- 如果不定义 mvc:mapping path 将拦截所有的URL请求 -->
  81. <bean class="com.jieli.interceptor.AuthInterceptor"></bean>
  82. </mvc:interceptors>
  83.  
  84. <!-- 增加定时任务插件 -->
  85. <context:annotation-config></context:annotation-config>
  86. <!-- spring 扫描注解配置 -->
  87. <context:component-scan base-package="com.jieli.plugins.timetask">
  88. </context:component-scan>
  89. <!-- 开启这个配置 spring才能识别@Scheduled注解 -->
  90. <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
  91. <task:scheduler id="qbScheduler" pool-size="10"/>
  92.  
  93. <!-- 增加邮件 -->
  94. </beans>

3.使用注解方式

  1. package com.jieli.plugins.timetask;
  2.  
  3. import org.springframework.scheduling.annotation.Scheduled;
  4. import org.springframework.stereotype.Component;
  5.  
  6. @Component("taskJob")
  7. public class TestEverySecond {
  8. @Scheduled(cron = "1/5 * * * * ?")
  9. public void testTask(){
  10. System.out.println(System.currentTimeMillis());
  11. }
  12. }

  这样就可以了,就会每5秒进行一次任务。一般做一些定时通知,定时备份,定时清理等任务。

4.出现问题及解决

  这样配置完成后,发现启动服务后,这个testTask任务,都是执行两次的。查看tomcat打印的日志,发现定时任务的启动两次的,或者说整个web服务是启动两次的。以前没有这个定时任务,由于启动时日志太多,也没有报错,所以一直没有太注意。web容器启动了两次服务,就产生了两个定时器实例。经上网查询,是有两种可能,一个是spring配置出错,一个是tomcat配置出错。关于配置出错,请参看这篇文章: http://blog.csdn.net/chaijunkun/article/details/6925889 。

  我是tomcat配置出错。具体出现问题如下:

  默认tomcat配置文件conf/server.xml 里面Host段是这个样子的

  1. <Host name="localhost" appBase="webapps"
  2. unpackWARs="true" autoDeploy="true"
  3. xmlValidation="false" xmlNamespaceAware="false">
  4. </Host>

  我们把在eclipse下的项目部署到webapps文件目录下后,启动服务后,在浏览器中访问的地址是 Http://127.0.0.1:8080/<项目名称>/  这样子进行访问。当我们不要项目名称作为访问路径,想通过ip、端口直接进行访问时,配置如下:

  1. <Host name="localhost" appBase="webapps"
  2. unpackWARs="true" autoDeploy="true"
  3. xmlValidation="false" xmlNamespaceAware="false">
  4.  
  5. <Context path="" docBase="/JieLiERP" debug="0" reloadable="true" />
  6.  
  7. </Host>

  增加context段,进行配置。就这样一直无事,直到最近增加定时任务功能,才发现原来这样配置会出现项目启动两次的情况。也是导致定时任务被调用两次的原因。我的解决办法是 配置如下:

  1. <Host name="localhost" appBase=""
  2. unpackWARs="true" autoDeploy="true"
  3. xmlValidation="false" xmlNamespaceAware="false">
  4.  
  5. <Context path="" docBase="/webapps/JieLiERP" debug="0" reloadable="true" />
  6.  
  7. </Host>

  就这样解决问题。 还有Context段,tomcat 6.0 和 tomcat 7.0及以上的配置有点区别

  1. <!-- tomcat 6.0 -->
  2. <Context path="" docBase="/webapps/JieLiERP" debug="0" reloadable="true" />
  3.  
  4. <!-- tomcat 7.0及以上 -->
  5. <Context path="/" docBase="webapps/JieLiERP" debug="0" reloadable="true" />

  本文地址: http://www.cnblogs.com/wunaozai/p/5026765.html

JavaWEB springmvc 使用定时任务的更多相关文章

  1. SpringMVC中定时任务配置

    在项目中使用定时任务是常有的事,比如每天定时进行数据同步或者备份等等. 以前在从事C语言开发的时候,定时任务都是通过写个shell脚本,然后添加到linux定时任务中进行调度的. 现在使用Spring ...

  2. springmvc添加定时任务

    springmvc.xml文件中添加如下配置 <bean id="ClearTempRoomLogTask" class="com.test.listener.St ...

  3. springMvc 添加定时任务

    1.创建定时类 import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stere ...

  4. Springmvc配置定时任务注解开发

    1.添加命名空间和xsd约束 xmlns:task="http://www.springframework.org/schema/task" http://www.springfr ...

  5. springMVC定时任务总是执行两次

    情况: springmvc的定时任务在本机上测试的时候没有问题,但是放到测试服务器上的时候总是执行两次: 探索:(网上搜索) 一.spring注入的时候实例化了多次,说是spring-servlet. ...

  6. springmvc 学习笔记

    @Autowired,@RequestMapping,@RequestParam 使用该注解,引入对象时, 可以省略setter getter.减少代码显示. @AutowiredSimService ...

  7. spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务

    spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务 >>>>>>>>>>>> ...

  8. javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)

    项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...

  9. Java SpringMVC 定时任务

    1.web.xml 2.spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...

随机推荐

  1. Lotusscript统计在线用户数

    使用notessession的SendConsoleCommand方法向服务器控制台发送“show inetusers”命令,该命令返回一个结果(字符串),字符串类似如下: admin   192.1 ...

  2. 转 linux Crontab 使用

    cron用法说明 cron的用法老是记不住,索性写下来备忘.下文内容大部分是根据<Cron Help Guide>翻译而来,有些部分是自己加上的. 全文如下: cron来源于希腊单词chr ...

  3. HTML5音频audio属性

    来源:https://segmentfault.com/a/1190000008932943?utm_source=tuicool&utm_medium=referral audio 的控制函 ...

  4. 基于全注解的SpringMVC+Spring4.2+hibernate4.3框架搭建

    概述 从0到1教你搭建spring+springMVC+hibernate整合框架,基于注解. 本教程框架为基于全注解的SpringMVC+Spring4.2+hibernate4.3,开发工具为my ...

  5. MYSQL多行合并成一行多列

    ), VALUE )) INSERT INTO # VALUES (,,'), (,,'), (,,'), (,,'), (,,'), (,,'), (,,') SELECT code,MIN(nam ...

  6. 解决FatalThrowableError in EloquentUserProvider.php line 126: Class '\App\User'问题

    解决方法:http://stackoverflow.com/questions/28516454/laravel-5-user-model-not-found 总结:是因为我把app下的User移动到 ...

  7. Swift下的基于UIView的位置属性扩展

    一个比较简单能满足大部分需求的extensin,如下: swift 的基于UIView的位置属性 包含: 上下左右:left.right.top.botom 高宽:height.width 中心点:c ...

  8. 开始 App前 需要考虑的几项

    来源:Limboy's HQ http://t.cn/R5sEDMJ 随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...

  9. STRTOK函数和STRTOK_R函数

    STRTOK函数和STRTOK_R函数 注:本文转载自博客园,感谢作者整理! 1.一个应用实例 网络上一个比较经典的例子是将字符串切分,存入结构体中.如,现有结构体 typedef struct pe ...

  10. Ubuntu菜鸟入门(十二)—— 主题美化

    一.unity-tweak-tool 1.软件介绍 调整 Unity 桌面环境,还是推荐使用Unity Tweak Tool,这是一个非常好用的 Unity 图形化管理工具,可以修改工作区数量.热区等 ...