1.概念
(1)@Controller:注解在类上
==>表明这个类是Spring Mvc里的Controller,将其声明成一个Bean。
==>DispatcherServlet会自动扫描注解了该注解的类,并将Web请求映射到注解了@RequestMapping的方法上
(2)@RequestMapping:注解在类或方法上
==>该注解式用来映射Web请求(访问路径和参数)、处理类和方法的
(3)@ResponseBody:注解在方法上或返回值前
==>支持将返回值放在response体内,而不是返回一个页面。一般在使用Ajax的时候,可以以此注解返回数据而不是页面
(4)@RequestBody:注解在参数前
==>允许request的参数在参数体中,而不是直接链接在地址后面
(5)@PathVariable:注解在参数前
==>接受路径参数,即在链接地址后面的参数
(6)@RestController:注解在类上
==>它是一个组合注解,组合了@Controller和@ResponseBody。当只开发一个和页面交互数据的控制的时候,用此注解
2.示例:代码均在本系列前面代码基础上完成
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wisely</groupId>
<artifactId>hightlight_springmvc7</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>hightlight_springmvc7 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.5.3</version>
</dependency>
</dependencies>
<build>
<finalName>hightlight_springmvc7</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
package com.wisely.highlight_springmvc7.domain;
public class DemoObj {
private Long id;
private String name;
//jackson对对象和json做转换时一定要此空构造
public DemoObj(){
super();
}
public DemoObj(Long id,String name){
super();
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.wisely.highlight_springmvc7.web.chi4_3;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.wisely.highlight_springmvc7.domain.DemoObj;
@Controller
@RequestMapping("/anno")
public class DemoAnnoController {
@RequestMapping(produces="text/plain;charset=utf-8")
public @ResponseBody String index(HttpServletRequest request){
return "url:"+request.getRequestURL()+" can access";
}
@RequestMapping(value="/pathvar/{str}",produces="text/plain;charset=utf-8")
public @ResponseBody String demoPathVar(@PathVariable String str,HttpServletRequest request){
return "url:"+request.getRequestURL()+" can access,str:"+str;
}
@RequestMapping(value="/requestParam",produces="text/plain;charset=utf-8")
public @ResponseBody String passRequestParam(Long id,HttpServletRequest request){
return "url:"+request.getRequestURL()+" can access,id:"+id;
}
@RequestMapping(value="/obj",produces="application/json;charset=utf-8")
@ResponseBody
public String passObj(DemoObj obj,HttpServletRequest request){
return "url:"+request.getRequestURL()+" can access,obj.id:"+obj.getId()+",obj.name:"+obj.getName();
}
@RequestMapping(value={"/name1","/name2"},produces="text/plain;charset=utf-8")
public @ResponseBody String remove(HttpServletRequest request){
return "url:"+request.getRequestURL()+" can access";
}
}
package com.wisely.highlight_springmvc7.web.chi4_3;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wisely.highlight_springmvc7.domain.DemoObj;
@RestController
@RequestMapping("/rest")
public class DemoRestController {
@RequestMapping(value="/getjson",produces={"application/json;charset=utf-8"})
public DemoObj getJson(DemoObj obj){
return new DemoObj(obj.getId()+1,obj.getName()+"1111111");
}
@RequestMapping(value="/getxml",produces={"application/xml;charset=utf-8"})
public DemoObj getXml(DemoObj obj){
return new DemoObj(obj.getId()+1,obj.getName()+"1111111");
}
}
转载:https://blog.csdn.net/qq_40594696/article/details/102568752
查看评论