总结
其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。
这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来
目录:
部分内容截图:
2)上传方法
@Controller
public class UploadController {
@RequestMapping(“/upload”)
public String fileupload(HttpServletRequest request) throws Exception {
//获取项目的upload目录路径
String path= request.getSession().getServletContext().getRealPath(“/upload/”);
File file=new File(path);
//判断文件夹是否存在
if (!file.exists()){
//创建文件夹
file.mkdirs();
}
//创建上传对象
ServletFileUpload upload=new ServletFileUpload(new DiskFileItemFactory());
//获得文件列表
List fileItems= upload.parseRequest(request);
for (FileItem item:fileItems){
//判断文件是不是普通表单项
if (item.isFormField()){
//如果是普通表单项,打印表单项名和值
System.out.println(item.getFieldName());
System.out.println(item.getString());
}else{
//如果是文件,截取后缀名
String filename= item.getName();
String suffix = filename.substring(filename.lastIndexOf(“.”));
//创建唯一的文件名
String uuid= UUID.randomUUID().toString().replace(“-”,“”);
filename = uuid + suffix;
//完成文件上传
item.write(new File(path,filename));
System.out.println(“上传完毕”);
}
}
//跳转到success页面
return “success”;
}
依赖和表单和上面一样
上传方法中使用MultipartFile参数获得上传文件
@RequestMapping(“/upload”)
public String fileupload(HttpServletRequest request, MultipartFile upload) throws Exception {
//获取项目目录下的upload目录路径
String path = request.getSession().getServletContext().getRealPath(“/upload/”);
System.out.println(path);
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
//获取上传文件名字
String filename = upload.getOriginalFilename();
String suffix = filename.substring(filename.lastIndexOf(“.”));
//创建唯一的文件名
String uuid= UUID.randomUUID().toString().replace(“-”,“”);
filename = uuid + suffix;
//完成文件上传
upload.transferTo(new File(path,filename));
return “success”;
}
需要在springmvc的配置中添加上传处理器
给表单添加多个文件项
添加MultipartFile数组为参数,参数名和表单name一致
@RequestMapping(“/upload3”)
public String fileupload3(HttpServletRequest request, MultipartFile[] uploads) throws Exception {
//获取tomcat项目目录下的upload目录路径
String path = request.getSession().getServletContext().getRealPath(“/upload/”);
System.out.println(path);
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
for(MultipartFile upload : uploads) {
//获取上传文件名字
String filename = upload.getOriginalFilename();
String suffix = filename.substring(filename.lastIndexOf(“.”));
//创建唯一的文件名
String uuid = UUID.randomUUID().toString().replace(“-”, “”);
filename = uuid + “-” + suffix;
//完成文件上传
upload.transferTo(new File(path, filename));
}
return “success”;
}
SpringMVC还提供了其它API支持上传:
-
CommonsMultipartResolver 多部分解析器,用于判断请求是否存在上传文件
-
MultipartHttpServletRequest 多部分请求,用于获得文件相关信息
具体用法:
@RequestMapping(“upload4”)
public String fileupload4(HttpServletRequest request) throws IllegalStateException, IOException
{
String path = request.getSession().getServletContext().getRealPath(“/upload/”);
//创建多部分解析器
CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
request.getSession().getServletContext());
//检查表单是否支持文件上传
if(multipartResolver.isMultipart(request)){
//将请求转换为多部分请求,支持上传
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//获取请求中所有的文件名
Iterator iter=multiRequest.getFileNames();
while(iter.hasNext()) {
//遍历所有文件
MultipartFile file=multiRequest.getFile(iter.next().toString());
if(file!=null) {
//获取上传文件名字
String filename = file.getOriginalFilename();
String suffix = filename.substring(filename.lastIndexOf(“.”));
//创建唯一的文件名
String uuid = UUID.randomUUID().toString().replace(“-”, “”);
filename = uuid + suffix;
//上传
file.transferTo(new File(path,filename));
}
}
}
return “success”;
}
/**
- 下载控制器
*/
@Controller
public class DownloadController {
@RequestMapping(“download”)
public void download(String file, HttpServletResponse response) throws IOException {
//下载文件的路径
String path = “D:\install\”;
File downFile = new File(path+file);
if(downFile.exists()){
//设置浏览器下载内容类型,响应头
response.setContentType(“application/x-msdownload”);
response.setHeader(“Content-Disposition”,“attachment;filename=”+file);
//通过流发送文件
Files.copy(downFile.toPath(),response.getOutputStream());
}
}
}
=======================================================================
3.1.1 前后端分离是什么
前端项目(html5、小程序、移动端),后端项目(java、数据库、tomcat)分开开发和部署
3.1.2 前后端分离优势
1)开发分工明确,前端团队和后端团队同时分工合作开发
2)项目分开部署不同的服务器,如:Tomcat适合部署动态资源,Nginx适合部署静态资源
3)便于测试和维护
3.1.3 前后端开发人员的交互方式
1)设计人员根据需求设计接口,提供接口文档
1)后端根据接口文档开发后台接口
2)前端通过接口请求数据,渲染页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TpfgxFJ-1608513277531)(SpringMVC.assets/clipboard-1608100199709.png)]
3.2.1 RESTFul是什么
RESTFul是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。适用于移动互联网厂商作为业务使能接口的场景,实现第三方调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
RESTful架构,是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
-
每一个URI对应服务器上的一个资源(数据库数据、方法等)
-
通过不同Http请求方法来区别增删改查操作
-
GET --> 查询
-
POST --> 添加
-
PUT --> 更新
-
DELETE --> 删除
- 通信的格式是JSON
3.2.3 RESTFul风格的API
传统API设计,常用动词定义API,如:find、get、save、update、delete等
查询所有书籍:
http://域名/book/findAll
查询一本书:
http://域名/book/findById?id=1
添加书籍:
http://域名/book/saveBook
更新书籍:
http://域名/book/updateBook
删除书籍:
http://域名/book/deleteBook?id=1
RESTFul风格API设计,只使用名词,使用不同的请求方法来区别增删改查
查询所有书籍: GET
http://域名/books
查询一本书: GET
http://域名/book/1
添加书籍: POST
http://域名/book
更新书籍: PUT
http://域名/book
删除书籍: DELETE
http://域名/book/1
Restful风格的控制器的实现
@RestController
public class BookController {
@Autowired
private BookService bookService;
@GetMapping(“/books”)
public JsonResult findAll(){
try {
List list = bookService.list();
return new JsonResult(1,list);
}catch (Exception ex){
ex.printStackTrace();
return new JsonResult(0,null);
}
}
@GetMapping(“/book/{id}”)
public JsonResult findById(@PathVariable(“id”)Integer id){
try {
Book book = bookService.getById(id);
return new JsonResult(1,book);
}catch (Exception ex){
ex.printStackTrace();
return new JsonResult(0,null);
}
}
@PostMapping(“/book”)
public JsonResult saveBook(@RequestBody Book book){
try {
bookService.save(book);
return new JsonResult(1,null);
}catch (Exception ex){
ex.printStackTrace();
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
最新整理大厂面试文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
k(@RequestBody Book book){
try {
bookService.save(book);
return new JsonResult(1,null);
}catch (Exception ex){
ex.printStackTrace();
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
最新整理面试题
[外链图片转存中…(img-egT4giUY-1715327137731)]
上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题
最新整理电子书
[外链图片转存中…(img-SNELMtwu-1715327137731)]
最新整理大厂面试文档
[外链图片转存中…(img-YVRfGQLH-1715327137732)]
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。