后台设计使用springboot开发初涉及使用遇到的问题
1: 出现Controller扫描不到的问题解决
答: 将application放到主目录,也就是说将application放到controller的父级目录,将application上加注解
@Configuration
@ComponentScan
@EnableAutoConfiguration
再在相应的controller上加注解
@Controller
@EnableAutoConfiguration
2: 切记 默认的访问格式是表单格式
3: 关于插入输入数据无反应问题
答: 应在相应的@service下 添加数据更新操作
public intinsertSelective(VotcDeviceUser record) {
//TODO Auto-generated method stub
deviceUserMapper.insertSelective(record);
return0;
}
public intinsert(VotcDeviceUser record) {
//TODO Auto-generated method stub
deviceUserMapper.insert(record);
return0;
}
4: 关于项目中获取配置文件application.properties中配置信息需要注解
答:
@Value("${serverPICPath}")
privateStringserverPICPath;
5: 关于项目中上传数据 并指定相应的位置如下:
/*
* 文件上传具体实现方法(单文件上传(pic))
* 李腾
* 2017/11/14
* */
@ResponseBody
@RequestMapping(value ="/votcupload", method = RequestMethod.POST)
publicOBeanBase upload(HttpServletRequest request) {
// 返回信息
OBeanBase carrier =newOBeanBase();
// 先获取devicetoken
String devicetoken = request.getParameter("devicetoken");
// 获取当前用户
VotcDeviceUser deviceUser =deviceUserService.selectByPrimaryKey(devicetoken);
// 获取当前用户的userid
String userid = deviceUser.getUserid();
System.out.println(userid);
//转换request
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
// 获得文件
MultipartFile file = multipartHttpServletRequest.getFile("file");
if(!file.isEmpty()) {
// 获取文件名
String fileName = file.getOriginalFilename();
System.out.println("文件名:"+ fileName);
// 获取文件名的后缀
String suffixName = fileName.substring(fileName.lastIndexOf("."));
System.out.println("文件名的后缀:"+ suffixName);
// 创建保存目录
String picFilePath =UPLOADPICPath;
String tempStr ="\\";
picFilePath = picFilePath +"upload"+ tempStr + userid;
picFilePath = picFilePath + tempStr + fileName.substring(0,4);
picFilePath = picFilePath + tempStr + fileName.substring(4,6);
picFilePath = picFilePath + tempStr + fileName.substring(6,8);
picFilePath = picFilePath + tempStr + fileName;
System.out.println(picFilePath);
//判断是否为图片格式
if(suffixName.equals(".png") || suffixName.equals(".jpg") || suffixName.equals(".jpeg")) {
File tempFile =newFile(picFilePath);
// 检测是否存在目录
if(!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
try{
file.transferTo(tempFile);
System.out.println("上传成功");
carrier.setInfo("0","上传成功");
picFilePath = picFilePath.substring(2);
picFilePath = picFilePath.replace("\\","/");
carrier.setContents(picFilePath);
}catch(IllegalStateException e) {
e.printStackTrace();
System.out.println("上传失败");
carrier.setInfo("10001","上传失败");
// carrier.setContents(filePath + fileName);
}catch(IOException e) {
e.printStackTrace();
System.out.println("上传失败");
carrier.setInfo("10001","上传失败");
}
}
}
returncarrier;
}
6 : 关于数据的文件的前端读取问题,采用数据流方式返回至前端
/**
*@Author:Mr.Lee
*@Date:Created in 18:19 2017/11/16
*@Brief:使用 ?**= 拼接方式进行解决 后边内容的可变性
*/
@ResponseBody
@RequestMapping(value ="/votcupload", method = RequestMethod.GET)
public voidshowfile(HttpServletRequest request, HttpServletResponse response)throwsIOException {
// 获取= 号后边的 url
String urlStr = request.getParameter("url");
// 将url中的的/ 改为本机的地址\\
urlStr = urlStr.replace("/","\\");
// 取得相应的文件地址
String filepath =UPLOADMAINPath+ urlStr;
// 输出文件地址
System.out.println(filepath);
// 定义数据流
FileInputStream fileInputStream =newFileInputStream(filepath);
// 得到文件大小
inti = fileInputStream.available();
bytedata[] =new byte[i];
// 读出相应的数据
fileInputStream.read(data);
// 得到后想客户端输出显影的二进制数据的对象
OutputStream outputStream = response.getOutputStream();
// 输出数据
outputStream.write(data);
// 清空缓冲区
outputStream.flush();
// 关闭数据输出
outputStream.close();
// 关闭
fileInputStream.close();
}
7 : 关于前端请求后端的文件时
答: 采用 ?= 拼接方式解决
8: 关于在controlller中未找到service问题解决
答: 是因为在impl中没有实现service
9: 关于返回数据库返回list
答: Mapper.xml中
select
from votc_soundlist
where userid = #{userid,jdbcType=VARCHAR}
dao中
List selectByUserId(String userid);
Service 中实现
List selectByUserId(String userid);
ServiceImpl实现中
publicList selectByUserId(String userid){
returnvotcSoundListMapper.selectByUserId(userid);
}
Controller中
List list =newArrayList<>();
list =votcSoundListService.selectByUserId(userid);