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