├── README.md ├── pom.xml └── src └── main ├── java ├── com │ └── liu │ │ ├── Realm │ │ └── myrealm.java │ │ ├── controller │ │ ├── LoginController.java │ │ └── UserController.java │ │ ├── dao │ │ ├── UserDao.java │ │ └── UserLogDao.java │ │ ├── mapper │ │ ├── userLogMapper.xml │ │ └── userMapper.xml │ │ ├── pojo │ │ ├── User.java │ │ └── UserLog.java │ │ ├── service │ │ ├── UserLogService.java │ │ ├── UserService.java │ │ └── impl │ │ │ ├── UserLogServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ ├── utils │ │ ├── DateUtil.java │ │ └── WordDefined.java │ │ └── webSocket │ │ ├── ChatServer.java │ │ ├── HttpSessionConfigurator.java │ │ ├── VideoServer.java │ │ └── five_chessServer.java └── test │ ├── testmybatis.java │ └── testtest.java ├── resources ├── ApplicationContext.xml ├── jdbc.properties ├── log4j2.xml └── spring-mvc.xml └── webapp ├── AI_five-chess.jsp ├── WEB-INF ├── lib │ ├── json-lib-2.4-jdk15.jar │ ├── json.jar │ └── ueditor-1.1.2.jar └── web.xml ├── about.jsp ├── errorinfo.jsp ├── file ├── jar │ ├── aopalliance-1.0.jar │ ├── commons-beanutils-1.9.2.jar │ ├── commons-codec-1.10.jar │ ├── commons-collections-3.2.1.jar │ ├── commons-dbcp-1.4.jar │ ├── commons-fileupload-1.3.1.jar │ ├── commons-io-2.4.jar │ ├── commons-lang-2.6.jar │ ├── commons-lang3-3.4.jar │ ├── commons-logging-1.1.1.jar │ ├── commons-pool-1.5.4.jar │ ├── fastjson-1.2.7.jar │ ├── hamcrest-core-1.3.jar │ ├── jackson-annotations-2.2.3.jar │ ├── jackson-core-2.2.3.jar │ ├── jackson-core-asl-1.9.13.jar │ ├── jackson-databind-2.2.3.jar │ ├── jackson-mapper-asl-1.9.13.jar │ ├── jcl-over-slf4j-1.7.21.jar │ ├── json-20150729.jar │ ├── jstl-1.2.jar │ ├── jul-to-slf4j-1.7.21.jar │ ├── junit-4.11.jar │ ├── log4j-api-2.5.jar │ ├── log4j-core-2.5.jar │ ├── log4j-jul-2.5.jar │ ├── log4j-slf4j-impl-2.5.jar │ ├── log4j-web-2.5.jar │ ├── mybatis-3.2.6.jar │ ├── mybatis-spring-1.2.3.jar │ ├── mysql-connector-java-5.1.25.jar │ ├── ojdbc6-10.2.0.jar │ ├── slf4j-api-1.7.21.jar │ ├── spring-aop-4.2.4.RELEASE.jar │ ├── spring-beans-4.2.4.RELEASE.jar │ ├── spring-context-4.2.4.RELEASE.jar │ ├── spring-context-support-4.2.4.RELEASE.jar │ ├── spring-core-4.2.4.RELEASE.jar │ ├── spring-data-commons-core-1.4.1.RELEASE.jar │ ├── spring-expression-4.2.4.RELEASE.jar │ ├── spring-jdbc-4.2.4.RELEASE.jar │ ├── spring-messaging-4.2.4.RELEASE.jar │ ├── spring-oxm-4.2.4.RELEASE.jar │ ├── spring-test-4.2.4.RELEASE.jar │ ├── spring-tx-4.2.4.RELEASE.jar │ ├── spring-web-4.2.4.RELEASE.jar │ ├── spring-webmvc-4.2.4.RELEASE.jar │ └── spring-websocket-4.2.4.RELEASE.jar ├── photo │ ├── five_chess.png │ ├── index.png │ ├── info.png │ ├── log.png │ ├── login.png │ ├── setting.png │ └── sysset.png └── sql │ └── webchat.sql ├── five-chess.jsp ├── help.jsp ├── index.jsp ├── info-setting.jsp ├── information.jsp ├── log.jsp ├── login.jsp ├── main.jsp ├── register.jsp ├── static ├── plugins │ ├── amaze │ │ ├── css │ │ │ ├── admin.css │ │ │ ├── amazeui.css │ │ │ ├── amazeui.flat.css │ │ │ ├── amazeui.flat.min.css │ │ │ ├── amazeui.min.css │ │ │ └── app.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── i │ │ │ ├── app-icon72x72@2x.png │ │ │ ├── examples │ │ │ │ ├── admin-chrome.png │ │ │ │ ├── admin-firefox.png │ │ │ │ ├── admin-ie.png │ │ │ │ ├── admin-opera.png │ │ │ │ ├── admin-safari.png │ │ │ │ ├── adminPage.png │ │ │ │ ├── blogPage.png │ │ │ │ ├── landing.png │ │ │ │ ├── landingPage.png │ │ │ │ ├── loginPage.png │ │ │ │ └── sidebarPage.png │ │ │ ├── favicon.png │ │ │ └── startup-640x1096.png │ │ └── js │ │ │ ├── amazeui.ie8polyfill.js │ │ │ ├── amazeui.ie8polyfill.min.js │ │ │ ├── amazeui.js │ │ │ ├── amazeui.min.js │ │ │ ├── amazeui.widgets.helper.js │ │ │ ├── amazeui.widgets.helper.min.js │ │ │ ├── app.js │ │ │ ├── handlebars.min.js │ │ │ └── jquery.min.js │ ├── contextjs │ │ ├── css │ │ │ └── context.standalone.css │ │ └── js │ │ │ └── context.js │ ├── jquery │ │ └── jquery-2.1.4.min.js │ ├── layer │ │ ├── extend │ │ │ └── layer.ext.js │ │ ├── layer.js │ │ └── skin │ │ │ ├── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ │ ├── layer.css │ │ │ └── layer.ext.css │ ├── laypage │ │ ├── laypage.js │ │ └── skin │ │ │ └── laypage.css │ └── sockjs │ │ └── sockjs.js └── source │ ├── css │ ├── chess.css │ ├── login.css │ └── mosto.css │ ├── img │ ├── adm.png │ ├── avtar.png │ ├── baizi.jpg │ ├── bg1.jpg │ ├── bg2.jpg │ ├── bg3.jpg │ ├── bg4.png │ ├── bg5.jpg │ ├── bizhi.jpg │ ├── bizhi1.png │ ├── close.png │ ├── default_head.jpg │ ├── heizi.jpg │ ├── key.png │ ├── ricepaper.png │ ├── robot.jpg │ ├── touxiang.png │ └── touxiang1.png │ └── js │ ├── ai2.js │ ├── ai2.min.js │ ├── board.js │ ├── jcanvas.min.js │ └── jquery.min.js ├── system-setting.jsp └── view └── include ├── commonfile.jsp ├── footer.jsp ├── header.jsp └── sidebar.jsp /README.md: -------------------------------------------------------------------------------- 1 | # SSM_websocketchat
2 | 一个用SSM以及WebSocket写的一个聊天室,其中还有联机五子棋以及AI五子棋
3 | #################################
4 | 介绍:
5 | 此项目利用`SpringMVC+mybatis+spring`编写的一个聊天室,聊天功能实现利用WebSocket。
6 | #################################
7 | 所用技术:
8 | 开发工具:`eclipse`
9 | 项目管理:`Maven`
10 | 使用语言:`Java`
11 | 使用的框架:`SpringMVC+mybatis+spring`
12 | 安全认证:`shiro`
13 | 数据库:`mysql`
14 | 前端采用:`Amaze UI`
15 | 弹窗和分页:`Layer`
16 | #################################
17 | 前台与后台交互
18 | 前台与后台交互的JSON格式为:
19 | 聊天信息的JSON:
20 | "message" : {
21 | "from" : "xxx",
22 | "to" : "xxx",
23 | "content" : "xxxxxx",
24 | "time" : "xxxx.xx.xx"
25 | },
26 | "type" : {
27 | "xxx"
28 | },
29 | "list" : {
30 | ["xx","xx"]
31 | }
32 | from:代表是谁发送的信息,to代表发送给谁,content:代表发送的内容,time:发送的时间。
33 | type:代表类型,代表是什么JSON,聊天还是其他,list:后台统计在线人数,然后前台解析展示。
34 | 五子棋的JSON:
35 | {"zuobiao":{
36 | "x":"xx",
37 | "y":"yy",
38 | }
39 | type:"zuobiaoxy"
40 | }
41 | x:代表下子的x轴,y:代表下子的y轴
42 | type:zuobiaoxy 标记这个JSON格式为棋子JSON
43 | 五子棋提示JSON:
44 | {
45 | "message" : "提示内容",
46 | "type" :"tishi",
47 | "list" : ["xx","xx"]
48 | }
49 | message:后台提示内容,type:提示JSON,list:下棋的人数,以及观战的人数。

