小言_互联网的博客

SpringMvc基础(三):常用注解

349人阅读  评论(0)

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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场