- 浏览: 3362920 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
官方文档:WebSocket Support
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
WebSocket结合hibernate+spring+json 实际经验 http://www.cnblogs.com/lucious/archive/2013/06/05/3118394.html
Spring Framework 4.0 M2 中的 WebSocket 消息架构 http://www.oschina.net/translate/spring-framework-4-0-m2-websocket-messaging-architectures
Spring 4.0 中的WebSocket 架构 http://developer.51cto.com/art/201311/418069.htm
spring4 + WebSocket笔记 http://blog.csdn.net/sl543001/article/details/19343005
基于Tomcat7、Java、WebSocket的服务器推送聊天室 http://blog.csdn.net/leecho571/article/details/9707497
Using websockets in Java using Spring 4 http://syntx.io/using-websockets-in-java-using-spring-4/
STOCK TICKER DEMO WEBAPP USING SPRING 4 WEBSOCKET http://gerrydevstory.com/2014/03/04/stock-ticker-demo-webapp-using-spring-4-websocket/
Using Spring 4 WebSocket, sockJS and Stomp support to implement two way server client communication
http://raymondhlee.wordpress.com/2014/01/19/using-spring-4-websocket-sockjs-and-stomp-support-to-implement-two-way-server-client-communication/
Set up a full broker for Spring 4 STOMP over WebSocket messaging using ActiveMQ http://raymondhlee.wordpress.com/2014/04/12/set-up-a-full-broker-for-spring-4-stomp-over-websocket-messaging-using-activemq/
spring-websocket-portfolio源码 https://github.com/rstoyanchev/spring-websocket-portfolio
WebSocket的JavaScript例子 http://www.xyhtml5.com/websocket-javascript-example.html
默认配置:
自定义配置:
The "STOMP broker relay" in the above configuration is a Spring MessageHandler that handles messages by forwarding them to an external message broker. To do so it establishes TCP connections to the broker, forwards all messages to it, and reversely forwards all messages received from the broker to clients through their WebSocket sessions. Essentially it acts as a "relay" forwarding messages in both directions.
一个例子的源码
附件是两个用到的两个js
web.xml
========================================
log4j.xml
===================================
log4j.properties
===========================================
log4j.rootCategory=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.stdout.Threshold=trace
log4j.category.org.hibernate.SQL=trace
log4j.category.org.hibernate.type=trace
# log4jdbc
log4j.logger.jdbc.sqlonly=INFO
log4j.logger.jdbc.sqltiming=INFO
log4j.logger.jdbc.audit=OFF
log4j.logger.jdbc.resultset=OFF
log4j.logger.jdbc.connection=OFF
jdbc.properties
==========================================
#mysql
#jdbc.dataSource=org.logicalcobwebs.proxool.ProxoolDataSource
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/jbpmtest?useUnicode=true&characterEncoding=utf8
#log4jdbc
jdbc.dataSource=org.springframework.jdbc.datasource.DriverManagerDataSource
jdbc.driver=net.sf.log4jdbc.DriverSpy
jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/jbpmtest?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
sqlserver 2008
#jdbc.dataSource=com.alibaba.druid.pool.DruidDataSource
#jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=jbpmtest
#jdbc.username=sa
#jdbc.password=sa
proxool.alias=ds
proxool.prototypeCount=2
proxool.minimumConnectionCount=5
proxool.maximumConnectionCount=20
proxool.houseKeepingTestSql=select 1
applicationContext.xml
========================================
applicationContext-spring.xml
==========================================
springmvc-servlet.xml
======================================
三个domain
==============================================
两个服务器处理信息的controller
==========================================
两个测试客户端
index.jsp
================================================
hello.jsp
=================================================
附加:pom.xml
===================================
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
WebSocket结合hibernate+spring+json 实际经验 http://www.cnblogs.com/lucious/archive/2013/06/05/3118394.html
Spring Framework 4.0 M2 中的 WebSocket 消息架构 http://www.oschina.net/translate/spring-framework-4-0-m2-websocket-messaging-architectures
Spring 4.0 中的WebSocket 架构 http://developer.51cto.com/art/201311/418069.htm
spring4 + WebSocket笔记 http://blog.csdn.net/sl543001/article/details/19343005
基于Tomcat7、Java、WebSocket的服务器推送聊天室 http://blog.csdn.net/leecho571/article/details/9707497
Using websockets in Java using Spring 4 http://syntx.io/using-websockets-in-java-using-spring-4/
STOCK TICKER DEMO WEBAPP USING SPRING 4 WEBSOCKET http://gerrydevstory.com/2014/03/04/stock-ticker-demo-webapp-using-spring-4-websocket/
Using Spring 4 WebSocket, sockJS and Stomp support to implement two way server client communication
http://raymondhlee.wordpress.com/2014/01/19/using-spring-4-websocket-sockjs-and-stomp-support-to-implement-two-way-server-client-communication/
Set up a full broker for Spring 4 STOMP over WebSocket messaging using ActiveMQ http://raymondhlee.wordpress.com/2014/04/12/set-up-a-full-broker-for-spring-4-stomp-over-websocket-messaging-using-activemq/
spring-websocket-portfolio源码 https://github.com/rstoyanchev/spring-websocket-portfolio
WebSocket的JavaScript例子 http://www.xyhtml5.com/websocket-javascript-example.html
默认配置:
<websocket:message-broker application-destination-prefix="/app"> <websocket:stomp-endpoint path="/hello"> <websocket:sockjs/> </websocket:stomp-endpoint> <websocket:simple-broker prefix="/topic,/queue"/> </websocket:message-broker>
自定义配置:
<websocket:message-broker application-destination-prefix="/app"> <websocket:stomp-endpoint path="/hello"> <websocket:sockjs/> </websocket:stomp-endpoint> <websocket:stomp-broker-relay prefix="/topic,/queue" relay-host="localhost" relay-port="61613" heartbeat-send-interval="20000" heartbeat-receive-interval="20000"/> </websocket:message-broker>
The "STOMP broker relay" in the above configuration is a Spring MessageHandler that handles messages by forwarding them to an external message broker. To do so it establishes TCP connections to the broker, forwards all messages to it, and reversely forwards all messages received from the broker to clients through their WebSocket sessions. Essentially it acts as a "relay" forwarding messages in both directions.
一个例子的源码
附件是两个用到的两个js
web.xml
========================================
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
log4j.xml
===================================
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- Appenders --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p: %c - %m%n" /> </layout> </appender> <!-- Application Loggers --> <logger name="com"> <level value="info" /> </logger> <!-- 3rdparty Loggers --> <logger name="org.springframework.core"> <level value="info" /> </logger> <logger name="org.springframework.beans"> <level value="info" /> </logger> <logger name="org.springframework.context"> <level value="info" /> </logger> <logger name="org.springframework.web"> <level value="info" /> </logger> <!-- Root Logger --> <root> <priority value="warn" /> <appender-ref ref="console" /> </root> </log4j:configuration>
log4j.properties
===========================================
log4j.rootCategory=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
log4j.appender.stdout.Threshold=trace
log4j.category.org.hibernate.SQL=trace
log4j.category.org.hibernate.type=trace
# log4jdbc
log4j.logger.jdbc.sqlonly=INFO
log4j.logger.jdbc.sqltiming=INFO
log4j.logger.jdbc.audit=OFF
log4j.logger.jdbc.resultset=OFF
log4j.logger.jdbc.connection=OFF
jdbc.properties
==========================================
#mysql
#jdbc.dataSource=org.logicalcobwebs.proxool.ProxoolDataSource
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost:3306/jbpmtest?useUnicode=true&characterEncoding=utf8
#log4jdbc
jdbc.dataSource=org.springframework.jdbc.datasource.DriverManagerDataSource
jdbc.driver=net.sf.log4jdbc.DriverSpy
jdbc.url=jdbc:log4jdbc:mysql://localhost:3306/jbpmtest?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
sqlserver 2008
#jdbc.dataSource=com.alibaba.druid.pool.DruidDataSource
#jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=jbpmtest
#jdbc.username=sa
#jdbc.password=sa
proxool.alias=ds
proxool.prototypeCount=2
proxool.minimumConnectionCount=5
proxool.maximumConnectionCount=20
proxool.houseKeepingTestSql=select 1
applicationContext.xml
========================================
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <mvc:annotation-driven /> <context:component-scan base-package="com"> <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation" /> </context:component-scan> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="${jdbc.dataSource}"> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> </beans>
applicationContext-spring.xml
==========================================
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jbpm="http://drools.org/schema/drools-spring" xmlns:kie="http://drools.org/schema/kie-spring" xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://drools.org/schema/drools-spring http://drools.org/schema/drools-spring-1.3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://drools.org/schema/kie-spring http://drools.org/schema/kie-spring-2.0.0.xsd"> <!-- 使用Spring + Hibernate对非JBPM代码的事务管理 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" p:packagesToScan="com.pandy.model"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">false</prop> <!--<prop key="hibernate.cache.use_query_cache">true</prop> <prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop> <prop key="hibernate.cache.use_structured_entries">true</prop> <prop key="hibernate.generate_statistics">true</prop>--> </props> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> </beans>
springmvc-servlet.xml
======================================
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:websocket="http://www.springframework.org/schema/websocket" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> <mvc:annotation-driven/> <mvc:resources mapping="/js/**" location="/js/"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean> <websocket:message-broker application-destination-prefix="/app"> <websocket:stomp-endpoint path="/ws"> <websocket:sockjs/> </websocket:stomp-endpoint> <websocket:simple-broker prefix="/topic"/> </websocket:message-broker> </beans>
三个domain
==============================================
package com.pandy.domain; import java.io.Serializable; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Stock implements Serializable { private static final long serialVersionUID = 1L; private String code = ""; private double price = 0.0; private Date time = new Date(); //.................. }
package com.pandy.domain; public class Greeting { private String content; public Greeting(String content) { this.content = content; } public String getContent() { return content; } }
package com.pandy.domain; public class HelloMessage { private String name; public String getName() { return name; } }
两个服务器处理信息的controller
==========================================
package com.pandy.controller; import com.pandy.domain.Stock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; /** * 服务器定时发送信息到客户端的例子 */ @Controller public class HomeController { @Autowired private SimpMessagingTemplate template; private TaskScheduler scheduler = new ConcurrentTaskScheduler(); private List<Stock> stockPrices = new ArrayList<Stock>(); private Random rand = new Random(System.currentTimeMillis()); /** * 处理信息并发送给客户端 */ private void updatePriceAndBroadcast() { for (Stock stock : stockPrices) { double chgPct = rand.nextDouble() * 5.0; if (rand.nextInt(2) == 1) chgPct = -chgPct; stock.setPrice(stock.getPrice() + (chgPct / 100.0 * stock.getPrice())); stock.setTime(new Date()); } template.convertAndSend("/topic/price", stockPrices); } /** * controller初始化的时候,就初始化一个定时任务 */ @PostConstruct private void broadcastTimePeriodically() { scheduler.scheduleAtFixedRate(new Runnable() { @Override public void run() { System.out.println("自动任务执行====================================" + new Date()); updatePriceAndBroadcast(); } }, 1000); } /** * 增加信息 */ @MessageMapping("/addStock") public void addStock(Stock stock) throws Exception { stockPrices.add(stock); updatePriceAndBroadcast(); } /** * 移除所有 */ @MessageMapping("/removeAllStocks") public void removeAllStocks() { stockPrices.clear(); updatePriceAndBroadcast(); } @RequestMapping(value = "/", method = RequestMethod.GET) public String home() { return "home"; } }
package com.pandy.controller; import com.pandy.domain.Greeting; import com.pandy.domain.HelloMessage; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; import java.util.Date; /** * 由客户端触发,并接受服务器发送信息的例子 */ @Controller public class MessageController { @MessageMapping("/greeting") @SendTo("/topic/greetings") public Greeting greeting(HelloMessage message) throws Exception { System.out.println("MessageController====================================>客户端连接"); return new Greeting("["+(new Date())+"] 服务器返回: Hello,客户端输入信息< " + message.getName() + ">"); } }
两个测试客户端
index.jsp
================================================
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Spring + WebSocket 例子</title> <script src="/SpringWebSocket/js/sockjs-0.3.min.js"></script> <script src="/SpringWebSocket/js/stomp.js"></script> <script src="/SpringWebSocket/js/jquery-1.10.2.js"></script> <script src="/SpringWebSocket/js/jquery-ui-1.10.4.custom.js"></script> <script src="/SpringWebSocket/js/jquery.json.js"></script> <style> table{ border: 1px solid #000000; } table th{ border: 1px solid #000000; background-color: #889966; } table td{ border: 1px solid #000000; background-color: #00ff00; } </style> <script> //创建sockJS协议 var socket = new SockJS("/SpringWebSocket/ws"); var stompClient = Stomp.over(socket); //连接服务器 stompClient.connect("guest", "guest", function () { //成功连接后,设定接受服务器的地址和处理方法 stompClient.subscribe('/topic/price', function (frame) { //服务器返回请求处理 var prices = JSON.parse(frame.body); $('#price').empty(); for (var i in prices) { var price = prices[i]; $('#price').append( $('<tr>').append( $('<td>').html(price.code), $('<td>').html(price.price.toFixed(2)), $('<td>').html(price.timeStr) ) ); } }); }, function (error) { //连接出现错误回调函数 alert(error.headers.message); }); // Register handler for add button $(document).ready(function () { $('.add').click(function (e) { e.preventDefault(); var code = $('.new .code').val(); var price = Number($('.new .price').val()); var jsonstr = JSON.stringify({ 'code': code, 'price': price }); //发送信息给服务器 stompClient.send("/app/addStock", {}, jsonstr); return false; }); $('.remove-all').click(function (e) { e.preventDefault(); //发送信息给服务器 stompClient.send("/app/removeAllStocks"); return false; }); }); </script> </head> <body> <h1>Spring + WebSocket 例子</h1> <p class="new"> 编码: <input type="text" class="code"/> 价格: <input type="text" class="price"/> <button class="add">增加</button> <button class="remove-all">移除所有</button> </p> <table style="width: 1000px;"> <thead> <tr> <th style="width: 30%">编码</th> <th style="width: 30%">价格</th> <th style="width: 40%">时间</th> </tr> </thead> <tbody id="price"> </tbody> </table> 测试方式: 提交信息到服务器,服务器会定时发送数据到页面,不管多少个浏览器打开都能接收服务器发送来的信息。 </body> </html>
hello.jsp
=================================================
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ page session="false" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Spring + WebSocket Hello world例子</title> <script src="/SpringWebSocket/js/sockjs-0.3.min.js"></script> <script src="/SpringWebSocket/js/stomp.js"></script> <script src="/SpringWebSocket/js/jquery-1.10.2.js"></script> <script src="/SpringWebSocket/js/jquery-ui-1.10.4.custom.js"></script> <script src="/SpringWebSocket/js/jquery.json.js"></script> <script> //创建sockJS协议 var socket = new SockJS("/SpringWebSocket/ws"); var stompClient = Stomp.over(socket); //连接服务器 stompClient.connect("guest", "guest", function () { $("#recFromServer").append("<br>" + "成功连接服务器.!"); //成功连接后,设定接受服务器的地址和处理方法 stompClient.subscribe('/topic/greetings', function (greeting) { var content = JSON.parse(greeting.body).content; $("#recFromServer").append("<br>" + content); }); }, function (error) { //连接出现错误回调函数 alert(error.headers.message); }); function sendMessage() { //发送信息给服务器 stompClient.send("/app/greeting", {}, JSON.stringify({ 'name': $("#message").val() })); } </script> </head> <body> 输入名称: <input id="message" type="text"> <input type="button" onclick="sendMessage()" value="发送到服务器"> <div id="recFromServer"></div> 测试方式: 用两个浏览器打开这个页面,然后一个页面提交信息,它能接收到服务器的数据,同时另一个页面也能接收到服务器发送的数据。 </body> </html>
附加:pom.xml
===================================
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SpringWebSocket</groupId> <artifactId>SpringWebSocket</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <cglib.version>2.2.2</cglib.version> <mysql.version>5.1.30</mysql.version> <slf4j.version>1.6.1</slf4j.version> <log4j.version>1.2.16</log4j.version> <spring.version>4.0.5.RELEASE</spring.version> <spring.asm.version>3.1.4.RELEASE</spring.asm.version> <aspectj.version>1.6.2</aspectj.version> <hibernate.version>4.3.5.Final</hibernate.version> <hibernateCommAnn.version>3.2.0.Final</hibernateCommAnn.version> <hibernateAnn.version>3.5.6-Final</hibernateAnn.version> <jdbc.groupId>com.alibaba</jdbc.groupId> <jdbc.artifactId>druid</jdbc.artifactId> <jdbc.version>1.0.4</jdbc.version> <commons.lang.version>2.6</commons.lang.version> <commons.lang3.version>3.1</commons.lang3.version> <tomcat.ws.version>7.0.53</tomcat.ws.version> </properties> <dependencies> <!-- Spring 3 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-asm</artifactId> <version>${spring.asm.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!--<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <optional>true</optional> <scope>test</scope> </dependency>--> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> <!-- <dependency> <groupId>org.apache.openjpa</groupId> <artifactId>openjpa-persistence</artifactId> <version>2.2.2</version> </dependency> --> <!-- Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-commons-annotations</artifactId> <version>${hibernateCommAnn.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>${hibernateAnn.version}</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>${cglib.version}</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> <!-- JBOSS Cache & Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>4.2.1.Final</version> </dependency> <!--<dependency> <groupId>hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>1.8.0.4</version> </dependency>--> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-testing</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.4.3</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!--<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency>--> <!-- WebSocket for tomcat --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-coyote</artifactId> <version>${tomcat.ws.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <version>${tomcat.ws.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-annotations-api</artifactId> <version>${tomcat.ws.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-messaging</artifactId> <version>${spring.version}</version> </dependency> <!-- Log4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> <exclusions> <exclusion> <artifactId>log4j</artifactId> <groupId>log4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.lazyluke</groupId> <artifactId>log4jdbc-remix</artifactId> <version>0.2.7</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>15.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>sqljdbc</groupId> <artifactId>sqljdbc</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>${jdbc.groupId}</groupId> <artifactId>${jdbc.artifactId}</artifactId> <version>${jdbc.version}</version> </dependency> <!-- JSON --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.3.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.3.2</version> </dependency> <!--<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-jaxrs</artifactId> <version>1.7.1</version> </dependency>--> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>${commons.lang.version}</version> </dependency> <!--<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons.lang3.version}</version> </dependency>--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons.lang3.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://localhost:8080/manager/text</url> <username>admin</username> <password>admin</password> <path>/SpringWebSocket</path> </configuration> </plugin> </plugins> </build> </project>
- sockjs_stomp.rar (14.3 KB)
- 下载次数: 49
- SpringWebSocket.rar (306.9 KB)
- 下载次数: 94
发表评论
-
Spring Boot 属性配置
2016-06-24 11:04 1147Spring Boot 属性配置和使用 http://blog ... -
Spring Boot 集成MyBatis
2016-06-24 10:55 1987Spring Boot 集成MyBatis http://bl ... -
Spring MVC防重复提交
2016-06-17 15:47 1588http://my.oschina.net/zyqjustin ... -
Spring容器加载完之后执行特定任务
2016-06-17 15:36 2241http://my.oschina.net/simpleton ... -
使用spring-session和shiro来代理session的配置
2016-06-16 11:21 11984使用spring-session和redis来代理sessio ... -
JSTL 的 if else : 有 c:if 没有 else 的处理
2016-06-14 09:52 1290http://blog.csdn.net/xiyuan1999 ... -
spring mvc 请求转发和重定向
2016-06-14 09:48 1350http://blog.csdn.net/jackpk/art ... -
mvc:view-controller
2016-05-18 10:26 1049http://blog.csdn.net/lzwglory/a ... -
spring配置事物的方式:注解和aop配置
2016-05-14 00:26 4058参考: Spring AOP中pointcut express ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2239http://www.oschina.net/p/uncode ... -
写个mybatis的拦截插件,实现将所有执行的sql写入文件里
2016-05-12 15:59 5059原文 http://3131854.blog.51cto.co ... -
Mybatis分库分表扩展插件
2016-05-12 15:47 1586http://fangjialong.iteye.com/bl ... -
spring+mybatis+atomikos 实现JTA事务
2016-05-11 22:00 5472sping配置多个数据源 不同用户操作不同数据库 http:/ ... -
Spring中使用注解 @Scheduled执行定时任务
2016-05-10 09:39 1531原文:http://dwf07223.blog.51cto.c ... -
Spring中配置Websocket
2016-05-05 16:55 1241spring+websocket整合(springMVC+sp ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1271集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4732使用Spring-data进行Redis操作 http://z ... -
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
2016-05-03 13:35 1029Spring4新特性——集成Bean Validation 1 ... -
SpringMVC介绍之Validation
2016-05-03 13:10 951SpringMVC介绍之Validation http://h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3035原文: http://www.programgo.com/ar ...
相关推荐
前端使用Vue 2.x + Websocket axiso与ElementUI 实现页面展示与在线聊天。 具备以下功能:用户登录注册,在线聊天功能。 基于SpringBoot整合SpringMvc Websocket实现注册登录于在线聊天功能,使用JWT做...
Spring-MVC-React-WebSocket Spring MVC 4.x + React.js + WebSocket + Sock.js首先启动客户端cd客户端纱线安装纱线起头后端设置tomcat服务器并部署战争。
使用WebSocket作为前后端连接方式, SpringMVC+JSP+WebSocket, 即时通讯, 最近聊天记录, 好友列表. 需要配置D盘下创建好对应文件, 图片需要配置nginx才可以访问: server { listen 8888; server_name localhost; ...
aopalliance-1.0.jar commons-logging-1.1.1.jar spring-aop-4.2.4.RELEASE.jar spring-aspects-4.2.4.RELEASE.jar spring-beans-4.2.4.RELEASE.jar spring-context-4.2.4....spring-websocket-4.2.4.RELEASE.jar
xml java系统源码 源码DEBUG专用工程。 微信搜索:'菜鸟封神记'公众号,定期分享Spring源码系列...主要提供对SpringMVC的支持,例如SpringMVC中的DispatcherServlet就是该模块中提供的; spring-websocket: 提供对We
196 7.6 WebSocket .... ....................................... 197 7.7 基于Bootstrap 和AngularJS 的现代Web 应用 .................. 212 第8 章 Spring Boot 的数据访问 .... .............. 233 8.1 引入...
第一部分 点睛Spring 4.x 第1 章 Spring 基础 2 1.1 Spring 概述 2 1.1.1 Spring 的简史 2 1.1.2 Spring 概述 3 1.2 Spring 项目快速搭建 5 1.2.1 Maven 简介 6 1.2.2 Maven 安装 6 1.2.3 Maven 的pom.xml 7 1.2.4 ...
本课程对应着系统架构1.0,即第一阶段,主要的目标在于实现一个完整的系统,可以学到的技术还是比较多的:Spring Boot2.X、Java基础、Java8、JUC、NIO、微服务、分布式、系统架构设计、SpringMVC、MySQL、Luc