13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

硬核!学会SpringMVC从这篇开始

本文转载自微信公众号「小菜良记」,作者蔡不菜丶 。转载本文请联系小菜良记公众号。

SpringMVC概述

SpringMVC简单使用

1)在 web.xml 中配置 DispatcherServlet:

 
 
 
 
  1.  
  2.   
  3.   dispatcherServlet 
  4.   org.springframework.web.servlet.DispatcherServlet 
  5.    
  6.    
  7.    
  8.    contextConfigLocation 
  9.    classpath:springmvc.xml 
  10.    
  11.   1 
  12.   
  13.   
  14.   dispatcherServlet 
  15.   / 
  16.   

2)加入 Spring MVC 的配置文件

 
 
 
 
  1.  
  2.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.  xmlns:context="http://www.springframework.org/schema/context" 
  4.  xmlns:mvc="http://www.springframework.org/schema/mvc" 
  5.  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
  6.   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
  7.   http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
  8.  
  9.   
  10.   
  11.   
  12.   
  13.   
  14.    
  15.    
  16.   
  17.   
  18.  

3)编写处理请求的处理器,并使用**@Controller** 注解标识为处理器

 
 
 
 
  1. @Controller 
  2. public class HelloWorldController { 
  3.  /** 
  4.     1. 使用 @RequestMapping 注解来映射请求的 URL 
  5.     2. 返回值会通过视图解析器解析为实际的物理视图, 对于 InternalResourceViewResolver 视图解析器, 会做如下的解析: 
  6.        通过 prefix + returnVal + 后缀 这样的方式得到实际的物理视图, 然会做转发操作 
  7.        ==> /WEB-INF/views/success.jsp 
  8.   */ 
  9.  @RequestMapping("/helloworld") 
  10.  public String hello(){ 
  11.   System.out.println("hello world"); 
  12.   return "success"; 
  13.  } 

4) 编写视图

JSP在/WEB-INF/views/目录下创建一个succes.jsp

 
 
 
 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
  2. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
  3.  
  4.  
  5.  
  6.  
  7. Insert title here 
  8.  
  9.  
  10.  

    成功跳转页面

     
  11.  
  12.  

 

5)将项目运行起来访问 :localhost:8080/hellowoorld

使用 @RequestMapping 映射请求

1)标准请求头

2)@RequestMapping

@RequestMapping 的value、method、params 及 heads 分别表示*请求 URL***、请求方法、请求参数***及***请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。

 
 
 
 
  1. /** 
  2.   * 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式. 
  3.   *  
  4.   * @return 
  5.   */ 
  6.  @RequestMapping(value = "testParamsAndHeaders", 
  7.      params = { "username","age!=10" }, 
  8.      headers = { "Accept-Language=en-US,zh;q=0.8" }, 
  9.      method = RequestMethod.POST) 
  10.  public String test() { 
  11.   System.out.println("test..."); 
  12.   return "success"; 
  13.  } 

3)支持Ant 风格

/user/createUser?

匹配 /user/createUsera 或者 user/createUserb 等 URL

/user/*/createUser

匹配 /user/aaa/createUser 或者 /user/bbb/createUser 等 URL

/user/**/createUser

匹配 /user/createUser 或者 /user/aaa/bbb/createUser 等 URL

@PathVariable

映射 URL 绑定的占位符

 
 
 
 
  1. /** 
  2.  * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中. 
  3.  */ 
  4. @RequestMapping("/testPathVariable/{id}") 
  5. public String test(@PathVariable("id") Integer id) { 
  6.  System.out.println("id: " + id); 
  7.  return "success"; 

REST风格

REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用

示例:

@RequestParam 绑定请求参数值

 
 
 
 
  1. /** 
  2.  * @RequestParam 来映射请求参数. value 值即请求参数的参数名 required 该参数是否必须. 默认为 true 
  3.  *               defaultValue 请求参数的默认值 
  4.  */ 
  5. @RequestMapping(value = "/testRequestParam") 
  6. public String testRequestParam( 
  7.   @RequestParam(value = "username") String username, 
  8.   @RequestParam(value = "age", required = false, defaultValue = "0") int age) { 
  9.  System.out.println("testRequestParam, username: " + username + ", age: " + age); 
  10.  return "success"; 

@RequestHeader 绑定请求报头的属性值

 
 
 
 
  1. /** 
  2.  *   映射请求头信息 用法同 @RequestParam 
  3.  */ 
  4. @RequestMapping("/testRequestHeader") 
  5. public String testRequestHeader( 
  6.   @RequestHeader(value = "Accept-Language") String al) { 
  7.  System.out.println("testRequestHeader, Accept-Language: " + al); 
  8.  return "success"; 

@CookieValue 绑定请求中的 Cookie 值

 
 
 
 
  1. /** 
  2.  * @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam 
  3.  */ 
  4. @RequestMapping("/testCookieValue") 
  5. public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) { 
  6.  System.out.println("testCookieValue: sessionId: " + sessionId); 
  7.  return "success"; 

POJO 对象绑定请求参数值

 
 
 
 
  1. /** 
  2.  * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。 
  3.  * 如:dept.deptId、dept.address.tel 等 
  4.  */ 
  5. @RequestMapping("/testPojo") 
  6. public String testPojo(User user) { 
  7.  System.out.println("testPojo: " + user); 
  8.  return "success"; 

MVC 中Handler 方法可以接收的ServletAPI 类型的参数

处理模型数据

1)ModelAndView

处理方法返回值类型为 ModelAndView时,方法体可通过该对象添加模型数据,ModelAndView中既包含视图信息,也包含模型数据信息。

2)Map 及 Model

入参为 org.springframework.ui.Model、org.springframework.ui.ModelMap 或java.uti.Map 时,处理方法返回时,Map 中的数据会自动添加到模型中。

3)@SessionAttributes:

将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性(从session域中获取)

1)@SessionAttributes(types=User.class):会将隐含模型中所有类型为 User.class 的属性添加到会话中

2)@SessionAttributes(value={“user1”, “user2”}):会将隐含模型中对象名为user1,user2 的属性添加到会话中

3)@SessionAttributes(types={User.class, Dept.class}):会将隐含模型中所有类型为User.class,Dept.class 的属性添加到会话中

4)@SessionAttributes(value={“user1”, “user2”}, types={Dept.class}):会将隐含模型中对象名为user1,user2 的属性和所有类型为 Dept.class 的属性添加到会话中

4)@ModelAttribute

方法入参标注该注解后, 入参的对象就会放到数据模型中

@ModelAttribute

示例:

视图和视图解析器

视图

我们只需要实现View这个接口就可以自定义视图

示例:

 
 
 
 
  1. @Component 
  2. public class HelloView implements View{ 
  3.  @Override 
  4.  public String getContentType() { 
  5.   return "text/html"; 
  6.  } 
  7.  @Override 
  8.  public void render(Map model, HttpServletRequest request, 
  9.    HttpServletResponse response) throws Exception { 
  10.   response.getWriter().print("hello view, time: " + new Date()); 
  11.  } 
  12. @RequestMapping("/testView") 
  13.  public String testView(){ 
  14.   System.out.println("testView"); 
  15.   return "helloView"; //这里返回的就是我们自定义的视图 
  16.  } 

视图解析器

SpringMVC.xml中的配置:

 
 
 
 
  1.  
  2.  
  3.   
  4.   
  5.  
  6.   
  7.  
  8.  
  9.  
  10.   
  11.  


本文名称:硬核!学会SpringMVC从这篇开始
网页链接:http://cdbrznjsb.com/article/cccgepe.html

其他资讯

让你的专属顾问为你服务