Spring MVC 常用注解 和session界面渲染取值
@RequestParams
name 修饰当前形参的属性 value 和name属性一样 也是修饰当前属性
defaultValue 给属性设置一个默认值
默认属性 required 必备属性
1. value:请求参数中的名称
2. required:请求参数中是否必须提供此参数,默认值是true,必须提供
前端:
<a href="/params/params?name=老王"> params获取信息</a>
controller
@RequestMapping(value = "/params")
public String params( String username){ // 如果我们现在设置的形参和前端传递来的 参数名不同就会接受不到就会显示null System.out.println(username); // null
return "success"; }
上面就是传递来的参数和形参不同所以就会报错
我们可以使用指定的一个参数名之后 你传递任意的参数先用它来接受再传递给形参
@RequestParam(value = "name") controller : 这就是你所有的传递来的信息都会先被value接受然后再传递给username 这样就不会出现信息不同 并且 value和name对应的是你的传递来的属性的名字
@RequestMapping(value = "/params")
public String params( @RequestParam(value = "name",required=false) String username){ // 如果我们现在设置的形参和前端传递来的 参数名不同就会接受不到就会显示null System.out.println(username);
return "success"; }
defaultValue给传递来的属性设置一个默认值
public String def(@RequestParam(defaultValue ="隔壁老王") String username){ //给username设置一个默认值:隔壁老王
@RequestBody 获取请求体中的key:value
因为是获取请求体中的信息所有 对于get请求不适用
既然是获取请求体重的数据那么只能是非get请求了
前端:
<form action="/params/body" method="post"> User名字:<input name="username" /><br/>
User密码:<input name="u_password"/><br/>
User日期:<input name="date"/><br/> <input type="submit" value="提交"/> </form>
controller
@RequestMapping(value = "body")
public String body(@RequestBody String body){ //获取请求体中的信息
System.out.println(body);
return "success"; }
输出是:
username=zy&u_password=&date=
PathVariable
拥有绑定url中的占位符 url中有/delete/{id},{id}就是占位符
1. value:指定url中的占位符名称
1. 请求路径一样,可以根据不同的请求方式去执行后台的不同方法 2. restful风格的URL优点
1. 结构清晰 2. 符合标准 3. 易于理解 4. 扩展方便
前端: 前端传值就是直接/值 而不是值=信息
<a href="/params/pathvariable/3">pathvariable</a>
controller:
/**
* @PathVariable注解
* @param id
* @return
*/
@RequestMapping("/pathvariable/{id}")
public String testPathVariable(@PathVariable(value = "id") String id){
System.out.println(id);
return "success";
}
输出的是就是你传递来的id的值
RequestHeader 获取请求头中的信息
因为是获取请求头中的信息那么参数只能是用Accept来接收
前端:
<a href="/params/header">RequestHeader</a>
controller:
/**
* RequestHeader注解 获取请求头中的信息
* @param header
* @return
*/
@RequestMapping("/header")
public String header(@RequestHeader(value = "Accept") String header){ //请求头必选要Accept的信息来获取
System.out.println(header);
return "success";
}
CookieValue注解 获取指定cookie名称的值
因为你发送的cookie服务端的session一定会传递回来一个cookie对应的值 JESSIONID那么我们必须定义JESSIONID来接收 不然也会报错
前端:
<a href="/params/cookie">CookieValue</a>
controller:
/**
* 获取指定的cookie信息
* @param cookie
* @return
*/
@RequestMapping("/cookie")
public String cookie(@CookieValue(value = "JSESSIONID") String cookie){
System.out.println(cookie);
return "success";
}
出现在方法上:表示当前方法会在控制器方法执行前线执行。
出现在参数上:获取指定的数据给参数赋值。
2. 应用场景
1. 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据。
如果出现在方法上 加了ModelAttrbute注解的方法会优先其他的方法来执行的
前端:
<form action="/params/model" method="post"> User名字:<input name="username" /><br/>
User密码:<input name="u_password"/><br/>
User日期:<input name="date"/><br/> <input type="submit" value="提交"/> </form>
controller:
@RequestMapping("/model")
public String model(){
System.out.println("我是model方法");
return "success";
} @ModelAttribute
public void modelattribute(){ System.out.println("我是modelattribute"); }
输出:
可以看出 使用在方法中 ModelAttribute注解会优先其他的方法先执行 我们可以在这一层中进行数据的过滤
修饰的方法有返回值:
@RequestMapping("/model")
public String model(User user){
System.out.println(user);
return "success";
} @ModelAttribute
public User modelattribute(String username ){
User user = new User();
user.setUsername(username);
user.setU_password("123");
user.setDate(new Date());
return user; }
输入:
输出:
User{username='zy', u_password='123232', date=Mon Mar 04 00:00:00 CST 2019}
修饰的方法没有返回值就是要在第二次执行的方法中也要设置其接收值,在方法中先对接收的值进行设置 再对下面要执行的方法中进行值得设置
@ModelAttribute
public void modelattribute(String username, Map<String,User>map){
User user = new User();
user.setUsername(username);
user.setU_password("123");
user.setDate(new Date());
map.put("abc",user); //把信息放在abc中 } @RequestMapping("/model")
public String model(@ModelAttribute(value = "abc") User user){ //通过ModelAttribute来接收其中map的值
System.out.println(user);
return "success";
}
SessionAttributes 注解
1. 作用:用于多次执行控制器方法间的参数共享
2. 属性
1. value:指定存入属性的名称
这个方法是作用在类上的 所以我们要在进入的类上进行引用
我们之前再界面上获取后端传递来的值都是通过model来获取的 那么我们现在也可以通过session来获取信息
界面取值除了通过model.addAttribute渲染过来的一个一个取值之外还可以通过requestScope来同意进行取值
eg:
后端传来三个值
model.addAttribute("username","root");
model.addAttribute("password","123");
model.addAttribute("age",20);
我可以通过requestScope来统一取值
${requestScope.username}
这是request的取值 那么我们想要从session中取值就用sessionScope来取值
但是sessionScope必须要通过@SessionAttributes 注解来进行搭配使用不然是没有值得
SessionAttributes就是把你方法中定义的参数给放到session中
类: @Controller
@RequestMapping(path = "/params") @SessionAttributes(value = {"username","password","age"}) //这是把方法中的定义的参数给放在了 session中 前端就可以通过session取值了
public class ParamsController { 方法:
@RequestMapping("/session")
public String session(Model model){ //通过model向界面传递数据 model.addAttribute("username","root");
model.addAttribute("password","123");
model.addAttribute("age",20);
return "out";
}
既然我们可以通过session传递到界面值 那么我们也可以通过SessionAttributes来获取session中的信息
获取信息就要通过ModelMap 来进行信息获取了
@RequestMapping("/find")
public String find(ModelMap modelMap){ // 通过modelMap去上面类设定的session中获取数据 String name = (String)modelMap.get("username"); // 从session中获取数据 String password = (String) modelMap.get("password");
Integer age = (Integer) modelMap.get("age");
System.out.println("username:"+name+":"+"passowrd"+password+":"+"age"+age);
return "out";
}
我们不仅仅可以获取数据还可以删除数据
SessionStatus 来设置setComplate来清空信息
清除信息:
@RequestMapping("/delete")
public String delete(SessionStatus status){
status.setComplete(); //对所有的属性进行 清空
return "success";
}
.
Spring MVC 常用注解 和session界面渲染取值的更多相关文章
- Spring MVC学习总结(2)——Spring MVC常用注解说明
使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02 之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...
- Spring MVC常用注解
cp by http://www.cnblogs.com/leskang/p/5445698.html 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由Di ...
- spring mvc常用注解总结
1.@RequestMapping@RequestMappingRequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上.用于类上,表示类中的所 ...
- spring mvc常用注解的说明
最近一段时间学习了springboot,所以熟悉一下mvc中常用的注解,这样可以方便开发 简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类 ...
- spring mvc常用注解标签
@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model , ...
- Spring入门(十三):Spring MVC常用注解讲解
在使用Spring MVC开发Web应用程序时,控制器Controller的开发非常重要,虽然说视图(JSP或者是Thymeleaf)也很重要,因为它才是直接呈现给用户的,不过由于现在前端越来越重要, ...
- Spring MVC常用注解@PathVariable、@RequestHeader、@CookieValue、@RequestParam、@RequestBody、@SessionAttributes、@ModelAttribute
简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri部分(这里指uri template中 ...
- spring mvc 常用注解
1.@requestMapping注解,绑定指定的url,requestmapping注解的属性值有value和method. requestmaping可以作用在类上或者方法上 如:@Request ...
- J2EE进阶(十三)Spring MVC常用的那些注解
Spring MVC常用的那些注解 前言 Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam,@ModelAttribute等等这样 ...
随机推荐
- java并发编程笔记(八)——死锁
java并发编程笔记(八)--死锁 死锁发生的必要条件 互斥条件 进程对分配到的资源进行排他性的使用,即在一段时间内只能由一个进程使用,如果有其他进程在请求,只能等待. 请求和保持条件 进程已经保持了 ...
- 软件-Axure:Axure RP
ylbtech-软件-Axure:Axure RP Axure RP是一款专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototypin ...
- nginx 配置代理 session 丢失
最开始一直用的ip访问的项目是没问题的 , 后来改成用了域名访问就发现一直获取不了session ,最开始以为是跨域问题 , 但项目中已经配置了跨域 , 因为第一次用 nginx ,果断入坑了 , ...
- selenium和phantomjs,完成豆瓣音乐排行榜的内容爬取
代码要多敲 注释要清晰 哪怕再简单 #使用selenium和phantomjs,完成豆瓣音乐排行榜的内容爬取 #地址:https://music.douban.com/chart #导入需要的模块 f ...
- Django 利用JWT实现前后端分离的Token验证
一.什么是Token? Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器会生成一个Token并将此Token返回给客户端,以后客户端只需带上这个Token前来请 ...
- Scrapy框架: 通用爬虫之CSVFeedSpider
步骤01: 创建项目 scrapy startproject csvfeedspider 步骤02: 使用csvfeed模版 scrapy genspider -t csvfeed csvdata g ...
- [FW]使用kprobes查看内核内部信息
使用printk打印变量等方法,是调试内核的有效方法之一,但是这种方法必须重新构建并用新内核启动,调试效率比较低.以内核模块的方式使用kprobes.jprobes,就可以在任意地址插入侦测器,执行包 ...
- 淘汰赛制_NOI导刊2010提高(01)
题目描述 淘汰赛制是一种极其残酷的比赛制度.2n名选手分别标号1,2,3,…,2^n-1,2^n,他们将要参加n轮的激烈角逐.每一轮中,将所有参加该轮的选手按标号从小到大排序后,第1位与第2位比赛,第 ...
- Java使用Jsoup简单解析页面
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出 ...
- Docker两个问题的讨论
docker中的container到底可不可以理解为一个操作系统? 先表明态度,我的理解是,NO. 主机级虚拟化 容器级虚拟化 容器通过Docker的守护进程(Docker daemon)来进行创建, ...