第63節:Java中的Spring MVC簡介筆記

達叔小生發表於2018-12-17

標題圖

前言

感謝! 承蒙關照~

Java中的Spring MVC簡介筆記

MVC簡介

  1. Spring MVC 基本概念
  2. Spring MVC 專案搭建

maven

使用Spring MVC進行開發

實現資料繫結和檔案上傳

MVC

mvc是開發web架構的通用方式.

Front Controller(MVC)前端控制器,Front controllerControllerView template,使用者頁面.

前端控制器

前端控制器用於分發排程,而控制器用於業務資料抽取,view template用於頁面呈現.

MVC的本質

mvc的本質是將業務資料的抽取與業務邏輯的呈現想分離.(資料和呈現分離).

什麼是所謂的mvc

mvc - Model-View-Controller

程式中的view是檢視層,用於提供ui,是用來呈現資料的.模型層是業務資料的資訊的表示.

模型層:

// 業務資訊的構成
public class Course {
 private Integer courseId;
 private String title;
 private Integer learningNum;
 private Integer level;
 private String imgPath;
 
 private List<Chapter> chapterList;
 public Integer getCourseId(){
  return courseId;
 }
 public void setCourseId(Integer courseId){
  this.courseId = courseId;
 }
 public String getTitle(){
  return title;
 }
 public void setTitle(String title){
  this.title = title;
 }
 public Integer getLearningNum(){
  return learningNum;
 }
}
複製程式碼

檢視和模型- Controller控制器,控制層,作用是將資料傳遞給檢視層,用於呈現.

mvc是一種架構模式,用於呈現的分層,分工合作,模型層,檢視層,控制層.

spring mvc概念:

DispatcherServlet

效果

controller - HandlerAdapter表現形式

集合

DispatcherServlet
Controller
HandlerAdapter
HandlerInterceptor
HandlerMapping
HandlerExecutionChain
ModelAndView
ViewResolver
View
複製程式碼

DispatcherServlet重點

View Controller DispatcherServlet -> Request -> HandlerMapping -> Controller -> HandlerInterceptor -> Hander/HandlerAdapter

ModelAndView -> DispatcherServlet -> ViewResolver -> View -> Response

結構

DispatcherServlet

Common Services ->

Locale Resolution
Theme Resolution
Multipart(File Upload) Handing
複製程式碼

Controller

HandlerMapping
HandlerInterceptor
Handler
-Data Binding
-Validation, Type Conversion, Formatting
-Invoke Service Layer
-Update Model and State
HandlerExceptionResolver
複製程式碼

View

ViewResolver
View
複製程式碼

spring mvc專案搭建-maven

// maven
pom(project object model) - an xml file(pom.xml)
// contains information
dependency management
coordinates
複製程式碼

效果

座標Coordinates

groupId
artifactId
version
packaging
複製程式碼

maven安裝

下載解壓maven,配置環境變數,(M2_HOME,Path),配置maven配置檔案.

(M2_HOME,Path)

效果

效果

效果

效果

效果

效果

效果

效果

配置檔案:

效果

%HOME%\.m2
複製程式碼

複製settings.xml檔案到.m2

效果

開啟.m2下檔案settings.cml檔案

效果

配置:

效果

     <mirror>
     	<id>UK</id>
     	<name>UK Central</name>
     	<url>http://uk.maven.org/maven2</url>
     	<mirrorOf>central</mirrorOf>
     </mirror>
複製程式碼

maven建立專案

eclipse -> eclipse kepler sr2 packages

效果

eclipse -> window -> preferences -> maven -> Installations -> add -> 'maven-apache-maven-x.x.x->user settings`中確保路徑正確.

mvn archetype:generate -DgroupId=dashucoding-arthur -DartifactId=spring-mvc-study
-DarchetypeArtifactId=maven-archetype-webapp
複製程式碼

效果

點選Enter鍵-都Enter鍵

效果

專案

Import -> maven -> existion maven projects -> spring-mvc-study /pom.xml

spring-mvc-study -> properties -> java build path -> spring-mvc-study/src/main/java(missing)

main -> folder -> java -> pom.xml

packaging: jar
複製程式碼

點選pom.xml

效果

效果

效果

效果

效果

效果

@Controller
@RequestMapping("/hello")
public class HelloMvcController{
 @RequestMapping("/mvc");
 // host:8080/hello/mvc
 public String helloMvc(){
  return "home";
 }
}
複製程式碼

效果

mvn jetty:run
複製程式碼

spring mvc操作

DispatcherServlet
WebApplicationContext
WebApplication
複製程式碼

效果

controller
model
service
複製程式碼
@Controller
@RequestMapping("/courses")
public class CourseController {
 private static Logger log = LoggerFactory.getLogger(CourseController.class);
 private CourseService courseService;
}
複製程式碼

效果

效果

效果

Controller

@Controller
@RequestMapping
URL template(@RequestParam and @PathVarialbe)
HttpServletRequest and / or HttpSession
複製程式碼

Binding繫結

是將請求中的欄位按照名字匹配的原則填入模型物件.

CourseController.java

@RequestMapping(value="/admin", method=RequestMethod.GET, params="add")
public String createCourse(){
 return "course_admin/edit";
}
複製程式碼

效果

package com.model;
複製程式碼

效果

FileUpload單檔案上傳

檔案上傳:

效果

<dependency>
 <groupId> commons-fileupload </groupId>
 <artifactId> commons-fileupload </artifactId>
 <version>1.3.1</version>
</dependency>
複製程式碼

JSON

json是一種輕量級的格式
複製程式碼
ContentNegotiatingViewResolver
ResponseEntity
@ResponseBody/@ResquestBody
複製程式碼

知識點

@RequestMapping
@PathVariable
@Controller
redirect/forward
MultipartFile
@ModelAttribute
@ResquestBody
@RequestParam
@ResponseBody
enctype="multipart/form-data"
multipartResolver
ResponseEntity
複製程式碼

達叔小生:往後餘生,唯獨有你 You and me, we are family ! 90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動並且善於溝通 簡書部落格: 達叔小生 www.jianshu.com/u/c785ece60…

結語

  • 下面我將繼續對 其他知識 深入講解 ,有興趣可以繼續關注
  • 小禮物走一走 or 點贊

相關文章