Springboot的访问规则是  先访问controller的请求,如果没有的话,我们在访问静态资源。

但是静态资源过多的情况下这样不好处理,所以我们可以加一个前缀,这样可以拦截掉非静态资源的请求,每次都可以准确快速无风险的访问到静态资源

写法如下:

spring.mvc.static-path-pattern=/resources/**

如果采用以上的配置方式,那么 在写欢迎页面的时候就无法直接访问到

 传递参数是非常重要的

此时我们需要学习几个注解和集中有意思的写法,如下

首先我们需要一个html页面和一些表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hhhhh</title>
</head>
<body>

      <h1>喜欢读书</h1>

     <form    action="/name"  method="post"   >
         <input    type="text"   name="newname"         />
         <input   type="submit" value="提交" >
     </form>

</body>
</html>

解释一下 :首先我们需要一个form表单  action 写上我们的请求路径,然后获得input标签,前端通过name属性绑定需要传入的值,然后通过post方法传递给后端

后端处理代码如下:

@RestController
public class GetName {
@RequestMapping(value = "/name",method = RequestMethod.POST)
    public  String     getName(String newname){
         String  name  =  newname;
        System.out.println(name);
        return  name;
    }
}
@RestController  集合了  @Controller  @ResponseBody  首先通过  @Controlle  将 我们这个类交给容器管理  然后@ResponseBody 可以返回数据给前端

然后我们使用     @RequestMapping(value = "/name",method = RequestMethod.POST)

 通过 /name 获得路径 ,然后method判断方法,无论是post or  get方法都可以使用

我们增加一下get的测试例子

<head>
    <meta charset="UTF-8">
    <title>hhhhh</title>
</head>
<body>

      <h1>喜欢读书</h1>

     <form    action="/name"  method="post"   >
         <input    type="text"   name="newname"         />
         <input   type="submit" value="提交" >
     </form>
<br>
<form   action="/name2"  method="get" >
    <input  type="submit"  value="点击get获得">
</form>

</body>
</html>

来个get的后端

public class GetName {
@RequestMapping(value = "/name",method = RequestMethod.POST)
    public  String     getName(String newname){
         String  name  =  newname;
        System.out.println(name);
        return  name;
    }

    @RequestMapping(value = "/name2",method = RequestMethod.GET)
    public  String   getName2(){
           return  "可爱的绘梨衣";
    }
}

此时就可以使用get得到数据了

我们都知道,form表单 还有 delete,put方法

我们也来写个表单,测试一下

<form  action="/name3"  method="delete"  >
  <input  type="submit"  value="执行一下delete方法">
</form>





    @RequestMapping(value = "/name3",method = RequestMethod.DELETE)
    public  String   getName3(){
    return "这是delete方法的测试";
    }

运行结果是

spring boot gatway 请求头丢失 springboot配置请求前缀_java

这是因为fiter只设定了post 和  get 的方法,我们可以通过 另一种写法来实现delete

首先我们需要进行一个配置

spring boot gatway 请求头丢失 springboot配置请求前缀_后端_02

我们需要改变一下  HTML的写法:sprinvboot后端只能接收post 和 get   ,所以前端页面必须通过get 或者 post发送数据 ,但是我们可以通过修改 input标签,后端可以通过fiter自动解析,读取input中我们的数据,完成对应的方法寻找

写法如下

<form  action="/name3"  method="post"  >
  <input  name="_method"  type="hidden"  value="delete"  />
    <input     value="REST-delete 提交 "  type="submit"    />
</form>

通过 <   name  后面带上方法   type  hidden   value 写上自己的方法   然后提交即可 >  后端会读取里面的数据,然后找到需要的字符串

但是我们需要的配置如下  

spring.mvc.hiddenmethod.filter.enabled=true    《-----将这个属性开启,但是因为这个功能不是主流,主流是前后端分离的页面,所以默认关闭.

同时以上的写法也可以缩写


@RequestMapping(value = "/name2",method = RequestMethod.GET) ---->缩写成 GetMapping