专栏首页杂烩springmvc http异步请求 原

springmvc http异步请求 原

    servlet3.0开始支持异步请求,springmvc3.2引入支持异步http。相比于servlet2.5,异步后的程序在系统性能,尤其是吞吐量,资源利用率都能得到极大的提高。下图摘自网友文档(http://www.cnblogs.com/guogangj/p/5457959.html),比较能清晰展示性能之所以提高的原因。

servlet3.0可以不需要web.xml,但不是说必须不能有,就好像spring使用注解一样,xml和注解不冲突。

使用springmvc的异步,首先修改web.xml,使其版本为3.0,然后在所有filter和servlet标签下加上一句<async-supported>true</async-supported>,注意是所有的都要加,否则执行时会报错

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="app_id" version="3.0">
	<display-name>app_id</display-name>
	
	<welcome-file-list>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
		<listener-class>net.bull.javamelody.SessionListener</listener-class>
	</listener>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:config/spring-core.xml</param-value>
	</context-param>
	<servlet>
		<servlet-name>spring-mvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:config/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
		<async-supported>true</async-supported>
	</servlet>
	<servlet-mapping>
		<servlet-name>spring-mvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>
</web-app>

spring和springmvc的配置文件都不需要进行额外的配置,需要修改的是controller所有的方法返回值要么为Callable<V>,要么WebAsyncTask<V>,以下是示例

   @RequestMapping("turnFunction.do")
	public WebAsyncTask<ModelAndView> turnFunction() {
		return new WebAsyncTask<>(() -> {
			return new ModelAndView("system/function/functionlist");
		});
	}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SSM项目搭建之druid 原

    1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 

    尚浩宇
  • SSM项目搭建三(终) 原

    尚浩宇
  • javamoledy使用异常 原

    将xml部分注释,依旧报错,发现MonitoringFilter依然在运行,推测可能这个版本实现了ServletContainerInitializer,自动注...

    尚浩宇
  • 《Spring实战》摘录 - 12

    问题: #6.3.1-1 | 配TilesConfigurer来解析定义 回答:

    用户1335799
  • 快速集成 Flyway、MyBatis、MyBatis-Generator、H2

    导读:如何快速集成 Flyway,MyBatis,MyBatis-Generator,H2? 优质教程请关注微信公众号“Web项目聚集地”

    用户1093975
  • 关于DispatchServlet

    SpringMVC其实是SpringFramework下的一个基于Servlet API的一个子项目。为啥叫SpringMVC呢?是因为它的源码部分的modul...

    大话swift
  • C# Quartz.NET实现动态改变作业调度周期

    Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大

    跟着阿笨一起玩NET
  • 第三十二章:如何获取SpringBoot项目的applicationContext对象

    恒宇少年
  • SEO-站外优化规范

    用户1112962
  • 红包的收益(人人网2017春招真题)

    如你所知,中国素来有发红包的习俗。 新年要到了,小明想要知道朋友圈里每个人的收益。 每个人有mi数量的钱用来发红包,并且这笔钱会平均地发给ki个人(收益...

    AI那点小事

扫码关注云+社区

领取腾讯云代金券