建设网站需要什么证件网络投票怎么做
news/
2025/10/8 6:40:44/
文章来源:
建设网站需要什么证件,网络投票怎么做,信誉好的镇江网站建设,专门做冷门旅行的网站1 WEB开发-静态资源访问
1.1 基本介绍
#xff08;1#xff09;只要静态资源放在类路径的以下目录#xff1a;/static、/public、/resources、/META-INF/resources 可以被直接访问。maven项目的类路径即为main/resources目录--对应SpringBoot源码为WebProperties.java类
…1 WEB开发-静态资源访问
1.1 基本介绍
1只要静态资源放在类路径的以下目录/static、/public、/resources、/META-INF/resources 可以被直接访问。maven项目的类路径即为main/resources目录--对应SpringBoot源码为WebProperties.java类
2常见静态资源JS、CSS、图片、字体文件Fonts等
3访问方式默认为项目根路径/ 静态资源名。比如 http://localhost:8080/hi.jpg --对应SpringBoot源码为WebMvcProperties.java类
1.2 快速入门
1在resources目录下创建相关静态资源目录并放入测试图片 2创建并启动主程序
package com.springboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}3浏览器输入网址进行测试:
localhost:8080/1.png localhost:8080/2.png localhost:8080/3.png localhost:8080/4.png 1.3 注意事项
1静态资源访问原理静态映射是/**也就是对所有请求进行拦截请求进来会先看Controller 能不能处理不能处理的请求就会交给静态资源处理器如果静态资源也找不到则响应404页面
2 改变静态资源访问前缀比如如果希望 localhost:8080/wwj/1.png 去请求静态资源。应用场景静态资源访问前缀和控制器请求路径冲突
设置方式如下
在类路径即main/resources目录下新建文件 application.yml
spring:mvc:static-path-pattern: /wwj/**
重启应用完成测试浏览器输入 localhost:8080/wwj/1.png 3改变默认的静态资源路径比如希望在类路径下增加wwjimg目录作为静态资源路径 修改 application.yml 即可
spring:mvc:# 修改静态资源访问前缀static-path-pattern: /wwj/**web:resources:# 添加静态资源路径static-locations: - classpath:/META-INF/resources/- classpath:/resources/- classpath:/static/- classpath:/public/- classpath:/wwjimg/2 Rest风格请求处理
2.1 基本介绍
1Rest风格支持使用HTTP请求方式动词来表示对资源的操作
2举例说明
请求方式/monsterGET-获取怪物DELETE-删除怪物PUT-修改怪物POST-添加怪物
2.2 SpringBoot Rest风格应用实例
需求演示 SpringBoot 中如何实现Rest风格的增删改查
1创建MonsterController.java模拟四种请求方式
package com.springboot.controller;import org.springframework.web.bind.annotation.*;RestController
public class MonsterController {//以下写法等价于 RequestMapping(value /monster, method RequestMethod.GET)GetMapping(/monster)public String getMonster(){return GET-查询妖怪;}PostMapping(/monster)public String addMonster(){return POST-添加妖怪;}PutMapping(/monster)public String putMonster(){return PUT-修改妖怪;}DeleteMapping(/monster)public String deleteMonster(){return DELETE-删除妖怪;}
}2使用postman 工具进行测试分别用这四种方式请求/monster 2.3 注意事项
1客服端是PostMan 可以直接发送Put、Delete等方式请求可不设置Filter
2如果要 SpringBoot 支持表单的 Rest 功能需要注意如下细节
Rest风格请求核心Filter是 HiddenHttpMethodFilter表单请求会被 HiddenHttpMethodFilter 拦截获取到表单_method的值再判断是PUT/DELETE/PATCHPATCH方法是新引入的是对PUT方法的补充用来对已知资源进行局部更新如果要 SpringBoot 支持表单的 Rest 功能需要在application.yml启动filter功能
spring:mvc:# 修改静态资源访问前缀static-path-pattern: /wwj/**hiddenmethod:filter:# 开启页面表单的 Rest 功能enabled: true
3 配置视图解析器
3.1 ResponseBody
思考为什么上面案例中 return GET-查询妖怪返回的是字符串而不是转发到对应的资源文件
这是因为我们在类上加了一个 RestController 注解这个注解是一个复合注解含有 ResponseBody所以springboot底层springmvc在处理 return xxx 时会以 ResponseBody 注解进行解析处理即返回字符串xxx而不会使用视图解析器来处理。如果把 RestController 改成 Controller当你访问getMonster()时如果存在 xxx.html 就会转发到 xxx.html如果不存在就会报404
3.2 在 application.yml 配置视图解析器
1在 application.yml 配置视图解析器
spring:mvc:# 修改静态资源访问前缀static-path-pattern: /wwj/**hiddenmethod:filter:# 开启页面表单的 Rest 功能enabled: true# 配置视图解析器view:# 后缀suffix: .html# 前缀prefix: /wwj/ # 这里需要注意 prefix 需要和当前的 static-path-pattern一致 2修改 MonsterController.java
把 RestController 注解替换为 Controller 注解
//RestController
Controller
public class MonsterController {
在 MonsterController.java 中新增一个方法来测试视图解析器。该方法进行转发的时候如果没有配置视图解析器就会看controller 有没有 /hello如果配置了视图解析器就按照视图解析器来定位这时候如果想要在控制器方法之间进行请求转发可以这样写return forward:/hello
RequestMapping(/go)
public String go() {return hello;
}
3在resources/public 创建静态页面 hello.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titlehello/title
/head
bodyh1hello,springboot/h1
/body
/html
4启动主程序在浏览器输入 http://localhost:8080/go 进行测试测试效果如下 4 接收参数的相关注解
4.1 基本介绍
1SpringBoot 接收客户端提交数据/参数会使用到的相关注解
2详解 PathVariable、RequestHeader、RequestParam、CookieValue、RequestBody。这些注解在springmvc中均有提及。SpringBoot的新注解有RequestAttribute、SessionRequest
4.2 应用实例
需求演示各种方式提交数据/参数给服务器服务器如何使用注解接收
在 resources/public 目录下创建静态页面 index.html 用来提交数据
!DOCTYPE html
html langen
headmeta charsetUTF-8titleindex/title
/head
body
h1接收参数的相关注解演示/h1
hr/
a href/monster/100/kingPathVariable-路径变量 monster/100/king/abrbr
/body
/html
在controller 下创建 ParameterController.java 来接收数据
package com.springboot.controller;import org.springframework.web.bind.annotation.RestController;RestController
public class ParameterController {
}4.2.1 PathVariable
1在index.html 中加入超链接
a href/monster/100/kingPathVariable-路径变量 monster/100/king/abrbr
路径说明href/monster/100/king 中的 / 在浏览器中进行解析和被解析成 ip端口整体就是http://lcoalhost:8080/monster/100/king。如果不加 /写成 monster/100/king 就会在前面加上当前页面的路径即 http://lcoalhost:8080/wwj/monster/100/king。wwj 是我们前面在application.yml 文件中配置的静态资源访问前缀
2在 ParameterController.java 中增加方法
// 超链接默认请求方式为get
GetMapping(/monster/{id}/{name})
public String pathVariable(PathVariable(id) Integer monsterId,PathVariable(name) String monsterName,PathVariable MapString,String map) {System.out.println(monsterId monsterId);System.out.println(monsterName monsterName);System.out.println(map map);return success;
}
解读
/monster/{id}/{name} 构成完整请求路径{id}、{name}就是占位变量PathVariable(name): 这里的 name 需要和 {name} 命名保持一致String monsterName 这个形参名可以自己定义PathVariable MapString,String map 会把所有传递的值都传入mapkey为占位变量名即id、name
3启动主程序在浏览器输入 localhost:8080/wwj/index.html 进行测试效果如下 点击后效果如下 控制台输出 4.2.2 RequestHeader
RequestHeader 可以用来获取请求头的信息可获取的信息如下 1在index.html 中加入超链接
a href/requestHeaderRequestHeader-获取Http请求头/abrbr
2在 ParameterController.java 中增加方法
GetMapping(/requestHeader)
public String requestHeader(RequestHeader(Host) String host,RequestHeader MapString, String map){System.out.println(Host host);System.out.println(以下是http请求头的 所有信息);for (Map.EntryString, String o : map.entrySet()) {System.out.println(o.getKey() : o.getValue());}return success;
}
解读
RequestHeader(Host) 获取http请求头的 host 信息即主机ip端口RequestHeader MapString, String map 获取http请求头的 所有信息
3启动主程序在浏览器输入 localhost:8080/wwj/index.html 进行测试效果如下 点击后控制台输出 4.2.3 RequestParam
1在index.html 中加入超链接
a href/hi?name孙悟空fruitapplefruitpearRequestParam-获取请求参数/abrbr 2在 ParameterController.java 中增加方法
GetMapping(/hi)
public String hi(RequestParam(value name, required false) String userName,RequestParam(fruit) ListString fruits,RequestParam MapString,String map){System.out.println(userName userName);System.out.println(fruits fruits);System.out.println(map map);return success;
}
代码解读
RequestParam(value name, required false) 拿到参数名为 name 的请求参数, required false 表示这个参数不是必须要有的如果没有传这个参数过来也不会报错默认为trueRequestParam(fruit) 拿到参数名为 fruit 的请求参数,因为该参数名的参数有多个所以要用集合来接收RequestParam MapString,String map 可以获取到所有的请求参数但需要注意的是如果有多个同名参数只会得到第一个
3启动主程序在浏览器输入 localhost:8080/wwj/index.html 进行测试效果如下 点击后控制台输出 4.2.4 CookieValue
1在index.html 中加入超链接
a href/cookieCookieValue-获取cookie值/abrbr
2在 ParameterController.java 中增加方法
GetMapping(/cookie)
public String cookie(CookieValue(value cookie_key, required false) String cookie_value,CookieValue(value username, required false) Cookie cookie,HttpServletRequest request){System.out.println(cookie_value cookie_value);System.out.println(cookie对象 - cookie名字: cookie.getName() - cookie值: cookie.getValue());// 这里也可以使用原生的方式的方式获取到cookieSystem.out.println(----------------);Cookie[] cookies request.getCookies();for (Cookie c : cookies) {System.out.println(c.getName() c.getValue());}return success;
}
代码解读
CookieValue(value cookie_key, required false)表示接收名字为cookie_key的cookie如果浏览器携带来了对应的cookie要是后面的形参类型为 String则接收到的是对应的 value 值要是后面的形参类型为 Cookie则接收到的是封装好的对应的 Cookie 对象也可以使用原生的方式获取到cookie使用HttpServletRequest 对象的 getCookies()方法
3启动主程序在浏览器输入 localhost:8080/wwj/index.html 进行测试效果如下 由于浏览器目前没有cookie如果要测试可以手动在浏览器设置对应的cookie步骤如下
在当前页面点击 F12 进入开发者模式 设置好后刷新当前页面点击最后一条链接进行测试点击后控制台输出如下 4.2.5 RequestBody
在 SpringMVC 中 RequestBody 可以将提交的json字符串数据填充给指定Javabean。在SpringBoot 该注解新增了一个功能可以整体取出Post请求内容这里先介绍这个功能。而填充指定Javabean的功能在后面自定义对象参数里面进行了回顾
1在index.html 中加入超链接
h1测试RequestBody获取数据: 获取POST请求体/h1
form action/save methodpost姓名: input namename/br/年龄: input nameage/br/input typesubmit value提交
/form
2在 ParameterController.java 中增加方法
/*** RequestBody 是整体取出Post请求内容*/
PostMapping(/save)
public String postMethod(RequestBody String content){System.out.println(content: content);return success;
}
3启动主程序在浏览器输入 localhost:8080/wwj/index.html 进行测试效果如下 点击提交后控制台输出如下 4.2.6 RequestAttribute 和 SessionAttribute RequestAttribute用来获取 request 域属性SessionAttribute用来获取session域属性使用原生的 Servlet api 同样可以获取
1在index.html 中加入超链接
brbra href/loginRequestAttribute 和 SessionAttribute-分别获取request域和session域属性/a
2创建RequestController.java向 request 域中添加数据
package com.springboot.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttribute;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;Controller
public class RequestController {GetMapping(/login)public String login(HttpServletRequest request){// 向request域中添加了数据request.setAttribute(user,小王);// 向 session 域中添加数据request.getSession().setAttribute(website, http://www.baidu.com);//告诉 Spring MVC 你希望进行请求转发而不是视图解析return forward:/ok; //请求转发到 /ok}GetMapping(/ok)ResponseBodypublic String ok(RequestAttribute(value user, required false) String username,HttpServletRequest request,SessionAttribute(value website, required false) String website,HttpSession session){// 获取到request域中的数据System.out.println(username username);System.out.println(通过servlet api 获取 username request.getAttribute(user));// 获取到session域中的数据System.out.println(website website);System.out.println(通过servlet api 获取 website session.getAttribute(website));return success;}
}3启动主程序在浏览器输入 localhost:8080/wwj/index.html 进行测试效果如下 点击后控制台输出如下 4.3 复杂参数
4.3.1 基本介绍
1SpringBoot在响应客户端请求时也支持复杂参数例如Map、Model、Error/BindingResult、RedirectAttributes、ServletResponse、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder、HttpSession。重要的有Map、Model、ServletResponse
2Map、Model 数据会被放到request域
3RedirectAttributes 表示重定向携带数据
4.3.2 复杂参数应用实例
需求说明
测试Map、Model 数据会被放到request域 演示创建cookie并通过 response 添加到浏览器/客户端
1在 RequestController.java 增加方法
// 响应一个注册请求
GetMapping(/register)
public String register(MapString, Object map,Model model,HttpServletResponse response){// 这些形参表示如果发过来一个注册请求会将注册数据封装到map或model// map 和 model 中的数据会被放入request域中map.put(user,wwj);map.put(job,开发工程师);model.addAttribute(sal, 80000);//演示创建cookie并通过 response 添加到浏览器/客户端Cookie cookie new Cookie(email, wwjqq.com);response.addCookie(cookie);// 请求转发return forward:/registerOk;
}ResponseBody
GetMapping(/registerOk)
public String registerOk(HttpServletRequest request){System.out.println(user request.getAttribute(user));System.out.println(job request.getAttribute(job));System.out.println(sal request.getAttribute(sal));return success;
}
2启动主程序在浏览器直接输入 localhost:8080/register 进行测试控制台输出如下。成功从request中获取到了 map 和 model 的值 在浏览器按下F12 打开开发者模式可以看到成功获取到了cookie 4.4 自定义对象参数 javabean -自动封装
4.4.1 基本介绍
1SpringBoot在响应客户端/浏览器请求时有支持自定义对象参数
2自动完成类型转换与格式化并支持级联封装
4.4.2 应用实例
需求说明演示自定义对象参数使用完成自动封装类型转换
代码实现
1创建实体类 Car.java 和 Monster.java
package com.springboot.entity;import lombok.Data;
import org.springframework.stereotype.Component;Data
Component
public class Car {private String name;private Double price;
}package com.springboot.entity;import lombok.Data;
import org.springframework.stereotype.Component;import java.util.Date;Data
Component
public class Monster {private Integer id;private String name;private Integer age;private Boolean isMarried;private Date birth;private Car car;
}2在resources/public 目录下新建静态html文件save.html
!DOCTYPE html
html langen
headmeta charsetUTF-8title添加妖怪/title
/head
body
h1添加妖怪测试封装POJO/h1
form action/saveMonster methodpost编号: input nameid value100br/姓名: input namename value牛魔王br/年龄: input nameage value500br/婚否: input nameisMarried valuetruebr/生日: input namebirth value2000/11/11br/坐骑名称: input namecar.name value法拉利br/坐骑价格: input namecar.price value1000000br/input typesubmit value保存
/form
/body
/html
3修改 ParameterController.java 增加方法
// 添加monster
PostMapping(/saveMonster)
public String saveMonster(Monster monster) {System.out.println(monster- monster);return success;
}
4启动主程序在浏览器输入 localhost:8080/wwj/save.html 进行测试效果如下 点击保存后控制台输出如下
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931155.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!