springMVC基础技术使用

springMVC基础技术使用_第1张图片

目录

1.常用注解 

   1.1@RequestMapping

   1.2.@RequestParam

      1.3.@RequestBody

      1.4.@PathVariable

2.参数传递

2.1 slf4j-----日志

2.2基础类型

2.3复杂类型

2.4@RequestParam

 2.5@PathVariable

2.6@RequestBody

 2.7请求方法(增删改查)

3.返回值

3.1void 返回值 

3.2String 返回值

4.3 model+String

4.页面跳转

4.1转发

4.2重定向


1.常用注解 

   1.1@RequestMapping

      @RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。

   1.2.@RequestParam

     @RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上

      1.3.@RequestBody

      @RequestBody主要用来接收前端传递给后端的json字符串中的数据的(即请求体中的数据的

        GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

      1.4.@PathVariable


        该注解请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定。

        即当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

2.参数传递

2.1 slf4j-----日志

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

先来在pom.xml配置文件中导入SLF4J的依赖




  4.0.0

  org.example
  ssm
  1.0-SNAPSHOT
  war

  ssm Maven Webapp
  
  http://www.example.com

  
    UTF-8
    1.8
    1.8
    3.7.0

    
    
    5.0.2.RELEASE
    
    3.4.5
    
    5.1.44
    
    5.1.2
    
    1.3.1
    
    2.1.1
    2.4.3
    
    2.9.1
    3.2.0
    1.7.13
    
    4.12
    4.0.0
    1.18.2

    
    1.2
    1.1.2
    
    5.0.2.RELEASE
    2.9.3
  



  
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-orm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    

    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
    
      com.github.pagehelper
      pagehelper
      ${pagehelper.version}
    
    
    
      org.mybatis
      mybatis-spring
      ${mybatis.spring.version}
    

    
    
      org.apache.commons
      commons-dbcp2
      ${commons.dbcp2.version}
    
    
      org.apache.commons
      commons-pool2
      ${commons.pool2.version}
    

    
    
    
    
    
      org.slf4j
      slf4j-api
      ${slf4j.version}
    
    
      org.slf4j
      jcl-over-slf4j
      ${slf4j.version}
      runtime
    
    
    
      org.apache.logging.log4j
      log4j-api
      ${log4j2.version}
    
    
      org.apache.logging.log4j
      log4j-core
      ${log4j2.version}
    
    
    
      org.apache.logging.log4j
      log4j-slf4j-impl
      ${log4j2.version}
    
    
    
      org.apache.logging.log4j
      log4j-web
      ${log4j2.version}
      runtime
    

    
    
      com.lmax
      disruptor
      ${log4j2.disruptor.version}
    

    
    
      junit
      junit
      ${junit.version}

    
    
      javax.servlet
      javax.servlet-api
      ${servlet.version}
      provided
    
    
      org.projectlombok
      lombok
      ${lombok.version}
      provided
    

    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      jstl
      jstl
      ${jstl.version}
    
    
      taglibs
      standard
      ${standard.version}
    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-core
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-annotations
      ${jackson.version}
    
  


  
    ssm

    
      
      
        src/main/java
        
          **/*.xml
        
      
      
      
        src/main/resources
        
          jdbc.properties
          *.xml
        
      
    

  
      
        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
        
          maven-surefire-plugin
          2.22.1
        
        
          maven-war-plugin
          3.2.2
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
        
          org.apache.maven.plugins
          maven-compiler-plugin
          ${maven.compiler.plugin.version}
          
            ${maven.compiler.source}
            ${maven.compiler.target}
            ${project.build.sourceEncoding}
          
        
        
          org.apache.maven.plugins
          maven-compiler-plugin
          ${maven.compiler.plugin.version}
          
            ${maven.compiler.source}
            ${maven.compiler.target}
            ${project.build.sourceEncoding}
          
        

        
          org.mybatis.generator
          mybatis-generator-maven-plugin
          1.3.2
          
            
            
              mysql
              mysql-connector-java
              ${mysql.version}
            
          
          
            true
          
        

      
  

2.2基础类型

package com.sy.web;

import com.sy.model.Book;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author 谌艳
 * @site www.shenyan.com
 * @create 2023-09-05 15:46
 */
@Slf4j
@Controller
@RequestMapping("/param")
public class ParamController {
    @RequestMapping("/hello1")
    public String index(String bname,Integer bid){
//System.out.println("hello springmvc!!!");
        log.info("简单类型参数:bname:{},bid:{}",bname,bid);
    return "index";
    }

 效果展示:

springMVC基础技术使用_第2张图片

springMVC基础技术使用_第3张图片

2.3复杂类型

 @RequestMapping("/hello2")
    public String index2(Book book, HttpServletRequest request){
//System.out.println("hello springmvc!!!");
        log.info("复杂类型参数:bname:{},bid:{}",request.getParameter("bname"),
                request.getParameter("bid"));
        log.info("复杂类型参数:book:{} " ,
               book.toString());

        return "index";
    }

 效果展示:

springMVC基础技术使用_第4张图片

2.4@RequestParam

 @RequestMapping("/hello3")
    public String index3(
            @RequestParam String bname,
             @RequestParam (required = false) Integer bid){
//System.out.println("hello springmvc!!!");
        log.info("@RequestParam类型参数:bname:{},bid:{}",bname,bid);
        return "index";
    }

  效果展示:

springMVC基础技术使用_第5张图片

 2.5@PathVariable

 @RequestMapping("/hello4/{bid}")
    public String index4(@PathVariable("bid") Integer bid){
//System.out.println("hello springmvc!!!");
        log.info("@PathVariable类型参数:bid:{}",bid);
        return "index";
    }

 效果展示:

springMVC基础技术使用_第6张图片springMVC基础技术使用_第7张图片

2.6@RequestBody

 @RequestMapping("/hello5")
    public String index5(Map map){
//System.out.println("hello springmvc!!!");
        log.info("RequestBody类型参数:map:{}",map);
        return "index";
    }

 效果展示:

方需要借助一个测试软件传参数,我用的是Eolink

springMVC基础技术使用_第8张图片

 2.7请求方法(增删改查)

//    查询请求
    @GetMapping
    public String type1(){
    System.out.println("GetMapping!!!");
    return "index";
}
//新增请求
    @PostMapping
  public String type2(){
    System.out.println("GetMapping!!!");
    return "index";
}
//修改请求
@PutMapping
    public  String type3(){
    System.out.println("PutMapping!!!");
    return "index";
}
//删除请求
    @DeleteMapping
        public  String type4(){
        System.out.println("DeleteMapping!!!");
        return "index";
    }


3.返回值

创建一个ResponseUtil工具类,辅助完成测试代码如下 : 

package com.sy.utis;

import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

public class ResponseUtil {

	public static void write(HttpServletResponse response,Object o)throws Exception{
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		out.println(o.toString());
		out.flush();
		out.close();
	}
	
	public static void writeJson(HttpServletResponse response,Object o)throws Exception{
		ObjectMapper om = new ObjectMapper();
//		om.writeValueAsString(o)代表了json串
		write(response, om.writeValueAsString(o));
	}
}

创建一个ReturnController类,来进行方法的请求测试(包含关于返回值的所以方法)。

3.1void 返回值 

        处理器对请求处理后,无需跳转到其它任何资源,此时可以让处理器方法返回 void。

/**
 * @author 谌艳
 * @site www.shenyan.com
 * @create 2023-09-05 19:25
 */
@Controller
@RequestMapping("/rs")
public class RetrurnController {
    @RequestMapping("/hello1")
    public void hello1(HttpServletResponse response){
        Map  map=new HashMap<>();
        map.put("code",200);
        map.put("mag","成功添加。。。");
        try {
            ResponseUtil.writeJson(response,map);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

测试结果:

springMVC基础技术使用_第9张图片

3.2String 返回值

@RequestMapping("/hello3")
    public String hello3() {
        return "index";
    }

4.3 model+String

 @RequestMapping("/hello4")
    public String hello4(
            Model model,
            HttpServletRequest request) {
        model.addAttribute("name","米西米西");
        request.setAttribute("chapter","花不垃圾");
        return "index";
    }

测试结果:

springMVC基础技术使用_第10张图片

4.页面跳转

4.1转发

4.2重定向

转发重定向的实现方式有所不同。转发是在服务器端进行处理,服务器接收到用户的请求后,将请求转发到另一个URL,并将响应返回给用户。重定向是通过发送特定的HTTP响应代码来告诉浏览器将用户的请求重定向到另一个URL,浏览器接收到重定向响应后,会自动发送新的请求到重定向的URL。

        使用场景方面,转发适用于需要在服务器端进行一些处理后,将请求转发到其他页面或处理逻辑的情况。转发可以保持用户的URL不变,用户在浏览器中看到的URL仍然是原始的URL。重定向适用于需要将用户导航到其他页面或处理逻辑的情况,重定向会导致浏览器发送新的请求到重定向的URL,并在浏览器的地址栏中显示新的URL。 增删改都是用重定向

springMVC基础技术使用_第11张图片

你可能感兴趣的:(java,idea,mvc,spring,springmvc)