方舟小短劇6:農耕文明
阿新 • • 發佈:2022-04-04
SpringMVC快速入門
入門程式碼實現
匯入SpringMVC座標
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.17</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.17</version> </dependency>
配置SpringMVC的前端控制器
<!-- 配置SpringMVC的前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>mapping>
建立Controller類和檢視介面,使用註解配置Controller類中業務方法的對映地址
@Controller
public class UserController {
@RequestMapping("/quick")
public String save(){
System.out.println("Controller save running....");
return "success.jsp";
}
}
<html> <head> <title>test</title> </head> <body> <h1>success!!!</h1> </body> </html>
配置SpringMVC核心檔案spring-mvc.xml
<!-- Controller的元件掃描-->
<context:component-scan base-package="com.example.controller"/>
執行測試
SpringMVC的資料響應方式
頁面跳轉
直接返回字串
@RequestMapping(value = "/quick",method = RequestMethod.GET,params = {"username"})
public String save(){
System.out.println("Controller save running....");
// return "redirect:/success.jsp";//forward:轉發(預設) redirect:重定向
return "success";
}
通過ModelAndView物件返回
@RequestMapping("/quick4")
public String save4(HttpServletRequest request){
request.setAttribute("username","王五");
return "success";
}
@RequestMapping("/quick3")
public String save3(ModelAndView modelAndView){
modelAndView.addObject("username","李四");
return "success";
}
@RequestMapping("/quick2")
public ModelAndView save2(){
// Model:模型 封裝資料
// view:檢視 展示資料
ModelAndView modelAndView = new ModelAndView();
//設定模型資料
modelAndView.addObject("username","張三");
modelAndView.setViewName("success");
return modelAndView;
}
回寫資料
直接返回字串
@RequestMapping("/quick8")
@ResponseBody //告知SpringMVC框架 不進行檢視跳轉 直接進行資料響應
public String save8() throws Exception{
User user = new User();
user.setUsername("lisi");
user.setAge(30);
//使用json的轉換工具將物件轉換成json格式字串返回
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
return json;
}
@RequestMapping("/quick7")
@ResponseBody //告知SpringMVC框架 不進行檢視跳轉 直接進行資料響應
public String save7() throws Exception{
return "{\"username\":\"zs\",\"age\":18}";
}
@RequestMapping("/quick6")
@ResponseBody //告知SpringMVC框架 不進行檢視跳轉 直接進行資料響應
public String save6() throws Exception{
return "zl";
}
@RequestMapping("/quick5")
public void save5(HttpServletResponse response) throws Exception{
response.getWriter().print("hello word!");
}
返回物件或集合
//<!-- MVC註解驅動-->
// <mvc:annotation-driven/>
@RequestMapping(value = "/quick9",produces = "application/json;charset=UTF-8")
@ResponseBody //告知SpringMVC框架 不進行檢視跳轉 直接進行資料響應
//期望SpringMVC自動將User轉換成json格式的字串
public User save9() throws Exception{
User user = new User();
user.setUsername("lisi");
user.setAge(30);
return user;
}
SpringMVC獲得請求資料
SpringMVC可以獲得如下型別引數:
-
基本型別引數
-
POJO型別引數
-
陣列型別引數
-
集合型別引數
獲得基本型別引數
@RequestMapping("/quick")
@ResponseBody //不進行頁面跳轉
public void save(String username,int age) throws Exception{
System.out.println(username);
System.out.println(age);
}
獲取POJO型別引數
@RequestMapping("/quick1")
@ResponseBody //不進行頁面跳轉
public void save(User user) throws Exception{
System.out.println(user);
}
獲取陣列型別引數
@RequestMapping("/quick2")
@ResponseBody //不進行頁面跳轉
public void save2(String[] strs) throws Exception{
System.out.println(Arrays.asList(strs));
}
獲取集合型別引數
<html>
<head>
<title>Title</title>
<script src="/js/jquery.min.js"/>
<script>
var userList = new Array();
userList.push({username:"zs",age:18});
userList.push({username:"lisi",age:20});
$.ajax({
type:"POST",
url:"/req/quick4",
data:JSON.stringify(userList),
contentType:"application/json;charset=UTF_8"
});
</script>
</head>
<body>
</body>
</html>
@RequestMapping("/quick4")
@ResponseBody //不進行頁面跳轉
public void save4(@RequestBody List<User> userList) throws Exception{
System.out.println(userList);
}
請求資料亂碼解決
<!-- 配置全域性過濾filter-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
引數繫結註解@requestParam
當請求的引數名稱與Controller的業務方法引數名稱不一致時使用
@RequestMapping("/quick5")
@ResponseBody //不進行頁面跳轉
public void save5(@RequestParam(value="name") String username) throws Exception{
//@RequestParam引數:value(請求引數名稱),required(此引數在請求中是否必須包括,預設為true),defaultValue(當沒有指定引數時使用預設值賦值)
System.out.println(username);
}
獲取請求頭
//獲取請求頭
@RequestMapping("/quick8")
@ResponseBody //不進行頁面跳轉
public void save8(@RequestHeader(value = "User-Agent",required = false) String header) throws Exception{
System.out.println(header);
}
//獲取Cookie值
@RequestMapping("/quick9")
@ResponseBody //不進行頁面跳轉
public void save9(@CookieValue(value = "JSESSIONID",required = false) String cookie) throws Exception{
System.out.println(cookie);
}
檔案上傳
匯入fileupload和io座標
<!-- 檔案上傳座標匯入-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
配置檔案上傳解析器
<!-- 配置檔案上傳解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上傳檔案總大小-->
<property name="maxUploadSize" value="5242800"/>
<!-- 上傳單個檔案大小-->
<property name="maxUploadSizePerFile" value="5242800"/>
<!-- 上傳檔案編碼型別-->
<property name="defaultEncoding" value="UTF-8"/>
</bean>
編寫檔案上傳程式碼(單檔案)
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/req/quick10" method="post" enctype="multipart/form-data">
<input name="username" type="text"><br>
<input name="password" type="password"><br>
<input type="file" name="upload1">
<input type="submit" value="提交">
</form>
</body>
</html>
@RequestMapping("/quick10")
@ResponseBody //不進行頁面跳轉
public void save10(String name, MultipartFile upload1) throws Exception{
// 獲得檔名稱
String originalFilename1 = upload1.getOriginalFilename();
// 儲存檔案
upload1.transferTo(new File("E:\\Spring_Project\\"+originalFilename1));
}
編寫檔案上傳程式碼(多檔案)
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/req/quick11" method="post" enctype="multipart/form-data">
<input name="username" type="text"><br>
<input name="password" type="password"><br>
<input type="file" name="upload">
<input type="file" name="upload">
<input type="submit" value="提交">
</form>
</body>
</html>
@RequestMapping("/quick11")
@ResponseBody //不進行頁面跳轉
public void save11(String name, MultipartFile[] upload) throws Exception{
// 獲得檔名稱
for (MultipartFile multipartFile:upload) {
String originalFilename = multipartFile.getOriginalFilename();
// 儲存檔案
multipartFile.transferTo(new File("E:\\Spring_Project\\" + originalFilename));
}
}