Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
御承扬
Campus
提交
567f1d85
C
Campus
项目概览
御承扬
/
Campus
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Campus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
567f1d85
编写于
1月 17, 2021
作者:
7
7wc98#14
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
commit
上级
006fa474
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
217 addition
and
6 deletion
+217
-6
pom.xml
pom.xml
+27
-0
src/main/java/com/pyc/campus/batch/CsvBeanValidator.java
src/main/java/com/pyc/campus/batch/CsvBeanValidator.java
+45
-0
src/main/java/com/pyc/campus/batch/CsvJobListener.java
src/main/java/com/pyc/campus/batch/CsvJobListener.java
+34
-0
src/main/java/com/pyc/campus/bean/WebBean.java
src/main/java/com/pyc/campus/bean/WebBean.java
+33
-0
src/main/java/com/pyc/campus/config/WebMVCConfig.java
src/main/java/com/pyc/campus/config/WebMVCConfig.java
+1
-1
src/main/java/com/pyc/campus/controller/UploadController.java
...main/java/com/pyc/campus/controller/UploadController.java
+43
-0
src/main/java/com/pyc/campus/controller/WebController.java
src/main/java/com/pyc/campus/controller/WebController.java
+10
-1
src/main/resources/application.properties
src/main/resources/application.properties
+2
-1
src/main/resources/static/images/favicon.ico
src/main/resources/static/images/favicon.ico
+0
-0
src/main/resources/static/t.ico
src/main/resources/static/t.ico
+0
-0
src/main/resources/templates/PublicChatRoom.html
src/main/resources/templates/PublicChatRoom.html
+2
-1
src/main/resources/templates/page/Home.html
src/main/resources/templates/page/Home.html
+1
-0
src/main/resources/templates/page/ImportGrade.html
src/main/resources/templates/page/ImportGrade.html
+17
-1
src/main/resources/templates/page/Index.html
src/main/resources/templates/page/Index.html
+1
-0
src/main/resources/templates/page/PrivateChat.html
src/main/resources/templates/page/PrivateChat.html
+1
-1
未找到文件。
pom.xml
浏览文件 @
567f1d85
...
...
@@ -19,6 +19,17 @@
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<!--文件上传依赖-->
<dependency>
<groupId>
commons-fileupload
</groupId>
<artifactId>
commons-fileupload
</artifactId>
<version>
1.3.1
</version>
</dependency>
<dependency>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
<version>
2.3
</version>
</dependency>
<dependency>
<groupId>
javax.xml.bind
</groupId>
<artifactId>
jaxb-api
</artifactId>
...
...
@@ -77,6 +88,21 @@
<artifactId>
mysql-connector-java
</artifactId>
<version>
8.0.19
</version>
</dependency>
<!--批处理依赖-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-batch
</artifactId>
<exclusions>
<exclusion>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
...
...
@@ -123,6 +149,7 @@
<include>
**/*.svg
</include>
<include>
**/*.ttf
</include>
<include>
**/*.woff
</include>
<include>
**/*.ico
</include>
</includes>
</resource>
</resources>
...
...
src/main/java/com/pyc/campus/batch/CsvBeanValidator.java
0 → 100644
浏览文件 @
567f1d85
package
com.pyc.campus.batch
;
import
org.springframework.batch.item.validator.ValidationException
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.validation.Errors
;
import
org.springframework.batch.item.validator.Validator
;
import
javax.validation.ConstraintViolation
;
import
javax.validation.Validation
;
import
javax.validation.ValidatorFactory
;
import
java.util.Set
;
/**
* @author 御承扬
* @product IntelliJ IDEA
* @project campus
* @file CsvBeanValidator
* @pack com.pyc.campus.batch
* @date 2021/1/17
* @time 12:42
* @E-mail 2923616405@qq.com
**/
public
class
CsvBeanValidator
<
T
>
implements
Validator
<
T
>,
InitializingBean
{
private
javax
.
validation
.
Validator
validator
;
@Override
public
void
afterPropertiesSet
()
throws
Exception
{
ValidatorFactory
validatorFactory
=
Validation
.
buildDefaultValidatorFactory
();
validator
=
validatorFactory
.
usingContext
().
getValidator
();
}
@Override
public
void
validate
(
T
t
)
throws
ValidationException
{
Set
<
ConstraintViolation
<
T
>>
constraintViolations
=
validator
.
validate
(
t
);
if
(
constraintViolations
.
size
()>
0
){
StringBuilder
message
=
new
StringBuilder
();
for
(
ConstraintViolation
<
T
>
constraintViolation
:
constraintViolations
){
message
.
append
(
constraintViolation
.
getMessage
()).
append
(
"\n"
);
}
throw
new
ValidationException
(
message
.
toString
());
}
}
}
src/main/java/com/pyc/campus/batch/CsvJobListener.java
0 → 100644
浏览文件 @
567f1d85
package
com.pyc.campus.batch
;
import
org.springframework.batch.core.JobExecution
;
import
org.springframework.batch.core.JobExecutionListener
;
/**
* @author 御承扬
* @product IntelliJ IDEA
* @project campus
* @file CsvJobListener
* @pack com.pyc.campus.batch
* @date 2021/1/17
* @time 12:59
* @E-mail 2923616405@qq.com
**/
public
class
CsvJobListener
implements
JobExecutionListener
{
long
startTime
;
long
endTime
;
@Override
public
void
beforeJob
(
JobExecution
jobExecution
)
{
startTime
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"任务处理开始"
);
}
@Override
public
void
afterJob
(
JobExecution
jobExecution
)
{
endTime
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"任务处理结束"
);
System
.
out
.
println
(
"耗时:"
+
(
endTime
-
startTime
)
+
"ms"
);
}
}
src/main/java/com/pyc/campus/bean/WebBean.java
0 → 100644
浏览文件 @
567f1d85
package
com.pyc.campus.bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.web.multipart.MultipartResolver
;
import
org.springframework.web.multipart.commons.CommonsMultipartResolver
;
import
org.springframework.web.servlet.config.annotation.EnableWebMvc
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
/**
* @author 御承扬
* @product IntelliJ IDEA
* @project campus
* @file WebBean
* @pack com.pyc.campus.bean
* @date 2021/1/17
* @time 11:18
* @E-mail 2923616405@qq.com
**/
@EnableScheduling
@ComponentScan
(
"com.pyc.campus.bean"
)
public
class
WebBean
implements
WebMvcConfigurer
{
@Bean
public
MultipartResolver
multipartResolver
(){
CommonsMultipartResolver
multipartResolver
=
new
CommonsMultipartResolver
();
multipartResolver
.
setMaxUploadSize
(
1000000
);
return
multipartResolver
;
}
}
src/main/java/com/pyc/campus/config/WebMVCConfig.java
浏览文件 @
567f1d85
...
...
@@ -25,7 +25,7 @@ public class WebMVCConfig implements WebMvcConfigurer {
registry
.
addViewController
(
"/aboutEnglish"
).
setViewName
(
"page/AboutEnglish"
);
registry
.
addViewController
(
"/aboutMath"
).
setViewName
(
"page/AboutMath"
);
registry
.
addViewController
(
"/aboutPhilosophy"
).
setViewName
(
"page/AboutPhilosophy"
);
registry
.
addViewController
(
"/publicChatRoom"
).
setViewName
(
"PublicChatRoom"
);
//
registry.addViewController("/publicChatRoom").setViewName("PublicChatRoom");
registry
.
addViewController
(
"/chat"
).
setViewName
(
"page/PrivateChat"
);
registry
.
addViewController
(
"/signError"
).
setViewName
(
"page/SignError"
);
}
...
...
src/main/java/com/pyc/campus/controller/UploadController.java
0 → 100644
浏览文件 @
567f1d85
package
com.pyc.campus.controller
;
import
com.pyc.campus.domain.Msg
;
import
org.apache.commons.io.FileUtils
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.IOException
;
/**
* @author 御承扬
* @product IntelliJ IDEA
* @project campus
* @file UploadController
* @pack com.pyc.campus.controller
* @date 2021/1/17
* @time 11:23
* @E-mail 2923616405@qq.com
**/
@Controller
public
class
UploadController
{
@RequestMapping
(
value
=
"/upload"
,
method
=
RequestMethod
.
POST
)
public
String
upload
(
MultipartFile
file
,
Model
model
){
try
{
FileUtils
.
writeByteArrayToFile
(
new
File
(
"D:\\users\\lenovo\\Spring项目\\campus\\upLoadFilesSet\\"
+
file
.
getOriginalFilename
()),
file
.
getBytes
());
Msg
msg
=
new
Msg
(
"系统提示"
,
"导入成功"
,
""
);
model
.
addAttribute
(
"msg"
,
msg
);
return
"page/ImportGrade"
;
}
catch
(
IOException
e
){
e
.
printStackTrace
();
Msg
msg
=
new
Msg
(
"系统提示"
,
"导入失败"
,
""
);
model
.
addAttribute
(
"msg"
,
msg
);
return
"page/ImportGrade"
;
}
}
}
src/main/java/com/pyc/campus/controller/WebController.java
浏览文件 @
567f1d85
...
...
@@ -17,7 +17,6 @@ import org.springframework.security.core.context.SecurityContextImpl;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
...
...
@@ -184,6 +183,8 @@ public class WebController {
SecurityContextImpl
securityContext
=
(
SecurityContextImpl
)
session
.
getAttribute
(
"SPRING_SECURITY_CONTEXT"
);
String
currentStudentId
=
((
UserDetails
)
securityContext
.
getAuthentication
().
getPrincipal
()).
getUsername
();
Student
toUse
=
studentRepository
.
findNameByStudentID
(
toName
);
model
.
addAttribute
(
"curUser"
,
toUse
);
boolean
s
;
FriendList
s1
=
friendListRepository
.
getStatus
(
currentStudentId
,
toName
);
FriendList
s2
=
friendListRepository
.
getStatus
(
toName
,
currentStudentId
);
...
...
@@ -420,6 +421,14 @@ public class WebController {
model
.
addAttribute
(
"curUse"
,
s
);
return
"page/AdminPage"
;
}
@RequestMapping
(
"/publicChatRoom"
)
public
String
publicChatRoom
(
Model
model
,
HttpSession
session
){
SecurityContextImpl
securityContext
=
(
SecurityContextImpl
)
session
.
getAttribute
(
"SPRING_SECURITY_CONTEXT"
);
String
currentStudentId
=
((
UserDetails
)
securityContext
.
getAuthentication
().
getPrincipal
()).
getUsername
();
Student
s
=
studentRepository
.
findNameByStudentID
(
currentStudentId
);
model
.
addAttribute
(
"curUse"
,
s
);
return
"PublicChatRoom"
;
}
@RequestMapping
(
"/publishNews"
)
public
String
publishNews
(
Model
model
,
HttpSession
session
){
SecurityContextImpl
securityContext
=
(
SecurityContextImpl
)
session
.
getAttribute
(
"SPRING_SECURITY_CONTEXT"
);
...
...
src/main/resources/application.properties
浏览文件 @
567f1d85
...
...
@@ -12,5 +12,6 @@ spring.thymeleaf.cache=false
spring.thymeleaf.encoding
=
UTF-8
spring.thymeleaf.servlet.content-type
=
text/html
logging.level.org.springframework.security
=
INFO
spring.mvc.favicon.enabled
=
false
spring.batch.job.enabled
=
false
security.ignored
=
/test
\ No newline at end of file
src/main/resources/static/images/favicon.ico
0 → 100644
浏览文件 @
567f1d85
9.4 KB
src/main/resources/static/t.ico
0 → 100644
浏览文件 @
567f1d85
7.4 KB
src/main/resources/templates/PublicChatRoom.html
浏览文件 @
567f1d85
...
...
@@ -53,7 +53,8 @@
<div
class=
"col-md-8"
style=
"margin-left: 20%"
>
<form
class=
"form-inline"
id=
"chatForm"
style=
"margin-bottom: 25%"
>
<div
class=
"form-group"
>
<label
for=
"name"
>
输入名字:
</label><input
type=
"text"
name=
"name"
id=
"name"
/>
<label
for=
"name"
>
聊天用名:
</label><input
type=
"text"
name=
"name"
id=
"name"
th:value=
"${curUse.getName()}"
readonly=
"readonly"
/>
<label
for=
"text"
>
输入框:
</label>
<input
type=
"text"
name=
"text"
class=
"form-control"
id=
"text"
placeholder=
"输入要发送的信息"
>
</div>
...
...
src/main/resources/templates/page/Home.html
浏览文件 @
567f1d85
...
...
@@ -6,6 +6,7 @@
<meta
charset=
"UTF-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<title>
Home
</title>
<link
rel=
"shortcut icon"
href=
"/static/images/favicon.ico"
th:href=
"@{/static/images/favicon.ico}"
type=
"image/x-icon"
>
<link
rel=
"stylesheet"
href=
"https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"
>
<script
type=
"text/javascript"
src=
"../../static/js/jquery-1.11.3.js"
></script>
<script
src=
"https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"
></script>
...
...
src/main/resources/templates/page/ImportGrade.html
浏览文件 @
567f1d85
...
...
@@ -143,7 +143,7 @@
<hr
class=
"hidden-sm hidden-md hidden-lg"
>
</div>
<div
class=
"col-md-8"
>
<h1>
成绩导入
</h1>
<h1>
手动
成绩导入
</h1>
<div
class=
"starter-template"
>
<h1
th:text=
"${msg.title}"
></h1>
<p
class=
"bg-primary"
th:text=
"${msg.content}"
></p>
...
...
@@ -211,6 +211,22 @@
</div>
</form>
</div>
<h1>
以CSV文件格式批量导入成绩
</h1>
<div
class=
"form-box"
>
<form
class=
"form-horizontal"
method=
"post"
action=
"/upload"
th:action=
"@{/upload}"
enctype=
"multipart/form-data"
>
<div
class=
"form-group"
>
<label
for=
"chooseFile"
class=
"col-sm-2 control-label"
>
文件:
</label>
<div
class=
"col-sm-10"
>
<input
type=
"file"
id=
"chooseFile"
name=
"file"
>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-2 col-sm-10"
>
<input
type=
"submit"
class=
"btn btn-primary"
value=
"开始批量导入"
>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
...
...
src/main/resources/templates/page/Index.html
浏览文件 @
567f1d85
...
...
@@ -4,6 +4,7 @@
<meta
charset=
"UTF-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<title>
Welcome
</title>
<link
rel=
"shortcut icon"
href=
"favicon.ico"
type=
"image/x-icon"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../../static/css/swiper.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../../static/css/animate.min.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"../../static/css/oppo.css"
>
...
...
src/main/resources/templates/page/PrivateChat.html
浏览文件 @
567f1d85
...
...
@@ -41,7 +41,7 @@
<div
class=
"col-md-8"
style=
"margin-left: 20%"
>
<div
class=
"panel panel-primary"
>
<div
class=
"panel-heading"
>
<div
class=
"panel-title"
th:text=
"${toName}"
>
<div
class=
"panel-title"
th:text=
"${
curUser.getName() +
toName}"
>
</div>
</div>
</div>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录