springboot(5)静态资源访问前缀+欢迎页+REST风格的传递参数

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方法的测试";
    }

运行结果是

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

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

我们需要改变一下  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

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值