50 | #########################
51 | 实现的功能:
52 | 其中简要的功能有使用shiro进行账号登陆、注册,与其他聊天,人工智聊天,资料查看以及查看别人资料,个人信息修改
53 | 头像上传,修改,密码修改,对日志查看,系统修改包括,日志分页大小,个人信息是否允许别人查看,
54 | 最后还有一个与别人对战的五子棋,可以让其他人进行观战,并且有可以自己与人机进行对战。
55 | ########################
56 | 使用方法:
57 | 下载好项目后,导入文件夹,`webpapp`中有`file`中的`sql`文件,倒入此文件到数据库,修改`resource`文件的`jdbc.properties`,修改数据库账号密码,运行程序。
58 | ########################
59 | 登陆界面: 60 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/login.png) 61 | 聊天主界面: 62 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/index.png) 63 | 个人信息界面: 64 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/info.png) 65 | 系统日志界面: 66 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/log.png) 67 | 个人设置界面: 68 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/setting.png) 69 | 系统设置界面: 70 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/sysset.png) 71 | 联机五子棋界面: 72 | ![](https://github.com/SinceNovember/websockchat/blob/master/src/main/webapp/file/photo/five_chess.png) 73 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.liu.SSM 5 | WebSocketchat 6 | war 7 | 0.0.1-SNAPSHOT 8 | WebSocketchat Maven Webapp 9 | http://maven.apache.org 10 | 11 | UTF-8 12 | 4.2.4.RELEASE 13 | 3.2.6 14 | 5.1.38 15 | 5.19.0 16 | 3.2.0 17 | 1.6.1 18 | 2.5 19 | 1.7.21 20 | 21 | 22 | 23 | 24 | 25 | mysql 26 | mysql-connector-java 27 | 5.1.25 28 | 29 | 30 | 31 | 32 | org.springframework 33 | spring-websocket 34 | ${spring.version} 35 | 36 | 37 | org.springframework 38 | spring-messaging 39 | ${spring.version} 40 | 41 | 42 | 43 | 44 | 45 | junit 46 | junit 47 | 4.11 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | jstl 56 | jstl 57 | 1.2 58 | 59 | 60 | 61 | 62 | 63 | javax 64 | javaee-api 65 | 7.0 66 | provided 67 | 68 | 69 | javax.servlet 70 | javax.servlet-api 71 | 3.0.1 72 | provided 73 | 74 | 75 | javax.servlet.jsp 76 | jsp-api 77 | 2.2 78 | provided 79 | 80 | 81 | 82 | 83 | 84 | com.alibaba 85 | fastjson 86 | 1.2.7 87 | 88 | 89 | org.json 90 | json 91 | 20150729 92 | 93 | 94 | org.codehaus.jackson 95 | jackson-mapper-asl 96 | 1.9.13 97 | 98 | 99 | 100 | 101 | 102 | com.fasterxml.jackson.core 103 | jackson-core 104 | 2.2.3 105 | 106 | 107 | com.fasterxml.jackson.core 108 | jackson-databind 109 | 2.2.3 110 | 111 | 112 | com.fasterxml.jackson.core 113 | jackson-annotations 114 | 2.2.3 115 | 116 | 117 | 118 | 119 | org.slf4j 120 | slf4j-api 121 | ${slf4j.version} 122 | 123 | 124 | org.slf4j 125 | jcl-over-slf4j 126 | ${slf4j.version} 127 | runtime 128 | 129 | 130 | 131 | org.slf4j 132 | jul-to-slf4j 133 | ${slf4j.version} 134 | 135 | 136 | 137 | org.apache.logging.log4j 138 | log4j-core 139 | ${log4j.version} 140 | 141 | 142 | org.apache.logging.log4j 143 | log4j-api 144 | ${log4j.version} 145 | 146 | 147 | 148 | org.apache.logging.log4j 149 | log4j-slf4j-impl 150 | ${log4j.version} 151 | 152 | 153 | 154 | org.apache.logging.log4j 155 | log4j-web 156 | ${log4j.version} 157 | 158 | 159 | 160 | org.apache.logging.log4j 161 | log4j-jul 162 | ${log4j.version} 163 | 164 | 165 | 166 | 167 | org.apache.shiro 168 | shiro-core 169 | 1.2.5 170 | 171 | 172 | org.apache.shiro 173 | shiro-web 174 | 1.2.5 175 | 176 | 177 | org.apache.shiro 178 | shiro-spring 179 | 1.2.5 180 | 181 | 182 | 183 | 184 | commons-dbcp 185 | commons-dbcp 186 | 1.4 187 | 188 | 189 | commons-beanutils 190 | commons-beanutils 191 | 1.9.2 192 | 193 | 194 | org.apache.commons 195 | commons-lang3 196 | 3.4 197 | 198 | 199 | commons-lang 200 | commons-lang 201 | 2.6 202 | 203 | 204 | commons-fileupload 205 | commons-fileupload 206 | 1.3.1 207 | 208 | 209 | commons-io 210 | commons-io 211 | 2.4 212 | 213 | 214 | commons-codec 215 | commons-codec 216 | 1.10 217 | 218 | 219 | 220 | 221 | 222 | org.springframework 223 | spring-core 224 | ${spring.version} 225 | 226 | 227 | org.springframework 228 | spring-web 229 | ${spring.version} 230 | 231 | 232 | org.springframework 233 | spring-oxm 234 | ${spring.version} 235 | 236 | 237 | org.springframework 238 | spring-tx 239 | ${spring.version} 240 | 241 | 242 | org.springframework 243 | spring-jdbc 244 | ${spring.version} 245 | 246 | 247 | org.springframework 248 | spring-webmvc 249 | ${spring.version} 250 | 251 | 252 | org.springframework 253 | spring-aop 254 | ${spring.version} 255 | 256 | 257 | org.springframework 258 | spring-context-support 259 | ${spring.version} 260 | 261 | 262 | org.springframework 263 | spring-test 264 | ${spring.version} 265 | 266 | 267 | org.springframework.data 268 | spring-data-commons-core 269 | 1.4.1.RELEASE 270 | 271 | 272 | 273 | 274 | 275 | org.mybatis 276 | mybatis 277 | ${mybatis.version} 278 | 279 | 280 | org.mybatis 281 | mybatis-spring 282 | 1.2.3 283 | 284 | 285 | 286 | 287 | WebSocketchat 288 | 289 | 290 | 291 | 292 | src/main/java 293 | 294 | 295 | src/main/resources 296 | 297 | 298 | 299 | 300 | 301 | 302 | org.apache.maven.plugins 303 | maven-compiler-plugin 304 | 3.3 305 | 306 | 1.8 307 | 1.8 308 | 309 | 310 | 311 | 312 | org.apache.tomcat.maven 313 | tomcat7-maven-plugin 314 | 2.2 315 | 316 | 8090 317 | /WebChat 318 | utf-8 319 | 320 | 321 | 322 | 323 | 324 | 325 | -------------------------------------------------------------------------------- /src/main/java/com/liu/Realm/myrealm.java: -------------------------------------------------------------------------------- 1 | package com.liu.Realm; 2 | 3 | import javax.annotation.Resource; 4 | import javax.servlet.http.HttpServletRequest; 5 | 6 | import org.apache.shiro.SecurityUtils; 7 | import org.apache.shiro.authc.AuthenticationException; 8 | import org.apache.shiro.authc.AuthenticationInfo; 9 | import org.apache.shiro.authc.AuthenticationToken; 10 | import org.apache.shiro.authc.SimpleAuthenticationInfo; 11 | import org.apache.shiro.authz.AuthorizationInfo; 12 | import org.apache.shiro.realm.AuthorizingRealm; 13 | import org.apache.shiro.subject.PrincipalCollection; 14 | import org.springframework.web.servlet.mvc.support.RedirectAttributes; 15 | 16 | import com.liu.pojo.User; 17 | import com.liu.service.impl.UserServiceImpl; 18 | 19 | public class myrealm extends AuthorizingRealm{ 20 | @Resource 21 | private UserServiceImpl userServiceImpl; 22 | 23 | @Override 24 | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { 25 | // TODO Auto-generated method stub 26 | return null; 27 | } 28 | 29 | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { 30 | String username=(String) token.getPrincipal(); 31 | System.out.println("userid:"+username); 32 | User user=userServiceImpl.selectUserByUserId(username); 33 | if(user!=null) 34 | { 35 | SecurityUtils.getSubject().getSession().setAttribute("currentUser", user); 36 | AuthenticationInfo authenticationInfo=new SimpleAuthenticationInfo(user.getUserid(),user.getPassword(),"myRealm"); 37 | return authenticationInfo; 38 | } 39 | return null; 40 | } 41 | 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/liu/controller/LoginController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/controller/LoginController.java -------------------------------------------------------------------------------- /src/main/java/com/liu/controller/UserController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/controller/UserController.java -------------------------------------------------------------------------------- /src/main/java/com/liu/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.liu.dao; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import com.liu.pojo.User; 8 | 9 | public interface UserDao { 10 | List selectAll(@Param("offset") int offset,@Param("limit") int limit); 11 | User selectUserByUserId(String userid); 12 | int selectCount(); 13 | boolean insertUser(User user); 14 | boolean updateUser(User user); 15 | boolean deleteUser(String userid); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/liu/dao/UserLogDao.java: -------------------------------------------------------------------------------- 1 | package com.liu.dao; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import com.liu.pojo.UserLog; 8 | 9 | public interface UserLogDao { 10 | List selectAllLog(@Param("offset")int offset,@Param("limit")int limit); 11 | List selectLogByUserid(@Param("userid") String userid,@Param("offset")int offset,@Param("limit")int limit); 12 | Integer selectLogCount(); 13 | Integer selectLogCountByUserid(@Param("userid")String userid); 14 | boolean insertLog(UserLog userLog); 15 | boolean deleteLog(Integer id); 16 | boolean deleteThisUserLog(String userid); 17 | boolean deleteAllLog(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/liu/mapper/userLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ID, USERID, TIME, TYPE, DETAIL, IP 16 | 17 | 18 | 24 | 25 | 32 | 33 | 36 | 37 | 41 | 42 | 43 | INSERT INTO log (ID, USERID, TIME, TYPE, DETAIL, IP) 44 | VALUES (NULL, #{userid, jdbcType=VARCHAR}, #{time, jdbcType=VARCHAR}, #{type, jdbcType=INTEGER}, 45 | #{detail, jdbcType=INTEGER}, #{ip, jdbcType=VARCHAR}) 46 | 47 | 48 | 49 | DELETE FROM log 50 | WHERE ID = #{id, jdbcType=INTEGER} 51 | 52 | 53 | 54 | DELETE FROM log 55 | WHERE USERID = #{userid, jdbcType=VARCHAR} 56 | 57 | 58 | 59 | DELETE FROM log 60 | 61 | 62 | -------------------------------------------------------------------------------- /src/main/java/com/liu/mapper/userMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | USERID,PASSWORD,NICKNAME,SEX,AGE,PROFILEHEAD,PROFILE,FIRSTTIME,LASTTIME,STATUS 18 | 19 | 20 | 26 | 27 | 32 | 33 | 37 | 38 | 39 | INSERT INTO user (USERID, PASSWORD, NICKNAME, SEX, AGE, PROFILEHEAD, PROFILE, FIRSTTIME, LASTTIME, STATUS) 40 | VALUES (#{userid, jdbcType=VARCHAR}, #{password, jdbcType=VARCHAR}, #{nickname, jdbcType=VARCHAR}, #{sex, jdbcType=INTEGER}, 41 | #{age, jdbcType=INTEGER}, #{profilehead, jdbcType=VARCHAR}, #{profile, jdbcType=VARCHAR}, 42 | #{firsttime, jdbcType=VARCHAR}, #{lasttime, jdbcType=VARCHAR}, #{status, jdbcType=INTEGER}) 43 | 44 | 45 | UPDATE user 46 | 47 | 48 | PASSWORD = #{password, jdbcType=VARCHAR}, 49 | 50 | 51 | NICKNAME = #{nickname, jdbcType=VARCHAR}, 52 | 53 | 54 | SEX = #{sex, jdbcType=INTEGER}, 55 | 56 | 57 | AGE = #{age, jdbcType=INTEGER}, 58 | 59 | 60 | PROFILEHEAD = #{profilehead, jdbcType=VARCHAR}, 61 | 62 | 63 | PROFILE = #{profile, jdbcType=VARCHAR}, 64 | 65 | 66 | FIRSTTIME = #{firsttime, jdbcType=VARCHAR}, 67 | 68 | 69 | LASTTIME = #{lasttime, jdbcType=VARCHAR}, 70 | 71 | 72 | STATUS = #{status, jdbcType=INTEGER}, 73 | 74 | 75 | WHERE USERID=#{userid} 76 | 77 | 78 | DELETE FROM user 79 | WHERE USERID=#{userid} 80 | 81 | -------------------------------------------------------------------------------- /src/main/java/com/liu/pojo/User.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/pojo/User.java -------------------------------------------------------------------------------- /src/main/java/com/liu/pojo/UserLog.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/pojo/UserLog.java -------------------------------------------------------------------------------- /src/main/java/com/liu/service/UserLogService.java: -------------------------------------------------------------------------------- 1 | package com.liu.service; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import com.liu.pojo.UserLog; 8 | 9 | public interface UserLogService { 10 | List selectAllLog(int page,int pageSize); 11 | List selectLogByUserid( String userid,int page,int pageSize); 12 | Integer selectLogCount(); 13 | Integer selectLogCountByUserid(String userid,int PageSize); 14 | Integer selectLogcountfromuserid(String userid); 15 | boolean insertLog(UserLog userLog); 16 | boolean deleteLog(Integer id); 17 | boolean deleteThisUserLog(String userid); 18 | boolean deleteAllLog(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/liu/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.liu.service; 2 | 3 | import java.util.List; 4 | 5 | import org.apache.ibatis.annotations.Param; 6 | 7 | import com.liu.pojo.User; 8 | 9 | public interface UserService { 10 | List selectAll(int page, int pageSize); 11 | User selectUserByUserId(String userid); 12 | Integer selectCount(); 13 | boolean insertUser(User user); 14 | boolean updateUser(User user); 15 | boolean deleteUser(String userid); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/liu/service/impl/UserLogServiceImpl.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/service/impl/UserLogServiceImpl.java -------------------------------------------------------------------------------- /src/main/java/com/liu/service/impl/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.liu.service.impl; 2 | 3 | import java.util.List; 4 | 5 | import javax.annotation.Resource; 6 | 7 | import org.springframework.stereotype.Service; 8 | 9 | import com.liu.dao.UserDao; 10 | import com.liu.pojo.User; 11 | import com.liu.service.UserService; 12 | @Service(value="userService") 13 | public class UserServiceImpl implements UserService { 14 | @Resource 15 | private UserDao userDao; 16 | public List selectAll(int page, int pageSize) { 17 | // TODO Auto-generated method stub 18 | return userDao.selectAll(page, pageSize); 19 | } 20 | 21 | public User selectUserByUserId(String userid) { 22 | // TODO Auto-generated method stub 23 | return userDao.selectUserByUserId(userid); 24 | } 25 | 26 | public Integer selectCount() { 27 | // TODO Auto-generated method stub 28 | return userDao.selectCount(); 29 | } 30 | 31 | public boolean insertUser(User user) { 32 | // TODO Auto-generated method stub 33 | return userDao.insertUser(user); 34 | } 35 | 36 | public boolean updateUser(User user) { 37 | // TODO Auto-generated method stub 38 | return userDao.updateUser(user); 39 | } 40 | 41 | public boolean deleteUser(String userid) { 42 | // TODO Auto-generated method stub 43 | return userDao.deleteUser(userid); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/liu/utils/DateUtil.java: -------------------------------------------------------------------------------- 1 | package com.liu.utils; 2 | 3 | import java.text.SimpleDateFormat; 4 | import java.util.Date; 5 | 6 | public class DateUtil { 7 | public String getDateformat() 8 | { 9 | Date date=new Date(); 10 | SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 11 | String nowdate=format.format(date); 12 | return nowdate; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/liu/utils/WordDefined.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/utils/WordDefined.java -------------------------------------------------------------------------------- /src/main/java/com/liu/webSocket/ChatServer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/webSocket/ChatServer.java -------------------------------------------------------------------------------- /src/main/java/com/liu/webSocket/HttpSessionConfigurator.java: -------------------------------------------------------------------------------- 1 | package com.liu.webSocket; 2 | import javax.servlet.http.HttpSession; 3 | import javax.websocket.HandshakeResponse; 4 | import javax.websocket.server.HandshakeRequest; 5 | import javax.websocket.server.ServerEndpointConfig; 6 | public class HttpSessionConfigurator extends ServerEndpointConfig.Configurator{ 7 | 8 | public void modifyHandshake(ServerEndpointConfig config,HandshakeRequest request,HandshakeResponse response){ 9 | HttpSession httpSession=(HttpSession) request.getHttpSession(); 10 | config.getUserProperties().put(HttpSession.class.getName(), httpSession); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/liu/webSocket/VideoServer.java: -------------------------------------------------------------------------------- 1 | package com.liu.webSocket; 2 | 3 | import java.util.Collection; 4 | import java.util.Collections; 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | import javax.websocket.*; 9 | import javax.websocket.Session; 10 | import javax.websocket.server.ServerEndpoint; 11 | 12 | @ServerEndpoint(value="/videoServer",configurator=HttpSessionConfigurator.class) 13 | public class VideoServer { 14 | private static final int MAX_CONNECTION=20; 15 | private static final int MAX_TIMEOUT=2*60*1000; 16 | private static final Mapusermap=Collections.synchronizedMap(new HashMap()); 17 | private static final Map sessions = Collections.synchronizedMap(new HashMap()); 18 | @OnOpen 19 | public void onOpen(Session session) 20 | { 21 | System.out.println("onOpen"); 22 | } 23 | @OnMessage 24 | public void OnMessage(String message,Session session) 25 | { 26 | 27 | } 28 | @OnClose 29 | public void onClose(Session session) 30 | { 31 | 32 | } 33 | @OnError 34 | public void onError(Throwable error) 35 | { 36 | error.printStackTrace(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/liu/webSocket/five_chessServer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/java/com/liu/webSocket/five_chessServer.java -------------------------------------------------------------------------------- /src/main/java/test/testmybatis.java: -------------------------------------------------------------------------------- 1 | package test; 2 | 3 | import java.util.List; 4 | 5 | import javax.annotation.Resource; 6 | 7 | import org.junit.runner.RunWith; 8 | import org.springframework.test.context.ContextConfiguration; 9 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 10 | 11 | import com.liu.service.impl.UserServiceImpl; 12 | 13 | @RunWith(SpringJUnit4ClassRunner.class) 14 | @ContextConfiguration(locations={"classpath:ApplicationContext.xml"}) 15 | public class testmybatis { 16 | @Resource 17 | private UserServiceImpl userServiceImpl; 18 | public void testmybatis()throws Exception 19 | { 20 | Integer list=userServiceImpl.selectCount(); 21 | System.out.println("list:"+list); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/test/testtest.java: -------------------------------------------------------------------------------- 1 | package test; 2 | 3 | import java.util.List; 4 | 5 | import javax.annotation.Resource; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | import org.springframework.test.context.ContextConfiguration; 10 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 11 | 12 | import com.liu.pojo.User; 13 | import com.liu.pojo.UserLog; 14 | import com.liu.service.impl.UserLogServiceImpl; 15 | import com.liu.service.impl.UserServiceImpl; 16 | 17 | @RunWith(SpringJUnit4ClassRunner.class) 18 | @ContextConfiguration(locations={"classpath:ApplicationContext.xml"}) 19 | public class testtest { 20 | @Resource 21 | private UserServiceImpl userServiceImpl; 22 | @Resource 23 | private UserLogServiceImpl userLogServiceImpl; 24 | @Test 25 | public void testmybatis()throws Exception 26 | { 27 | // Integer list=userServiceImpl.selectCount(); 28 | // System.out.println("list:"+list); 29 | // List list=userServiceImpl.selectAll(0, 1); 30 | // System.out.println(list.get(0).getPassword()); 31 | // System.out.println(userServiceImpl.selectUserByUserId("admin").getNickname()); 32 | // User user=new User(); 33 | // user.setUserid("SinceNovember"); 34 | // user.setNickname("lyda"); 35 | // user.setPassword("6666"); 36 | // System.out.println(userServiceImpl.deleteUser("SinceNovember")); 37 | // System.out.println(userLogServiceImpl.selectAllLog(0, 1)); 38 | // System.out.println(userLogServiceImpl.selectLogByUserid("admin", 0, 5).size()); 39 | // UserLog userLog=new UserLog(); 40 | // userLog.setId("ASD"); 41 | // userLog.setTime("456"); 42 | // System.out.println(userLogServiceImpl.deleteLog("ASD")); 43 | // User user=new User(); 44 | // user.setUserid("admin"); 45 | // user.setSex(-1); 46 | // userServiceImpl.updateUser(user); 47 | // System.out.println(userServiceImpl.selectUserByUserId("admin")); 48 | // System.out.println(userLogServiceImpl.selectAllLog(0, 1)); 49 | // System.out.println(userLogServiceImpl.selectAllLog(0, 1).get(0).getId()); 50 | // System.out.println(userLogServiceImpl.selectLogByUserid("admin", 0, 1)); 51 | // System.out.println(userLogServiceImpl.selectLogCount()); 52 | // System.out.println(userLogServiceImpl.selectLogC ountByUserid("admin")); 53 | // UserLog userLog=new UserLog(); 54 | // userLog.setUserid("admin"); 55 | // userLog.setDetail("1111"); 56 | // userLogServiceImpl.insertLog(userLog); 57 | // userLogServiceImpl.deleteThisUserLog("admin"); 58 | // userLogServiceImpl.deleteAllLog(); 59 | // System.out.println(userLogServiceImpl.selectLogByUserid("admin", 1, 7).size()); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/resources/ApplicationContext.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | /login=anon 66 | /user/*=anon 67 | /register=anon 68 | /static/**=anon 69 | /**=authc 70 | /user/logout=logout 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /src/main/resources/jdbc.properties: -------------------------------------------------------------------------------- 1 | driver=com.mysql.jdbc.Driver 2 | url=jdbc:mysql://localhost:3306/webchat?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC 3 | username=root 4 | password=mypassword 5 | maxActive=20 6 | maxIdle=20 7 | minIdle=1 8 | maxWait=60000 -------------------------------------------------------------------------------- /src/main/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/main/resources/spring-mvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/webapp/AI_five-chess.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 人工智能五子棋 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 |

人机对战五子棋

20 | 21 | 22 |
23 | 26 | 27 | 28 |
29 | 662 | 663 | -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/lib/json-lib-2.4-jdk15.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/WEB-INF/lib/json-lib-2.4-jdk15.jar -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/lib/json.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/WEB-INF/lib/json.jar -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/lib/ueditor-1.1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/WEB-INF/lib/ueditor-1.1.2.jar -------------------------------------------------------------------------------- /src/main/webapp/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | contextConfigLocation 8 | classpath:ApplicationContext.xml 9 | 10 | 11 | org.springframework.web.context.ContextLoaderListener 12 | 13 | 14 | encodingFilter 15 | org.springframework.web.filter.CharacterEncodingFilter 16 | true 17 | 18 | encoding 19 | UTF-8 20 | 21 | 22 | 23 | encodingFilter 24 | /* 25 | 26 | 27 | shiroFilter 28 | org.springframework.web.filter.DelegatingFilterProxy 29 | 30 | 31 | shiroFilter 32 | /* 33 | 34 | 35 | SpringMVC 36 | org.springframework.web.servlet.DispatcherServlet 37 | 38 | contextConfigLocation 39 | classpath:spring-mvc.xml 40 | 41 | 1 42 | true 43 | 44 | 45 | SpringMVC 46 | / 47 | 48 | -------------------------------------------------------------------------------- /src/main/webapp/about.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 关于 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 |
16 |
17 |
关于 / about
18 |
19 |
20 | 25 |
26 |
27 |
28 |
29 |

WebChat主要使用SSM框架,即Spring + Spring MVC + Mybatis

30 |

通讯使用的是websocket

31 |

数据库使用的是Mysql

32 |

前端框架采用的是Amaze UI,弹窗控件和分页控件采用的是LayerLaypage

33 |
34 |
35 | 36 |
37 |
38 |
39 |

https://github.com/SinceNovember

40 |
41 |
42 | 43 |
44 |
45 |
46 |

欢迎访问我的github, github.com/SinceNovember

47 |
48 |
49 |
50 |
51 | 52 |
53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/main/webapp/errorinfo.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 个人信息 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 |
16 |
17 |
${userid}的个人信息 / info
18 |
19 |
20 | 23 |
24 |
25 |
26 |
昵称:保密
27 |
28 | ${user.nickname} 29 |
30 | 31 |
性别:保密
32 |
年龄:保密
33 |
简介:保密
34 |
注册时间:保密
35 |
最后登录:保密
36 |
37 |
38 |
39 |
40 | 41 |
42 | 43 | 44 | 45 | 46 |
47 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /src/main/webapp/file/jar/aopalliance-1.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/aopalliance-1.0.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-beanutils-1.9.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-beanutils-1.9.2.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-codec-1.10.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-codec-1.10.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-collections-3.2.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-collections-3.2.1.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-dbcp-1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-dbcp-1.4.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-fileupload-1.3.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-fileupload-1.3.1.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-io-2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-io-2.4.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-lang-2.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-lang-2.6.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-lang3-3.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-lang3-3.4.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-logging-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-logging-1.1.1.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/commons-pool-1.5.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/commons-pool-1.5.4.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/fastjson-1.2.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/fastjson-1.2.7.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/hamcrest-core-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/hamcrest-core-1.3.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jackson-annotations-2.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jackson-annotations-2.2.3.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jackson-core-2.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jackson-core-2.2.3.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jackson-core-asl-1.9.13.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jackson-core-asl-1.9.13.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jackson-databind-2.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jackson-databind-2.2.3.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jackson-mapper-asl-1.9.13.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jackson-mapper-asl-1.9.13.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jcl-over-slf4j-1.7.21.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jcl-over-slf4j-1.7.21.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/json-20150729.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/json-20150729.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jstl-1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jstl-1.2.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/jul-to-slf4j-1.7.21.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/jul-to-slf4j-1.7.21.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/junit-4.11.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/junit-4.11.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/log4j-api-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/log4j-api-2.5.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/log4j-core-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/log4j-core-2.5.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/log4j-jul-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/log4j-jul-2.5.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/log4j-slf4j-impl-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/log4j-slf4j-impl-2.5.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/log4j-web-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/log4j-web-2.5.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/mybatis-3.2.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/mybatis-3.2.6.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/mybatis-spring-1.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/mybatis-spring-1.2.3.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/mysql-connector-java-5.1.25.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/mysql-connector-java-5.1.25.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/ojdbc6-10.2.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/ojdbc6-10.2.0.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/slf4j-api-1.7.21.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/slf4j-api-1.7.21.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-aop-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-aop-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-beans-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-beans-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-context-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-context-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-context-support-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-context-support-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-core-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-core-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-data-commons-core-1.4.1.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-data-commons-core-1.4.1.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-expression-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-expression-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-jdbc-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-jdbc-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-messaging-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-messaging-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-oxm-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-oxm-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-test-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-test-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-tx-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-tx-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-web-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-web-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-webmvc-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-webmvc-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/jar/spring-websocket-4.2.4.RELEASE.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/jar/spring-websocket-4.2.4.RELEASE.jar -------------------------------------------------------------------------------- /src/main/webapp/file/photo/five_chess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/five_chess.png -------------------------------------------------------------------------------- /src/main/webapp/file/photo/index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/index.png -------------------------------------------------------------------------------- /src/main/webapp/file/photo/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/info.png -------------------------------------------------------------------------------- /src/main/webapp/file/photo/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/log.png -------------------------------------------------------------------------------- /src/main/webapp/file/photo/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/login.png -------------------------------------------------------------------------------- /src/main/webapp/file/photo/setting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/setting.png -------------------------------------------------------------------------------- /src/main/webapp/file/photo/sysset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/file/photo/sysset.png -------------------------------------------------------------------------------- /src/main/webapp/file/sql/webchat.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Navicat MySQL Data Transfer 3 | 4 | Source Server : Amayadream 5 | Source Server Version : 50713 6 | Source Host : localhost:3306 7 | Source Database : webchat 8 | 9 | Target Server Type : MYSQL 10 | Target Server Version : 50713 11 | File Encoding : 65001 12 | 13 | Date: 2017-01-11 19:26:11 14 | */ 15 | 16 | SET FOREIGN_KEY_CHECKS=0; 17 | 18 | -- ---------------------------- 19 | -- Table structure for log 20 | -- ---------------------------- 21 | DROP TABLE IF EXISTS `log`; 22 | CREATE TABLE `log` ( 23 | `id` INTEGER PRIMARY KEY AUTO_INCREMENT , 24 | `userid` varchar(255) DEFAULT NULL COMMENT '用户名', 25 | `time` varchar(255) DEFAULT NULL COMMENT '操作时间', 26 | `type` varchar(255) DEFAULT NULL COMMENT '操作类型', 27 | `detail` varchar(255) DEFAULT NULL COMMENT '详情', 28 | `ip` varchar(255) DEFAULT NULL COMMENT 'ip', 29 | KEY `fk_log_userid` (`userid`), 30 | CONSTRAINT `fk_log_userid` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`) 31 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 32 | 33 | -- ---------------------------- 34 | -- Records of log 35 | -- ---------------------------- 36 | <<<<<<< HEAD 37 | INSERT INTO `log` VALUES (1, 'SiceNovember', '2017-01-11 19:20:43', '登陆', '用户登陆', null); 38 | ======= 39 | INSERT INTO `log` VALUES (1, 'SinceNovember', '2017-01-11 19:20:43', '登陆', '用户登陆', null); 40 | >>>>>>> first commit 41 | 42 | 43 | -- ---------------------------- 44 | -- Table structure for user 45 | -- ---------------------------- 46 | DROP TABLE IF EXISTS `user`; 47 | CREATE TABLE `user` ( 48 | `userid` varchar(255) DEFAULT NULL COMMENT '用户名', 49 | `password` varchar(255) DEFAULT NULL COMMENT '密码', 50 | `nickname` varchar(255) DEFAULT NULL COMMENT '昵称', 51 | `sex` int(1) DEFAULT NULL COMMENT '性别', 52 | `age` int(5) DEFAULT NULL COMMENT '年龄', 53 | `profilehead` varchar(255) DEFAULT NULL COMMENT '头像', 54 | `profile` varchar(255) DEFAULT NULL COMMENT '简介', 55 | `firsttime` varchar(255) DEFAULT NULL COMMENT '注册时间', 56 | `lasttime` varchar(255) DEFAULT NULL COMMENT '最后登录时间', 57 | `status` int(1) DEFAULT NULL COMMENT '隐私(1可查看 -1静止查看)', 58 | KEY `userid` (`userid`) 59 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 60 | 61 | -- ---------------------------- 62 | -- Records of user 63 | -- ---------------------------- 64 | <<<<<<< HEAD 65 | INSERT INTO `user` VALUES ('SinceNovember', '123456', 'SiceNovember', '1', '23', 'upload/Amayadream/Amayadream.jpg', '没有', '2017-01-11 19:22:21', '2017-01-11 19:22:21', '1'); 66 | ======= 67 | INSERT INTO `user` VALUES ('SinceNovember', '123456', 'SinceNovember', '1', '23', 'upload/Amayadream/Amayadream.jpg', '没有', '2017-01-11 19:22:21', '2017-01-11 19:22:21', '1'); 68 | >>>>>>> first commit 69 | INSERT INTO `user` VALUES ('admin', 'admin', 'admin', '1', '23', 'upload/admin/admin.jpg', 'i\'m admin', '2017-01-11 19:22:21', '2017-01-11 19:23:20', '1'); 70 | -------------------------------------------------------------------------------- /src/main/webapp/five-chess.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 人工智能五子棋 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 |

人人对战五子棋

20 | 21 |
22 |
23 |

在线列表 []

24 |
25 |
    26 |
27 |
28 | 29 |
30 | 33 | 34 | 35 |
36 | 405 | 406 | -------------------------------------------------------------------------------- /src/main/webapp/help.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 帮助 7 | 8 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 |
21 |
22 |
帮助 / help
23 |
24 |
25 | 28 |
29 |
30 | 如何使用 31 |
32 |
33 |
34 | 35 |
36 | 37 | 38 | 39 | 40 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 聊天 ${message } 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |
15 |
16 | 17 |
18 |
    19 |
20 | 21 |
22 | 23 |
24 | 25 |
26 | 27 |
28 |

发送给 : 全体成员

29 |
30 | 31 |
32 | 33 | 34 | 35 | 36 | 37 |
38 |
39 | 40 |
41 |
42 |

在线列表 []

43 |
44 |
    45 |
  • 图灵机器人
  • 46 |
47 |
    48 |
49 |
50 |
51 |
52 | 53 | 54 | 55 | 274 | 275 | -------------------------------------------------------------------------------- /src/main/webapp/info-setting.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 个人设置 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 |
16 | 17 |
18 |
个人设置 / form
19 |
20 | 21 |
22 | 27 | 28 |
29 |
30 | <%-- --%> 31 |
32 |
33 | 34 |
35 | 36 |
37 |
38 | 39 |
40 | 41 |
42 | 43 |
44 |
45 | 46 |
47 | 48 |
49 | 55 |
56 | 59 |
60 |
61 | 62 |
63 | 64 |
65 |
66 |
67 | 68 |
69 | 70 |
71 | 74 |
75 |
76 |
77 | 78 |
79 |
80 |
81 |
82 | 83 |
84 |
85 |
86 | 加载失败 87 |
88 |
89 | 91 | 92 |
93 |
94 | 95 | 106 |
107 |
108 | 109 |
110 |
111 |
112 | 113 |
114 | 115 |
116 |
117 | 118 |
119 | 120 |
121 | 122 |
123 |
124 | 125 |
126 | 127 |
128 | 129 |
130 |
131 | 132 |
133 |
134 | 135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 | 143 |
144 | 145 | 146 | 147 | 148 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /src/main/webapp/information.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 个人信息 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 |
16 |
17 |
${userid}的个人信息 / info
18 |
19 |
20 | 23 |
24 |
25 |
26 | 27 |
昵称:
28 |
29 | ${user.nickname} 30 |
31 |
32 | ${user.nickname} 33 |
34 | 35 |
性别:
36 |
37 | 未知 38 | 39 | 40 | 41 | 保密 42 | 43 |
44 |
年龄:
45 |
46 | 未知 47 | ${user.age} 48 |
49 |
简介:
50 |
51 | 52 | 这个人很懒,什么都没有留下! 53 | 54 | 55 | ${user.profile} 56 | 57 |
58 |
注册时间
59 |
${user.firsttime}
60 |
最后登录
61 |
${user.lasttime}
62 |
63 |
64 |
65 |
66 | 67 |
68 | 69 | 70 | 71 | 72 |
73 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/main/webapp/log.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 系统日志 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 |
16 |
17 |
系统日志 / log
18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |
#用户名时间类型详情IP
${status.index + 1}${log.userid}${log.time}${log.type}${log.detail}${log.ip}
44 |
45 |
46 |
47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /src/main/webapp/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 3 | <%String path = request.getContextPath();%> 4 | 5 | 6 | 7 | WebChat | 登陆 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |

WebChat

16 | 39 | 40 | 117 | 118 | -------------------------------------------------------------------------------- /src/main/webapp/main.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 2 | pageEncoding="ISO-8859-1"%> 3 | 4 | 5 | 6 | 7 | Insert title here 8 | 9 | 10 | 111 11 | 12 | -------------------------------------------------------------------------------- /src/main/webapp/register.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> 3 | <%String path = request.getContextPath();%> 4 | 5 | 6 | 7 | WebChat | 登陆 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |

WebChat注册

16 | 38 | 39 | 112 | 113 | -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/css/admin.css: -------------------------------------------------------------------------------- 1 | /** 2 | * admin.css 3 | */ 4 | 5 | ul { 6 | margin-top: 0; 7 | } 8 | 9 | .admin-icon-yellow { 10 | color: #ffbe40; 11 | } 12 | 13 | .admin-header { 14 | font-size: 1.4rem; 15 | margin-bottom: 0; 16 | } 17 | 18 | .admin-header-list a:hover :after { 19 | content: none; 20 | } 21 | 22 | .admin-main { 23 | background: #f3f3f3; 24 | } 25 | 26 | .admin-menu { 27 | position: fixed; 28 | z-index: 10; 29 | bottom: 30px; 30 | right: 20px; 31 | } 32 | 33 | .admin-sidebar { 34 | width: 260px; 35 | min-height: 100%; 36 | float: left; 37 | border-right: 1px solid #cecece; 38 | } 39 | 40 | .admin-sidebar-list { 41 | margin-bottom: 0; 42 | } 43 | 44 | .admin-sidebar-list li a { 45 | color: #5c5c5c; 46 | padding-left: 24px; 47 | } 48 | 49 | .admin-sidebar-list li:first-child { 50 | border-top: none; 51 | } 52 | 53 | .admin-sidebar-sub { 54 | margin-top: 0; 55 | margin-bottom: 0; 56 | box-shadow: 0 16px 8px -15px #e2e2e2 inset; 57 | background: #ececec; 58 | padding-left: 24px; 59 | } 60 | 61 | .admin-sidebar-sub li:first-child { 62 | border-top: 1px solid #dedede; 63 | } 64 | 65 | .admin-sidebar-panel { 66 | margin: 10px; 67 | } 68 | 69 | .admin-content { 70 | width: auto; 71 | overflow: hidden; 72 | height: 100%; 73 | background: #fff; 74 | } 75 | 76 | .admin-content-list { 77 | border: 1px solid #e9ecf1; 78 | margin-top: 0; 79 | } 80 | 81 | .admin-content-list li { 82 | border: 1px solid #e9ecf1; 83 | border-width: 0 1px; 84 | margin-left: -1px; 85 | } 86 | 87 | .admin-content-list li:first-child { 88 | border-left: none; 89 | } 90 | 91 | .admin-content-list li:last-child { 92 | border-right: none; 93 | } 94 | 95 | .admin-content-table a { 96 | color: #535353; 97 | } 98 | .admin-content-file { 99 | margin-bottom: 0; 100 | color: #666; 101 | } 102 | 103 | .admin-content-file p { 104 | margin: 0 0 5px 0; 105 | font-size: 1.4rem; 106 | } 107 | 108 | .admin-content-file li { 109 | padding: 10px 0; 110 | } 111 | 112 | .admin-content-file li:first-child { 113 | border-top: none; 114 | } 115 | 116 | .admin-content-file li:last-child { 117 | border-bottom: none; 118 | } 119 | 120 | .admin-content-file li .am-progress { 121 | margin-bottom: 4px; 122 | } 123 | 124 | .admin-content-file li .am-progress-bar { 125 | line-height: 14px; 126 | } 127 | 128 | .admin-content-task { 129 | margin-bottom: 0; 130 | } 131 | 132 | .admin-content-task li { 133 | padding: 5px 0; 134 | border-color: #eee; 135 | } 136 | 137 | .admin-content-task li:first-child { 138 | border-top: none; 139 | } 140 | 141 | .admin-content-task li:last-child { 142 | border-bottom: none; 143 | } 144 | 145 | .admin-task-meta { 146 | font-size: 1.2rem; 147 | color: #999; 148 | } 149 | 150 | .admin-task-bd { 151 | font-size: 1.4rem; 152 | margin-bottom: 5px; 153 | } 154 | 155 | .admin-content-comment { 156 | margin-bottom: 0; 157 | } 158 | 159 | .admin-content-comment .am-comment-bd { 160 | font-size: 1.4rem; 161 | } 162 | 163 | .admin-content-pagination { 164 | margin-bottom: 0; 165 | } 166 | .admin-content-pagination li a { 167 | padding: 4px 8px; 168 | } 169 | 170 | @media only screen and (min-width: 641px) { 171 | .admin-sidebar { 172 | display: block; 173 | position: static; 174 | background: none; 175 | } 176 | 177 | .admin-offcanvas-bar { 178 | position: static; 179 | width: auto; 180 | background: none; 181 | -webkit-transform: translate3d(0, 0, 0); 182 | -ms-transform: translate3d(0, 0, 0); 183 | transform: translate3d(0, 0, 0); 184 | } 185 | .admin-offcanvas-bar:after { 186 | content: none; 187 | } 188 | } 189 | 190 | @media only screen and (max-width: 640px) { 191 | .admin-sidebar { 192 | width: inherit; 193 | } 194 | 195 | .admin-offcanvas-bar { 196 | background: #f3f3f3; 197 | } 198 | 199 | .admin-offcanvas-bar:after { 200 | background: #BABABA; 201 | } 202 | 203 | .admin-sidebar-list a:hover, .admin-sidebar-list a:active{ 204 | -webkit-transition: background-color .3s ease; 205 | -moz-transition: background-color .3s ease; 206 | -ms-transition: background-color .3s ease; 207 | -o-transition: background-color .3s ease; 208 | transition: background-color .3s ease; 209 | background: #E4E4E4; 210 | } 211 | 212 | .admin-content-list li { 213 | padding: 10px; 214 | border-width: 1px 0; 215 | margin-top: -1px; 216 | } 217 | 218 | .admin-content-list li:first-child { 219 | border-top: none; 220 | } 221 | 222 | .admin-content-list li:last-child { 223 | border-bottom: none; 224 | } 225 | 226 | .admin-form-text { 227 | text-align: left !important; 228 | } 229 | 230 | } 231 | 232 | /* 233 | * user.html css 234 | */ 235 | .user-info { 236 | margin-bottom: 15px; 237 | } 238 | 239 | .user-info .am-progress { 240 | margin-bottom: 4px; 241 | } 242 | 243 | .user-info p { 244 | margin: 5px; 245 | } 246 | 247 | .user-info-order { 248 | font-size: 1.4rem; 249 | } 250 | 251 | /* 252 | * errorLog.html css 253 | */ 254 | 255 | .error-log .am-pre-scrollable { 256 | max-height: 40rem; 257 | } 258 | 259 | /* 260 | * table.html css 261 | */ 262 | 263 | .table-main { 264 | font-size: 1.4rem; 265 | padding: .5rem; 266 | } 267 | 268 | .table-main button { 269 | background: #fff; 270 | } 271 | 272 | .table-check { 273 | width: 30px; 274 | } 275 | 276 | .table-id { 277 | width: 50px; 278 | } 279 | 280 | @media only screen and (max-width: 640px) { 281 | .table-select { 282 | margin-top: 10px; 283 | margin-left: 5px; 284 | } 285 | } 286 | 287 | /* 288 | gallery.html css 289 | */ 290 | 291 | .gallery-list li { 292 | padding: 10px; 293 | } 294 | 295 | .gallery-list a { 296 | color: #666; 297 | } 298 | 299 | .gallery-list a:hover { 300 | color: #3bb4f2; 301 | } 302 | 303 | .gallery-title { 304 | margin-top: 6px; 305 | font-size: 1.4rem; 306 | } 307 | 308 | .gallery-desc { 309 | font-size: 1.2rem; 310 | margin-top: 4px; 311 | } 312 | 313 | /* 314 | 404.html css 315 | */ 316 | 317 | .page-404 { 318 | background: #fff; 319 | border: none; 320 | width: 200px; 321 | margin: 0 auto; 322 | } 323 | 324 | 325 | /* 326 | fixed-layout 固定头部和边栏布局 327 | */ 328 | 329 | .fixed-layout, 330 | .fixed-layout body { 331 | height: 100%; 332 | overflow: hidden; 333 | } 334 | 335 | .fixed-layout .admin-header { 336 | position: fixed; 337 | top: 0; 338 | left: 0; 339 | right: 0; 340 | z-index: 1500; 341 | } 342 | 343 | .fixed-layout .admin-main { 344 | position: relative; 345 | height: 100%; 346 | padding-top: 51px; 347 | } 348 | 349 | .fixed-layout .admin-content, 350 | .fixed-layout .admin-sidebar { 351 | height: 100%; 352 | overflow-x: hidden; 353 | overflow-y: scroll; 354 | } 355 | 356 | .fixed-layout .admin-sidebar.am-active { 357 | z-index: 1600; 358 | } 359 | -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/css/app.css: -------------------------------------------------------------------------------- 1 | /* Write your styles */ -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/app-icon72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/app-icon72x72@2x.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/admin-chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/admin-chrome.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/admin-firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/admin-firefox.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/admin-ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/admin-ie.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/admin-opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/admin-opera.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/admin-safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/admin-safari.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/adminPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/adminPage.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/blogPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/blogPage.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/landing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/landing.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/landingPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/landingPage.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/loginPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/loginPage.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/examples/sidebarPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/examples/sidebarPage.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/favicon.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/i/startup-640x1096.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/amaze/i/startup-640x1096.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/amaze/js/app.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | 4 | $(function() { 5 | var $fullText = $('.admin-fullText'); 6 | $('#admin-fullscreen').on('click', function() { 7 | $.AMUI.fullscreen.toggle(); 8 | }); 9 | 10 | $(document).on($.AMUI.fullscreen.raw.fullscreenchange, function() { 11 | $fullText.text($.AMUI.fullscreen.isFullscreen ? '退出全屏' : '开启全屏'); 12 | }); 13 | }); 14 | })(jQuery); 15 | -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/contextjs/css/context.standalone.css: -------------------------------------------------------------------------------- 1 | /** 2 | * ContextJS Styles 3 | * For use WITHOUT Twitters Bootstrap CSS 4 | */ 5 | 6 | .nav-header { 7 | display: block; 8 | padding: 3px 15px; 9 | font-size: 11px; 10 | font-weight: bold; 11 | line-height: 20px; 12 | color: #999; 13 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 14 | text-transform: uppercase; 15 | } 16 | .dropdown-menu { 17 | position: absolute; 18 | top: 100%; 19 | left: 0; 20 | z-index: 1000; 21 | display: none; 22 | float: left; 23 | min-width: 160px; 24 | padding: 5px 0; 25 | margin: 2px 0 0; 26 | list-style: none; 27 | background-color: #ffffff; 28 | border: 1px solid #ccc; 29 | border: 1px solid rgba(0, 0, 0, 0.2); 30 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 31 | font-size: 14px; 32 | *border-right-width: 2px; 33 | *border-bottom-width: 2px; 34 | -webkit-border-radius: 6px; 35 | -moz-border-radius: 6px; 36 | border-radius: 6px; 37 | -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 38 | -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 39 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 40 | -webkit-background-clip: padding-box; 41 | -moz-background-clip: padding; 42 | background-clip: padding-box; 43 | text-align:left; 44 | } 45 | .dropdown-menu.pull-right { 46 | right: 0; 47 | left: auto; 48 | } 49 | .dropdown-menu .divider { 50 | *width: 100%; 51 | height: 1px; 52 | margin: 9px 1px; 53 | *margin: -5px 0 5px; 54 | overflow: hidden; 55 | background-color: #e5e5e5; 56 | border-bottom: 1px solid #ffffff; 57 | } 58 | .dropdown-menu a { 59 | display: block; 60 | padding: 3px 20px; 61 | clear: both; 62 | font-weight: normal; 63 | line-height: 20px; 64 | color: #333333; 65 | white-space: nowrap; 66 | text-decoration: none; 67 | } 68 | .dropdown-menu li > a:hover, .dropdown-menu li > a:focus, .dropdown-submenu:hover > a { 69 | color: #ffffff; 70 | text-decoration: none; 71 | background-color: #0088cc; 72 | background-color: #0081c2; 73 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 74 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 75 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 76 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 77 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 78 | background-repeat: repeat-x; 79 | filter: progid: dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); 80 | } 81 | .dropdown-menu .active > a, .dropdown-menu .active > a:hover { 82 | color: #ffffff; 83 | text-decoration: none; 84 | background-color: #0088cc; 85 | background-color: #0081c2; 86 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 87 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 88 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 89 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 90 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 91 | background-repeat: repeat-x; 92 | outline: 0; 93 | filter: progid 94 | : dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); 95 | } 96 | .dropdown-menu .disabled > a, .dropdown-menu .disabled > a:hover { 97 | color: #999999; 98 | } 99 | .dropdown-menu .disabled > a:hover { 100 | text-decoration: none; 101 | cursor: default; 102 | background-color: transparent; 103 | } 104 | .open { 105 | *z-index: 1000; 106 | } 107 | .open > .dropdown-menu { 108 | display: block; 109 | } 110 | .pull-right > .dropdown-menu { 111 | right: 0; 112 | left: auto; 113 | } 114 | .dropup .caret, .navbar-fixed-bottom .dropdown .caret { 115 | border-top: 0; 116 | border-bottom: 4px solid #000000; 117 | content: "\2191"; 118 | } 119 | .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { 120 | top: auto; 121 | bottom: 100%; 122 | margin-bottom: 1px; 123 | } 124 | .dropdown-submenu { 125 | position: relative; 126 | } 127 | .dropdown-submenu > .dropdown-menu { 128 | top: 0; 129 | left: 100%; 130 | margin-top: -6px; 131 | margin-left: -1px; 132 | -webkit-border-radius: 0 6px 6px 6px; 133 | -moz-border-radius: 0 6px 6px 6px; 134 | border-radius: 0 6px 6px 6px; 135 | } 136 | .dropdown-submenu > .dropdown-menu.drop-left{ 137 | left:-100%; 138 | } 139 | .dropdown-submenu:hover .dropdown-menu { 140 | display: block; 141 | } 142 | .dropdown-submenu > a:after { 143 | display: block; 144 | float: right; 145 | width: 0; 146 | height: 0; 147 | margin-top: 5px; 148 | margin-right: -10px; 149 | border-color: transparent; 150 | border-left-color: #cccccc; 151 | border-style: solid; 152 | border-width: 5px 0 5px 5px; 153 | content: " "; 154 | } 155 | .dropdown-submenu:hover > a:after { 156 | border-left-color: #ffffff; 157 | } 158 | .dropdown .dropdown-menu .nav-header { 159 | padding-right: 20px; 160 | padding-left: 20px; 161 | } 162 | /** 163 | * Context Styles 164 | */ 165 | 166 | .dropdown-context .nav-header { 167 | cursor: default; 168 | } 169 | .dropdown-context:before, .dropdown-context-up:before { 170 | position: absolute; 171 | top: -7px; 172 | left: 9px; 173 | display: inline-block; 174 | border-right: 7px solid transparent; 175 | border-bottom: 7px solid #ccc; 176 | border-left: 7px solid transparent; 177 | border-bottom-color: rgba(0, 0, 0, 0.2); 178 | content: ''; 179 | } 180 | .dropdown-context:after, .dropdown-context-up:after { 181 | position: absolute; 182 | top: -6px; 183 | left: 10px; 184 | display: inline-block; 185 | border-right: 6px solid transparent; 186 | border-bottom: 6px solid #ffffff; 187 | border-left: 6px solid transparent; 188 | content: ''; 189 | } 190 | .dropdown-context-up:before, .dropdown-context-up:after { 191 | top: auto; 192 | bottom: -7px; 193 | z-index: 9999; 194 | } 195 | .dropdown-context-up:before { 196 | border-right: 7px solid transparent; 197 | border-top: 7px solid #ccc; 198 | border-bottom: none; 199 | border-left: 7px solid transparent; 200 | } 201 | .dropdown-context-up:after { 202 | border-right: 6px solid transparent; 203 | border-top: 6px solid #ffffff; 204 | border-left: 6px solid transparent; 205 | border-bottom: none; 206 | } 207 | .dropdown-context-sub:before, .dropdown-context-sub:after { 208 | display: none; 209 | } 210 | .dropdown-context .dropdown-submenu:hover .dropdown-menu { 211 | display: none; 212 | } 213 | .dropdown-context .dropdown-submenu:hover > .dropdown-menu { 214 | display: block; 215 | } 216 | 217 | .compressed-context a{ 218 | padding-left: 14px; 219 | padding-top: 0; 220 | padding-bottom: 0; 221 | font-size: 13px; 222 | } 223 | .compressed-context .divider{ 224 | margin: 5px 1px; 225 | } 226 | .compressed-context .nav-header{ 227 | padding:1px 13px; 228 | } 229 | -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/contextjs/js/context.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Context.js 3 | * Copyright Jacob Kelley 4 | * MIT License 5 | */ 6 | 7 | var context = context || (function () { 8 | 9 | var options = { 10 | fadeSpeed: 100, 11 | filter: function ($obj) { 12 | // Modify $obj, Do not return 13 | }, 14 | above: 'auto', 15 | preventDoubleContext: true, 16 | compress: false 17 | }; 18 | 19 | function initialize(opts) { 20 | 21 | options = $.extend({}, options, opts); 22 | 23 | $(document).on('click', 'html', function () { 24 | $('.dropdown-context').fadeOut(options.fadeSpeed, function(){ 25 | $('.dropdown-context').css({display:''}).find('.drop-left').removeClass('drop-left'); 26 | }); 27 | }); 28 | if(options.preventDoubleContext){ 29 | $(document).on('contextmenu', '.dropdown-context', function (e) { 30 | e.preventDefault(); 31 | }); 32 | } 33 | $(document).on('mouseenter', '.dropdown-submenu', function(){ 34 | var $sub = $(this).find('.dropdown-context-sub:first'), 35 | subWidth = $sub.width(), 36 | subLeft = $sub.offset().left, 37 | collision = (subWidth+subLeft) > window.innerWidth; 38 | if(collision){ 39 | $sub.addClass('drop-left'); 40 | } 41 | }); 42 | 43 | } 44 | 45 | function updateOptions(opts){ 46 | options = $.extend({}, options, opts); 47 | } 48 | 49 | function buildMenu(data, id, subMenu) { 50 | var subClass = (subMenu) ? ' dropdown-context-sub' : '', 51 | compressed = options.compress ? ' compressed-context' : '', 52 | $menu = $(''); 53 | var i = 0, linkTarget = ''; 54 | for(i; i'); 57 | } else if (typeof data[i].header !== 'undefined') { 58 | $menu.append(''); 59 | } else { 60 | if (typeof data[i].href == 'undefined') { 61 | data[i].href = '#'; 62 | } 63 | if (typeof data[i].target !== 'undefined') { 64 | linkTarget = ' target="'+data[i].target+'"'; 65 | } 66 | if (typeof data[i].subMenu !== 'undefined') { 67 | $sub = (''); 68 | } else { 69 | $sub = $('
  • ' + data[i].text + '
  • '); 70 | } 71 | if (typeof data[i].action !== 'undefined') { 72 | var actiond = new Date(), 73 | actionID = 'event-' + actiond.getTime() * Math.floor(Math.random()*100000), 74 | eventAction = data[i].action; 75 | $sub.find('a').attr('id', actionID); 76 | $('#' + actionID).addClass('context-event'); 77 | $(document).on('click', '#' + actionID, eventAction); 78 | } 79 | $menu.append($sub); 80 | if (typeof data[i].subMenu != 'undefined') { 81 | var subMenuData = buildMenu(data[i].subMenu, id, true); 82 | $menu.find('li:last').append(subMenuData); 83 | } 84 | } 85 | if (typeof options.filter == 'function') { 86 | options.filter($menu.find('li:last')); 87 | } 88 | } 89 | return $menu; 90 | } 91 | 92 | function addContext(selector, data) { 93 | 94 | var d = new Date(), 95 | id = d.getTime(), 96 | $menu = buildMenu(data, id); 97 | 98 | $('body').append($menu); 99 | 100 | 101 | $(document).on('contextmenu', selector, function (e) { 102 | e.preventDefault(); 103 | e.stopPropagation(); 104 | 105 | $('.dropdown-context:not(.dropdown-context-sub)').hide(); 106 | 107 | $dd = $('#dropdown-' + id); 108 | if (typeof options.above == 'boolean' && options.above) { 109 | $dd.addClass('dropdown-context-up').css({ 110 | top: e.pageY - 20 - $('#dropdown-' + id).height(), 111 | left: e.pageX - 13 112 | }).fadeIn(options.fadeSpeed); 113 | } else if (typeof options.above == 'string' && options.above == 'auto') { 114 | $dd.removeClass('dropdown-context-up'); 115 | var autoH = $dd.height() + 12; 116 | if ((e.pageY + autoH) > $('html').height()) { 117 | $dd.addClass('dropdown-context-up').css({ 118 | top: e.pageY - 20 - autoH, 119 | left: e.pageX - 13 120 | }).fadeIn(options.fadeSpeed); 121 | } else { 122 | $dd.css({ 123 | top: e.pageY + 10, 124 | left: e.pageX - 13 125 | }).fadeIn(options.fadeSpeed); 126 | } 127 | } 128 | }); 129 | } 130 | 131 | function hideContext(){ 132 | $('.dropdown-context:not(.dropdown-context-sub)').hide(); 133 | } 134 | 135 | function destroyContext(selector) { 136 | $(document).off('contextmenu', selector).off('click', '.context-event'); 137 | } 138 | 139 | return { 140 | init: initialize, 141 | settings: updateOptions, 142 | attach: addContext, 143 | destroy: destroyContext, 144 | hide : hideContext 145 | }; 146 | })(); -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/extend/layer.ext.js: -------------------------------------------------------------------------------- 1 | /*! layer弹层组件拓展类 */ 2 | ;!function(){layer.use("skin/layer.ext.css",function(){layer.layui_layer_extendlayerextjs=!0});var a=layer.cache||{},b=function(b){return a.skin?" "+a.skin+" "+a.skin+"-"+b:""};layer.prompt=function(a,c){a=a||{},"function"==typeof a&&(c=a);var d,e=2==a.formType?'":function(){return''}();return layer.open($.extend({btn:["确定","取消"],content:e,skin:"layui-layer-prompt"+b("prompt"),success:function(a){d=a.find(".layui-layer-input"),d.focus()},yes:function(b){var e=d.val();""===e?d.focus():e.length>(a.maxlength||500)?layer.tips("最多输入"+(a.maxlength||500)+"个字数",d,{tips:1}):c&&c(e,b,d)}},a))},layer.tab=function(a){a=a||{};var c=a.tab||{};return layer.open($.extend({type:1,skin:"layui-layer-tab"+b("tab"),title:function(){var a=c.length,b=1,d="";if(a>0)for(d=''+c[0].title+"";a>b;b++)d+=""+c[b].title+"";return d}(),content:'
      '+function(){var a=c.length,b=1,d="";if(a>0)for(d='
    • '+(c[0].content||"no content")+"
    • ";a>b;b++)d+='
    • '+(c[b].content||"no content")+"
    • ";return d}()+"
    ",success:function(a){var b=a.find(".layui-layer-title").children(),c=a.find(".layui-layer-tabmain").children();b.on("mousedown",function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0;var b=$(this),d=b.index();b.addClass("layui-layer-tabnow").siblings().removeClass("layui-layer-tabnow"),c.eq(d).show().siblings().hide()})}},a))},layer.photos=function(a,c,d){function e(a,b,c){var d=new Image;d.onload=function(){d.onload=null,b(d)},d.onerror=function(a){d.onerror=null,c(a)},d.src=a}var f={};if(a=a||{},a.photos){var g=a.photos.constructor===Object,h=g?a.photos:{},i=h.data||[],j=h.start||0;if(f.imgIndex=j+1,g){if(0===i.length)return void layer.msg("没有图片")}else{var k=$(a.photos),l=k.find(a.img||"img");if(0===l.length)return;if(c||k.find(h.img||"img").each(function(b){var c=$(this);i.push({alt:c.attr("alt"),pid:c.attr("layer-pid"),src:c.attr("layer-src")||c.attr("src"),thumb:c.attr("src")}),c.on("click",function(){layer.photos($.extend(a,{photos:{start:b,data:i,tab:a.tab},full:a.full}),!0)})}),!c)return}f.imgprev=function(a){f.imgIndex--,f.imgIndex<1&&(f.imgIndex=i.length),f.tabimg(a)},f.imgnext=function(a,b){f.imgIndex++,f.imgIndex>i.length&&(f.imgIndex=1,b)||f.tabimg(a)},f.keyup=function(a){if(!f.end){var b=a.keyCode;a.preventDefault(),37===b?f.imgprev(!0):39===b?f.imgnext(!0):27===b&&layer.close(f.index)}},f.tabimg=function(b){i.length<=1||(h.start=f.imgIndex-1,layer.close(f.index),layer.photos(a,!0,b))},f.event=function(){f.bigimg.hover(function(){f.imgsee.show()},function(){f.imgsee.hide()}),f.bigimg.find(".layui-layer-imgprev").on("click",function(a){a.preventDefault(),f.imgprev()}),f.bigimg.find(".layui-layer-imgnext").on("click",function(a){a.preventDefault(),f.imgnext()}),$(document).on("keyup",f.keyup)},f.loadi=layer.load(1,{shade:"shade"in a?!1:.9,scrollbar:!1}),e(i[j].src,function(c){layer.close(f.loadi),f.index=layer.open($.extend({type:1,area:function(){var b=[c.width,c.height],d=[$(window).width()-100,$(window).height()-100];return!a.full&&b[0]>d[0]&&(b[0]=d[0],b[1]=b[0]*d[1]/b[0]),[b[0]+"px",b[1]+"px"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:".layui-layer-phimg img",moveType:1,scrollbar:!1,moveOut:!0,shift:5*Math.random()|0,skin:"layui-layer-photos"+b("photos"),content:'
    '+(i[j].alt||
    '+(i.length>1?'':"")+'
    '+(i[j].alt||"")+""+f.imgIndex+"/"+i.length+"
    ",success:function(b,c){f.bigimg=b.find(".layui-layer-phimg"),f.imgsee=b.find(".layui-layer-imguide,.layui-layer-imgbar"),f.event(b),a.tab&&a.tab(i[j],b)},end:function(){f.end=!0,$(document).off("keyup",f.keyup)}},a))},function(){layer.close(f.loadi),layer.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){i.length>1&&f.imgnext(!0,!0)}})})}}}(); -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/layer/skin/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/layer/skin/default/icon.png -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/layer/skin/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/layer/skin/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/plugins/layer/skin/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/layer.css: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @Name: layer's style 4 | @Author: 贤心 5 | @Blog: sentsin.com 6 | 7 | */*html{background-image:url(about:blank);background-attachment:fixed}html #layui_layer_skinlayercss{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{top:150px;left:50%;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;box-shadow:1px 1px 50px rgba(0,0,0,.3);border-radius:2px;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.3);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-moves{position:absolute;border:3px solid #666;border:3px solid rgba(0,0,0,.5);cursor:move;background-color:#fff;background-color:rgba(255,255,255,.3);filter:alpha(opacity=50)}.layui-layer-load{background:url(default/loading-0.gif) center center no-repeat #fff}.layui-layer-ico{background:url(default/icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layui-anim{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.03);transform:scale(1.03)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layui-anim-close{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layui-anim-01{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layui-anim-02{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layui-anim-03{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layui-anim-04{-webkit-animation-name:rollIn;animation-name:rollIn}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-anim-05{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layui-anim-06{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:0 -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 10px 12px;pointer-events:auto}.layui-layer-btn a{height:28px;line-height:28px;margin:0 6px;padding:0 15px;border:1px solid #dedede;background-color:#f1f1f1;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.7}.layui-layer-btn .layui-layer-btn0{border-color:#4898d5;background-color:#2e8ded;color:#fff}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;font-size:14px;overflow:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe .layui-layer-content{overflow:hidden}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(default/loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:5px 10px;font-size:12px;_float:left;border-radius:3px;box-shadow:1px 1px 3px rgba(0,0,0,.3);background-color:#F90;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#F90}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:1px;border-bottom-style:solid;border-bottom-color:#F90}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-lan .layui-layer-btn{padding:10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#BBB5B5;border:none}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1} -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/layer/skin/layer.ext.css: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | @Name: layer拓展样式 4 | @Date: 2012.12.13 5 | @Author: 贤心 6 | @blog: sentsin.com 7 | 8 | */.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span{text-overflow:ellipsis;white-space:nowrap}.layui-layer-iconext{background:url(default/icon-ext.png) no-repeat}html #layui_layer_skinlayerextcss{display:none;position:absolute;width:1989px}.layui-layer-prompt .layui-layer-input{display:block;width:220px;height:30px;margin:0 auto;line-height:30px;padding:0 5px;border:1px solid #ccc;box-shadow:1px 1px 5px rgba(0,0,0,.1) inset;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;border-bottom:1px solid #ccc;background-color:#eee;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;cursor:default;overflow:hidden}.layui-layer-tab .layui-layer-title span.layui-layer-tabnow{height:43px;border-left:1px solid #ccc;border-right:1px solid #ccc;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.xubox_tab_layer{display:block}.xubox_tabclose{position:absolute;right:10px;top:5px;cursor:pointer}.layui-layer-photos{-webkit-animation-duration:1s;animation-duration:1s;}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal} -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/laypage/laypage.js: -------------------------------------------------------------------------------- 1 | /*! layPage-v1.3.0 分页组件 License MIT http://laypage.layui.com/ By 贤心 */ 2 | ;!function(){"use strict";function a(d){var e="laypagecss";a.dir="dir"in a?a.dir:f.getpath+"/skin/laypage.css",new f(d),a.dir&&!b[c](e)&&f.use(a.dir,e)}a.v="1.3";var b=document,c="getElementById",d="getElementsByTagName",e=0,f=function(a){var b=this,c=b.config=a||{};c.item=e++,b.render(!0)};f.on=function(a,b,c){return a.attachEvent?a.attachEvent("on"+b,function(){c.call(a,window.even)}):a.addEventListener(b,c,!1),f},f.getpath=function(){var a=document.scripts,b=a[a.length-1].src;return b.substring(0,b.lastIndexOf("/")+1)}(),f.use=function(c,e){var f=b.createElement("link");f.type="text/css",f.rel="stylesheet",f.href=a.dir,e&&(f.id=e),b[d]("head")[0].appendChild(f),f=null},f.prototype.type=function(){var a=this.config;return"object"==typeof a.cont?void 0===a.cont.length?2:3:void 0},f.prototype.view=function(){var b=this,c=b.config,d=[],e={};if(c.pages=0|c.pages,c.curr=0|c.curr||1,c.groups="groups"in c?0|c.groups:5,c.first="first"in c?c.first:"首页",c.last="last"in c?c.last:"尾页",c.prev="prev"in c?c.prev:"上一页",c.next="next"in c?c.next:"下一页",c.pages<=1)return"";for(c.groups>c.pages&&(c.groups=c.pages),e.index=Math.ceil((c.curr+(c.groups>1&&c.groups!==c.pages?1:0))/(0===c.groups?1:c.groups)),c.curr>1&&c.prev&&d.push(''+c.prev+""),e.index>1&&c.first&&0!==c.groups&&d.push(''+c.first+""),e.poor=Math.floor((c.groups-1)/2),e.start=e.index>1?c.curr-e.poor:1,e.end=e.index>1?function(){var a=c.curr+(c.groups-e.poor-1);return a>c.pages?c.pages:a}():c.groups,e.end-e.start"+e.start+""):d.push(''+e.start+"");return c.pages>c.groups&&e.end'+c.last+""),e.flow=!c.prev&&0===c.groups,(c.curr!==c.pages&&c.next||e.flow)&&d.push(function(){return e.flow&&c.curr===c.pages?''+c.next+"":''+c.next+""}()),'
    '+d.join("")+function(){return c.skip?'':""}()+"
    "},f.prototype.jump=function(a){if(a){for(var b=this,c=b.config,e=a.children,g=a[d]("button")[0],h=a[d]("input")[0],i=0,j=e.length;j>i;i++)"a"===e[i].nodeName.toLowerCase()&&f.on(e[i],"click",function(){var a=0|this.getAttribute("data-page");c.curr=a,b.render()});g&&f.on(g,"click",function(){var a=0|h.value.replace(/\s|\D/g,"");a&&a<=c.pages&&(c.curr=a,b.render())})}},f.prototype.render=function(a){var d=this,e=d.config,f=d.type(),g=d.view();2===f?e.cont.innerHTML=g:3===f?e.cont.html(g):b[c](e.cont).innerHTML=g,e.jump&&e.jump(e,a),d.jump(b[c]("laypage_"+e.item)),e.hash&&!a&&(location.hash="!"+e.hash+"="+e.curr)},"function"==typeof define?define(function(){return a}):"undefined"!=typeof exports?module.exports=a:window.laypage=a}(); -------------------------------------------------------------------------------- /src/main/webapp/static/plugins/laypage/skin/laypage.css: -------------------------------------------------------------------------------- 1 | /*! 2 | laypage默认样式 3 | */.laypage_main a,.laypage_main input,.laypage_main span{height:26px;line-height:26px}.laypage_main button,.laypage_main input,.laypageskin_default a{border:1px solid #ccc;background-color:#fff}.laypage_main{font-size:0;clear:both;color:#666}.laypage_main *{display:inline-block;vertical-align:top;font-size:12px}.laypage_main a{text-decoration:none;color:#666}.laypage_main a,.laypage_main span{margin:0 3px 6px;padding:0 10px}.laypage_main input{width:40px;margin:0 5px;padding:0 5px}.laypage_main button{height:28px;line-height:28px;margin-left:5px;padding:0 10px;color:#666}.laypageskin_default span{height:28px;line-height:28px;color:#999}.laypageskin_default .laypage_curr{font-weight:700;color:#666}.laypageskin_molv a,.laypageskin_molv span{padding:0 12px;border-radius:2px}.laypageskin_molv a{background-color:#f1eff0}.laypageskin_molv .laypage_curr{background-color:#00AA91;color:#fff}.laypageskin_molv input{height:24px;line-height:24px}.laypageskin_molv button{height:26px;line-height:26px}.laypageskin_yahei{color:#333}.laypageskin_yahei a,.laypageskin_yahei span{padding:0 13px;border-radius:2px;color:#333}.laypageskin_yahei .laypage_curr{background-color:#333;color:#fff}.laypageskin_flow{text-align:center}.laypageskin_flow .page_nomore{color:#999} -------------------------------------------------------------------------------- /src/main/webapp/static/source/css/chess.css: -------------------------------------------------------------------------------- 1 | *{ 2 | margin:0; 3 | padding:0; 4 | } 5 | canvas 6 | { 7 | margin:100px auto; 8 | display:block; 9 | box-shadow:0px 0px 10px #000; 10 | border:1px solid #000; 11 | position:absolute; 12 | left:350; 13 | } 14 | 15 | #sp 16 | { 17 | color:#123456; 18 | font-family:"Times New Roman",Times,serif; 19 | font-size:30px; 20 | text-shadow:5px 5px 5px #321456; 21 | position:absolute; 22 | left:430px; 23 | top:50px; 24 | } 25 | .button2 { 26 | display: inline-block; 27 | zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ 28 | *display: inline; 29 | vertical-align: baseline; 30 | margin: 0 2px; 31 | outline: none; 32 | cursor: pointer; 33 | text-align: center; 34 | text-decoration: none; 35 | font: 14px/100% Arial, Helvetica, sans-serif; 36 | padding: .5em 2em .55em; 37 | text-shadow: 0 1px 1px rgba(0,0,0,.3); 38 | -webkit-border-radius: .5em; 39 | -moz-border-radius: .5em; 40 | border-radius: .5em; 41 | -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); 42 | -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); 43 | box-shadow: 0 1px 2px rgba(0,0,0,.2); 44 | position:relative; 45 | left:800px; 46 | top:500px; 47 | } 48 | 49 | .online 50 | { 51 | position:absolute; 52 | left:600px; 53 | top:260px; 54 | 55 | } 56 | .canvasplace 57 | { 58 | position:absolute; 59 | left:550px; 60 | top:150px; 61 | } 62 | .biaoti 63 | { 64 | position:absolute; 65 | left:660px; 66 | top:190px; 67 | } -------------------------------------------------------------------------------- /src/main/webapp/static/source/css/login.css: -------------------------------------------------------------------------------- 1 | /*-- 2 | Author: W3layouts 3 | Author URL: http://w3layouts.com 4 | License: Creative Commons Attribution 3.0 Unported 5 | License URL: http://creativecommons.org/licenses/by/3.0/ 6 | --*/ 7 | /* reset */ 8 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,nav ul,nav li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;} 9 | article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;} 10 | ol,ul{list-style:none;margin:0px;padding:0px;} 11 | blockquote,q{quotes:none;} 12 | blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;} 13 | table{border-collapse:collapse;border-spacing:0;} 14 | /* start editing from here */ 15 | a{text-decoration:none;} 16 | .txt-rt{text-align:right;}/* text align right */ 17 | .txt-lt{text-align:left;}/* text align left */ 18 | .txt-center{text-align:center;}/* text align center */ 19 | .float-rt{float:right;}/* float right */ 20 | .float-lt{float:left;}/* float left */ 21 | .clear{clear:both;}/* clear float */ 22 | .pos-relative{position:relative;}/* Position Relative */ 23 | .pos-absolute{position:absolute;}/* Position Absolute */ 24 | .vertical-base{ vertical-align:baseline;}/* vertical align baseline */ 25 | .vertical-top{ vertical-align:top;}/* vertical align top */ 26 | nav.vertical ul li{ display:block;}/* vertical menu */ 27 | nav.horizontal ul li{ display: inline-block;}/* horizontal menu */ 28 | img{max-width:100%;} 29 | /*end reset*/ 30 | /****-----start-body----****/ 31 | body{ 32 | background: url(../img/bizhi.jpg) no-repeat 0px 0px; 33 | font-family: 'Open Sans', sans-serif; 34 | background-size:cover; 35 | -webkit-background-size:cover; 36 | -moz-background-size:cover; 37 | -o-background-size:cover; 38 | /*min-height:1050px;*/ 39 | } 40 | .wrap{ 41 | margin: 0 auto; 42 | width: 80%; 43 | } 44 | body a,form li,input[type="submit"],input[type="text"],.sixth-login input[type="submit"],.third-login input[type="submit"]{ 45 | transition: 0.1s all; 46 | -webkit-transition: 0.1s all; 47 | -moz-transition: 0.1s all; 48 | -o-transition: 0.1s all; 49 | } 50 | /*--close--*/ 51 | .close{ 52 | background: url('../img/close.png') no-repeat 0px 0px; 53 | cursor: pointer; 54 | width: 20px; 55 | height: 20px; 56 | position: absolute; 57 | left: 20px; 58 | top: 20px; 59 | -webkit-transition: color 0.2s ease-in-out; 60 | -moz-transition: color 0.2s ease-in-out; 61 | -o-transition: color 0.2s ease-in-out; 62 | transition: color 0.2s ease-in-out; 63 | } 64 | /*--/close--*/ 65 | h1 { 66 | font-family: 'Exo 2', sans-serif; 67 | text-align: center; 68 | padding-top: 4em; 69 | font-weight: 400; 70 | color: #2B2B36; 71 | font-size: 2em; 72 | } 73 | .login-form { 74 | background: #2b2b36; 75 | position: relative; 76 | width: 30%; 77 | margin: 3% auto 0 auto; 78 | text-align: center; 79 | border-radius: 15px; 80 | -webkit-border-radius: 15px; 81 | -moz-border-radius: 15px; 82 | -o-border-radius: 15px; 83 | } 84 | .head img { 85 | width: 100%; 86 | } 87 | .avtar img { 88 | margin: 2em 0 0; 89 | } 90 | .head-info { 91 | padding: 5px 0; 92 | text-align: center; 93 | font-weight: 600; 94 | font-size: 2em; 95 | color: #fff; 96 | background: #23232e; 97 | height: 50px; 98 | border-top-left-radius: 10px; 99 | -webkit-border-top-left-radius: 10px; 100 | -moz-border-top-left-radius: 10px; 101 | -o-border-top-left-radius: 10px; 102 | border-top-right-radius: 10px; 103 | -webkit-border-top-right-radius: 10px; 104 | -moz-border-top-right-radius: 10px; 105 | -o-border-top-right-radius: 10p 106 | } 107 | input[type="text"] { 108 | width: 70%; 109 | padding: 1em 2em 1em 3em; 110 | color: #9199aa; 111 | font-size: 18px; 112 | outline: none; 113 | background: url(../img/adm.png) no-repeat 10px 15px; 114 | border: none; 115 | font-weight: 100; 116 | border-bottom: 1px solid#484856; 117 | margin-top: 2em; 118 | } 119 | input[type="password"]{ 120 | width: 70%; 121 | padding: 1em 2em 1em 3em; 122 | color: #dd3e3e; 123 | font-size: 18px; 124 | outline: none; 125 | background: url(../img/key.png) no-repeat 10px 23px; 126 | border: none; 127 | font-weight: 100; 128 | border-bottom: 1px solid#484856; 129 | margin-bottom: 3em; 130 | } 131 | input[type="submit"]{ 132 | font-size: 30px; 133 | color: #fff; 134 | outline: none; 135 | border: none; 136 | background: #3ea751; 137 | width: 100%; 138 | padding: 18px 0; 139 | border-bottom-left-radius: 15px; 140 | -webkit-border-bottom-left-radius: 15px; 141 | -moz-border-bottom-left-radius: 15px; 142 | -o-border-bottom-left-radius: 15px; 143 | border-bottom-right-radius: 15px; 144 | -webkit-border-bottom-right-radius: 15px; 145 | -moz-border-bottom-right-radius: 15px; 146 | -o-border-bottom-right-radius: 15px; 147 | cursor: pointer; 148 | } 149 | input[type="submit"]:hover { 150 | background: #ff2775; 151 | border-bottom-left-radius: 15px; 152 | -webkit-border-bottom-left-radius: 15px; 153 | -moz-border-bottom-left-radius: 15px; 154 | -o-border-bottom-left-radius: 15px; 155 | border-bottom-right-radius: 15px; 156 | -webkit-border-bottom-right-radius: 15px; 157 | -moz-border-bottom-right-radius: 15px; 158 | -o-border-bottom-right-radius: 15px; 159 | transition: 1s all; 160 | -webkit-transition: 1s all; 161 | -moz-transition: 1s all; 162 | -o-transition: 1s all; 163 | } 164 | label.lbl-1 { 165 | background: #6756ea; 166 | width: 20px; 167 | height: 20px; 168 | display: block; 169 | float: right; 170 | border-radius: 50%; 171 | margin: 16px 10px 0px 0px; 172 | } 173 | label.lbl-2 { 174 | background: #ea569a; 175 | width: 20px; 176 | height: 20px; 177 | display: block; 178 | float: right; 179 | border-radius: 50%; 180 | margin: 16px 10px 0px 0px; 181 | } 182 | label.lbl-3 { 183 | background: #f1c85f; 184 | width: 20px; 185 | height: 20px; 186 | display: block; 187 | float: right; 188 | border-radius: 50%; 189 | margin: 16px 10px 0px 0px; 190 | } 191 | /*--copyrights--*/ 192 | .copy-rights{ 193 | text-align: center; 194 | margin-top: 8em; 195 | } 196 | .copy-rights p{ 197 | color:#FFF; 198 | font-size: 1em; 199 | line-height:1.8em; 200 | } 201 | .copy-rights p a{ 202 | color:#ff2a75; 203 | -webkit-transition: all 0.3s ease-out; 204 | -moz-transition: all 0.3s ease-out; 205 | -ms-transition: all 0.3s ease-out; 206 | -o-transition: all 0.3s ease-out; 207 | transition: all 0.3s ease-out; 208 | text-decoration:none; 209 | } 210 | .copy-rights p a:hover{ 211 | color:#3faa53; 212 | text-decoration:none; 213 | transition: 0.1s all; 214 | -webkit-transition: 0.1s all; 215 | -moz-transition: 0.1s all; 216 | -o-transition: 0.1s all; 217 | } 218 | /*--/copyrights--*/ 219 | /*--start-responsive-design--*/ 220 | @media (max-width:1440px){ 221 | body { 222 | min-height: 811px; 223 | } 224 | } 225 | @media (max-width:1366px){ 226 | .copy-rights { 227 | margin-top: 3em; 228 | } 229 | body { 230 | min-height: 768px; 231 | } 232 | } 233 | @media (max-width:1280px){ 234 | body { 235 | min-height: 711px; 236 | } 237 | .copy-rights { 238 | margin-top: 0.5em; 239 | } 240 | } 241 | @media (max-width:1024px){ 242 | .login-form { 243 | width: 37%; 244 | } 245 | .copy-rights { 246 | margin-top: 3em; 247 | } 248 | h1 { 249 | padding-top: 2em; 250 | } 251 | body { 252 | min-height: 675px; 253 | } 254 | } 255 | @media (max-width:768px){ 256 | .login-form { 257 | width: 50%; 258 | margin: 12% auto 0 auto; 259 | } 260 | body { 261 | min-height: 929px; 262 | } 263 | } 264 | @media (max-width:640px){ 265 | .login-form { 266 | width: 60%; 267 | margin: 20% auto 0 auto; 268 | } 269 | } 270 | @media (max-width:480px){ 271 | .login-form { 272 | width: 80%; 273 | } 274 | } 275 | @media (max-width:320px){ 276 | h1 { 277 | padding-top: 1em; 278 | font-size: 1.5em; 279 | } 280 | .login-form { 281 | width: 90%; 282 | margin: 10% auto 0 auto; 283 | } 284 | input[type="text"] { 285 | width: 62%; 286 | padding: 1.2em 2em .5em 2.5em; 287 | font-size: 17px; 288 | margin-top: .5em; 289 | } 290 | input[type="password"] { 291 | width: 62%; 292 | padding: 1.2em 2em .5em 2.5em; 293 | font-size: 17px; 294 | margin-top: .5em; 295 | margin-bottom: 2em; 296 | background: url(../img/key.png) no-repeat 8px 23px; 297 | } 298 | .avtar img { 299 | margin: 1.1em 0 0; 300 | } 301 | .head-info { 302 | height: 35px; 303 | } 304 | label.lbl-1 { 305 | margin: 8px 10px 0px 0px; 306 | } 307 | label.lbl-2 { 308 | margin: 8px 10px 0px 0px; 309 | } 310 | label.lbl-3 { 311 | margin: 8px 10px 0px 0px; 312 | } 313 | .close { 314 | left: 16px; 315 | top: 13px; 316 | } 317 | .copy-rights { 318 | margin-top: 2em; 319 | } 320 | body { 321 | min-height: 504px; 322 | } 323 | input[type="submit"] { 324 | font-size: 28px; 325 | padding: 10px 0; 326 | } 327 | .register1 328 | { 329 | position:relative; 330 | left:-10px; 331 | color:red; 332 | } 333 | /*--end-responsive-design--*/ -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/adm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/adm.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/avtar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/avtar.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/baizi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/baizi.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bg1.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bg2.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bg3.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bg4.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bg5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bg5.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bizhi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bizhi.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/bizhi1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/bizhi1.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/close.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/default_head.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/default_head.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/heizi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/heizi.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/key.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/ricepaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/ricepaper.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/robot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/robot.jpg -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/touxiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/touxiang.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/img/touxiang1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SinceNovember/websocketchat/385b32ef7d49f2238680d7a599d2958305232c51/src/main/webapp/static/source/img/touxiang1.png -------------------------------------------------------------------------------- /src/main/webapp/static/source/js/ai2.min.js: -------------------------------------------------------------------------------- 1 | var INFINITE=999999;var PD={A1:0,D2:1,D3:2,D4:3,A2:4,A3:5,A2_A2:6,A3_A3:7,D4_A3:8,D4_D4:9,A4:10,A5:11};var PV=[0,1,2,4,8,16,32,64,128,256,512,1024];var FS=[[0,0,"A1"],[1,5,"D2"],[1,5,"D3"],[1,5,"D4"],[3,10,"A2"],[3,15,"A3"],[4,30,"A2_A2"],[14,500,"A3_A3"],[18,1500,"D4_A3"],[19,2000,"D4_D4"],[20,2000,"A4"],[22,INFINITE,"A5"]];var LS=[[0,0,"A1"],[1,5,"D2"],[1,5,"D3"],[1,14000,"D4"],[3,10,"A2"],[3,1000,"A3"],[3,30,"A2_A2"],[13,1200,"A3_A3"],[15,15000,"D4_A3"],[16,20000,"D4_D4"],[17,20000,"A4"],[21,INFINITE]];function Brain(){var q=6;var k=10;var t;var n;var l,a;var b=false;var c=false;var e=false;this.setLevel=function(u){if(u==1){b=c=e=false}else{if(u==2){c=true;b=false;e=false}else{if(u==3){c=true;b=true;e=false}else{if(u==4){c=true;b=true;e=true}}}}};var d=function(y){var v=(t[y]>0)?1:-1;for(var w=-2;w<=2;++w){for(var u=-2;u<=2;++u){var x=y+w+u*(BS+2);if(x>=0&&x=0){n[x]+=v}}}};var p=function(C,x,N,M){var L=PD.A1;var E=1;var R=0,P=0;var w=0,v=0;for(var T=1;T<=4;++T){var O=C+(-T)*N+(-T)*M*(BS+2);if(t[O]<0){break}var z=t[O];if(z==x){R=w=-T;++E}else{if(z==0){w=-T}else{break}}}for(var T=1;T<=4;++T){var O=C+T*N+T*M*(BS+2);if(t[O]<0){break}var z=t[O];if(z==x){P=v=T;++E}else{if(z==0){v=T}else{break}}}var D=v-w+1;if(D>=5&&E>1){if(P-R>4){var K=0;var I,G;for(var T=R;T<=P-4;++T){var F=1,A,y;var B=true;for(var S=T;S<=T+4;++S){var O=C+S*N+S*M*(BS+2);if(t[O]==x){++F;if(B){y=A=S;B=false}else{y=S}}}if(A>0){A=0}if(y<0){y=0}if(F>K){K=F;I=A;G=y}else{if(F==K){if(y-A0){R=0}if(P<0){P=0}}var Q=P-R+1;var u=false;var J=C+(R-1)*N+(R-1)*M*(BS+2);var H=C+(P+1)*N+(P+1)*M*(BS+2);if(t[J]>=0&&t[H]>=0){u=(t[J]==0||t[J]==x)&&(t[H]==0||t[H]==x)}switch(E){case 5:L=PD.A5;break;case 4:L=(D>5&&Q==4&&u)?PD.A4:PD.D4;break;case 3:L=(D>5&&Q<=4&&u)?PD.A3:PD.D3;break;case 2:if(D>5){if(Q==2&&u){L=PD.A2}else{if(Q==3){L=PD.D2}}}break}}return L};var j=function(y,A){var C=new Array(12);for(var x=0;x<12;++x){C[x]=0}C[p(y,A,1,0)]++;C[p(y,A,0,1)]++;C[p(y,A,1,1)]++;C[p(y,A,1,-1)]++;var u=C[PD.A3];var B=C[PD.D4];if(C[PD.A2]>=2){C[PD.A2_A2]++}if(u>=2){C[PD.A3_A3]++}if(B>=2){C[PD.D4_D4]++}else{if(B>=1&&u>=1){C[PD.D4_A3]++}}var v=0;var z=0;for(var w=11;w>=0;--w){if(C[w]!=0){v|=PV[w];if(z==0){z=w}}}return[z,v]};var h=function(u){var v=function(x,w){for(var z=1;z<=4;++z){var y=u+z*x+z*w*(BS+2);if(y>=0&&y0){a[y]=j(y,1);l[y]=j(y,2)}else{a[y]=l[y]=-1}}}};v(1,0);v(-1,0);v(0,1);v(0,-1);v(1,1);v(-1,-1);v(1,-1);v(-1,1)};var g=function(v,w){var u=w[0]+w[1]*(BS+2);t[u]=v;a[u]=l[u]=-1;d(u);h(u)};var f=function(v){var u=v[0]+v[1]*(BS+2);t[u]=0;d(u);if(n[u]>0){a[u]=j(u,1);l[u]=j(u,2)}else{a[u]=l[u]=-1}h(u)};this.scan=function(A){t=A.getData();n=new Array(DS);l=new Array(DS);a=new Array(DS);for(var z=0;z0){d(w)}}}for(var u=1;u<=BS;++u){for(var B=1;B<=BS;++B){var w=u+B*(BS+2);var v=t[w];if(v==0&&n[w]>0){a[w]=j(w,1);l[w]=j(w,2)}}}return[n,a,l]};var m=function(J){var z=(J==BLACK)?a:l;var D=(J==BLACK)?l:a;var u=(J==BLACK);var w=-1;var F=[];var A={};var B=true;for(var G=1;G<=BS;++G){for(var E=1;E<=BS;++E){var C=G+E*(BS+2);if(z[C]!=-1&&D[C]!=-1){var I=FS[z[C][0]][0];var H=LS[D[C][0]][0];if(I<13&&u){++I}if(H<13&&(!u)){++H}var K=I>H?I:H;var v=[G,E];if(K>w){w=K;F=[v];A={};A[v]=I+H;B=(I>H)}else{if(K==w){F.push(v);A[v]=I+H}}}}}if(F.length>1){F.sort(function(y,x){var L=0.5;if(A[y]A[x]){deta=0.2}}return Math.random()-L})}return[w,F,B]};var r=function(z,A){var w=(z==BLACK)?l:a;var v=[];var u=A[0];var C=A[1];var B=function(y,x){for(var E=1;E<=4;++E){var H=u+E*y;var G=C+E*x;var D=H+G*(BS+2);if(t[D]<0){break}if(t[D]==0){var F=w[D][1];if(F&PV[PD.A5]){v=[[H,G]];return false}if(F&PV[PD.A4]){v.push([H,G])}}}return true};if(B(1,0)&&B(-1,0)&&B(0,1)&&B(0,-1)&&B(1,1)&&B(-1,-1)&&B(1,-1)&&B(-1,1)){}return v};var i=function(O,U,I,W){if(U>=q){return false}var S=(O==BLACK)?a:l;var V=(O==BLACK)?l:a;var R=[];var B=-1;var T=-1;var v=[];for(var F=1;F<=BS;++F){for(var D=1;D<=BS;++D){var C=F+D*(BS+2);if(S[C]!=-1){var M=S[C][1];if((M&PV[PD.D4])||(M&PV[PD.A4])||(M&PV[PD.A3])){R.push([F,D])}var G=FS[S[C][0]][0];var E=LS[V[C][0]][0];if(G>B){v=[F,D];B=G}if(E>T){T=E}}}}if(B>T&&B>=13){I.push(v);return true}else{if(B13){return false}}for(var Q=0;QH?J:H;if(w>6){continue}}g(O,A);var L=r(3-O,A);var K=false;var u;for(var P=0;PE?F:E;if(v>6){continue}}g(I,z);var w=r(3-I,z)[0];g(3-I,w);var G=o(I,M+1,D,z);f(w);f(z);if(G){D.push(z);return true}}return false};var s=function(A){var z=(A==BLACK)?a:l;var v=[];var C={};for(var u=1;u<=BS;++u){for(var D=1;D<=BS;++D){var w=u+D*(BS+2);if(z[w]!=-1&&n[w]>0){var B=z[w][0];if(B==PD.A2_A2||B==PD.A2||B==PD.D3||B==PD.A2){v.push([u,D])}}}}v.sort(function(E,x){var F=E[0]+E[1]*(BS+2);var y=x[0]+x[1]*(BS+2);return n[F]-n[y]});return v};this.findBestStep=function(y){var x=(new Date()).getTime();this.scan(y);var C=y.getPlayer();var F=m(C);var D=F[0];var w=F[1];var v=F[2];var B=[];while(c||b){var z;if(D>=18){B=w[0];break}z=[];if(c&&o(C,0,z)&&z.length>0){console.debug("VCF detected,result:"+z);B=z[z.length-1];break}z=[];if(c&&o(3-C,0,z)&&z.length>0){console.debug("VCF detected for opp,result:"+z);var E=false;var u;while(z.length>0&&!E){u=z.pop();console.debug("try to defend vcf at step:"+u);g(C,u);if(!o(3-C,0,[])){B=u;if(!i(3-C,0,[])){E=true}}f(u)}if(B.length==0){B=w[0]}break}if(D>=14){B=w[0];break}z=[];if(b&&i(C,0,z)&&z.length>0){console.debug("VCT detected,result:"+z);B=z[z.length-1];break}z=[];if(b&&i(3-C,0,z)&&z.length>0){console.debug("VCT detected for opp,result:"+z);var E=false;while(z.length>0&&!E){B=z.pop();console.debug("try to defend vct at step:"+B);g(C,B);if(!i(3-C,0,[])){E=true}f(B)}if(!E){B=w[0]}break}if(e){z=s(BLACK);var E=false;while(z.length>0&&!E&&(((new Date()).getTime()-x)<=5000)){var u=z.pop();g(BLACK,u);if(o(BLACK,0,[])||i(BLACK,0,[])){console.debug("VC2 detected,step:"+u);B=u;E=true}f(u)}}break}if(B.length==0){if(w.length>1){var A=Math.floor((Math.random()*w.length));B=w[A]}else{B=w[0]}}x=(new Date()).getTime()-x;console.debug("best step:"+B+" ,costs:"+x+" ms");return B}}; -------------------------------------------------------------------------------- /src/main/webapp/static/source/js/board.js: -------------------------------------------------------------------------------- 1 | var BS = 15; //BOARD SIZE 2 | var BT = 17; 3 | var DS = 289; //17*17 4 | var CENTER = 8; 5 | var BLACK = 1; 6 | var WHITE = 2; 7 | var BORDER = -1; 8 | 9 | function pos(x,y){ 10 | return x+y*17; 11 | } 12 | 13 | function Board(){ 14 | var data = new Array(DS); 15 | var currentPlayer = 0; 16 | var history = []; 17 | 18 | var trogglePlayer = function(){ 19 | currentPlayer = 3 - currentPlayer; 20 | }; 21 | 22 | this.init = function(){ 23 | for(var i=0;iBS || y<1 || y>BS){ 52 | break; 53 | } 54 | if(data[pos(x,y)]==chess){ 55 | ++result; 56 | } 57 | else{ 58 | break; 59 | } 60 | } 61 | return result; 62 | }; 63 | 64 | this.isGameOver = function(){ 65 | if(history.length>0){ 66 | var chess = (history.length%2==1)?WHITE:BLACK; 67 | var laststep = history[history.length-1]; 68 | var x = laststep[0]; 69 | var y = laststep[1]; 70 | if(check(x,y,1,0,chess)+check(x,y,-1,0,chess)>=4){ 71 | return chess; 72 | } 73 | if(check(x,y,0,1,chess)+check(x,y,0,-1,chess)>=4){ 74 | return chess; 75 | } 76 | if(check(x,y,1,1,chess)+check(x,y,-1,-1,chess)>=4){ 77 | return chess; 78 | } 79 | if(check(x,y,1,-1,chess)+check(x,y,-1,1,chess)>=4){ 80 | return chess; 81 | } 82 | } 83 | for(var i=0;i0){ 107 | var step = history.pop(); 108 | data[pos(step[0],step[1])] = 0; 109 | currentPlayer = (history.length%2==1)?BLACK:WHITE; 110 | return true; 111 | } 112 | return false; 113 | }; 114 | 115 | this.getHistory = function(){ 116 | return history.slice(0); 117 | } 118 | 119 | this.getData = function(){ 120 | return data.slice(0); 121 | } 122 | 123 | this.init(); 124 | } 125 | -------------------------------------------------------------------------------- /src/main/webapp/system-setting.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | WebChat | 系统设置 7 | 8 | 9 | 10 | 11 |
    12 | 13 | 14 | 15 |
    16 | 17 |
    18 |
    系统设置 / form
    19 |
    20 | 21 |
    22 | 27 |
    28 |
    29 |
    30 |
    31 | 32 |
    33 |
    34 | 37 | 40 | 43 | 46 |
    47 |
    48 |
    49 |
    50 | 51 |
    52 |
    53 | 56 | 59 |
    60 |
    61 |
    62 |
    63 |
    64 | 65 |
    66 |
    67 |
    68 |
    69 | 70 |
    71 |
    72 |
    73 | 加载失败 74 |
    75 |
    76 | 78 | 79 |
    80 |
    81 | 82 | 93 |
    94 |
    95 |
    96 |
    97 |
    98 | 99 |
    100 | 101 |
    102 |
    103 | 104 |
    105 | 106 |
    107 | 108 |
    109 |
    110 | 111 |
    112 | 113 |
    114 | 115 |
    116 |
    117 | 118 |
    119 |
    120 | 121 |
    122 |
    123 |
    124 |
    125 |
    126 |
    127 | 128 | 129 | 130 | 131 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /src/main/webapp/view/include/commonfile.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/main/webapp/view/include/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 | -------------------------------------------------------------------------------- /src/main/webapp/view/include/header.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 3 | 4 |
    5 |
    6 | WebChat 网页聊天室 7 |
    8 | 9 |
    10 | 22 |
    23 |
    -------------------------------------------------------------------------------- /src/main/webapp/view/include/sidebar.jsp: -------------------------------------------------------------------------------- 1 | <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 |
    6 |
    7 | 29 |
    30 |
    31 |

    Welcome

    32 |

    欢迎使用WebChat聊天室~

    33 |
    34 |
    35 |
    36 |
    37 | --------------------------------------------------------------------------------