提交 567f1d85 编写于 作者: 7 7wc98#14

commit

上级 006fa474
......@@ -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>
......
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());
}
}
}
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");
}
}
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;
}
}
......@@ -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");
}
......
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";
}
}
}
......@@ -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");
......
......@@ -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
......@@ -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>
......
......@@ -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>
......
......@@ -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>
......
......@@ -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">
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册