Spring MVC参数处理
Spring MVC通过分析处理处理方法签名,将HTTP请求信息自动绑定到处理方法的参数中。
@RequestMapping : 获取前台传递的参数
@RequestMapping("/p1")
public String param1(String uname,String pwd){
//接收参数
//调用业务层
//调用Dao。。。。
if("admin".equals(uname)&&"123".equals(pwd)){
//登录成功
}else{
//登录失败
}
System.out.println("uname="+uname+",pwd="+pwd);
return "hello";
}
@RequestHeader : 将请求头中的属性值绑定到处理方法的参数中。
@RequestMapping("/p4")
public String param4(@RequestHeader("Cookie")String cookie){
System.out.println("cookie:"+cookie);
return "hello";
}
@CookieValue: 将请求中的Cookie的值绑定到处理方法的参数中。
@RequestMapping("/p5")
public String param5(@CookieValue("JSESSIONID")String sessionid){
return "hello";
}
使用POJO,Spring MVC 会将请求参数和POJO中的属性进行匹配,自动填充属性,并支持级联。
@RequestMapping("/p6")
public String param6(User user){
//new User
//set+Uname
System.out.println(user);
return "hello";
}
使用Servlet API作为参数
HttpServletRequest
@RequestMapping("/s1")
public String s1(HttpServletRequest request){
System.out.println(request.getParameter("uname"));
System.out.println(request.getParameter("pwd"));
request.setAttribute("sex", "man");
return "hello2";
}
HttpServletResponse
/**
* 方法返回值可以是void
* 如果没有HttpServletResponse,返回值一定不能是void
*/
@RequestMapping("/s2")
public void s2(HttpServletResponse response) throws IOException{
/*response.sendRedirect("../WEB-INF/pages/hello2.jsp");*/
response.sendRedirect("../test.jsp");
}
@RequestMapping("/s3")
public void s3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("../test.jsp").forward(request, response);
}
HttpSession
/**
* 把User保存在session中
* @param session
*/
@RequestMapping("/s4")
public String s4(HttpSession session,User user){
session.setAttribute("user", user);
return "hello3";
}
- @SessionAttributes(“user”)
- @SessionAttributes:
- 可以把模型数据当中对应的对象存储到session中
- session.setAttr(“user”,request.getAttr(“user”))
public class SessionController {
@RequestMapping("/se1")
public String sess1(User user,Notice notice) {
return "hello6";
}
/**
* 如果参数列表当中有两个类型相同的参数,只会在模型数据中存储一个
* 使用@ModelAttribute可以给两个类型相同的对象做区分,
* 让他们都可以存储在模型数据中
* 如果遇到有两个类型相同并且都需要存储到session中时,
* 可以使用model去解决问题
*/
@RequestMapping("/se2")
public String sess2(User user,User user2,Model model) {
model.addAttribute("user", user);
model.addAttribute("user2", user2);
return "hello6";
}
}
使用流作为参数
InputStream
OutputStream
@RequestMapping("/s5")
public void s5(OutputStream os) throws IOException{
os.write(new String("hcfgyhgghyvf").getBytes());
}
Reader
Writer
@RequestMapping("/s6")
public void s6(PrintWriter writer) {
writer.print("asdfghjkl");
}
总结:
- request,response,session 可以直接使用,不需要创建这个对象的类型
- 如果涉及到页面跳转,尽量不要使用request,response
- 如果使用了request和response进行页面跳转,它就不再使用视图解析器去匹配页面了(需要根据当前控制器的路径去匹配)
- 方法带返回值:String要在控制器当中做页面的跳转。(普通的控制器)
- 方法不带返回值:
- 1.通过request(转发)或者response(重定向)这里两个对象去做跳转
- 2.通过OutputStream或Writer直接在也页面显示内容。(前台是Ajax访问获取数据时)
- 如果返回值是void可以搭配ajax使用(ajax拿到的就是当前控制器的信息)
- 如果返回值不是void,必然要跳转页面。
Spring MVC参数处理的更多相关文章
- spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClassNameHandlerMapping
spring mvc: 参数方法名称解析器(用参数来解析控制器下的方法)MultiActionController/ParameterMethodNameResolver/ControllerClas ...
- spring mvc 参数
Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求. 在MVC框架中,Struts属于V ...
- spring mvc参数绑定
spring绑定参数的过程 从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上.springmvc中,接收页面提交的数据是通过方法形参来接 ...
- Spring mvc参数类型转换
1,需求 有时候我们接收到的参数为String类型的,但是我们需要将它们转化为其他类型的如:date类型,枚举类型等等,spring mvc为我们提供了这样的功能. 2,配置文件 在springmvc ...
- Spring MVC参数封装传递
在Spring MVC中,前端JSP页面可以传递 基本类型(int,String).实体类型.包装类型.数组类型.集合类型(List.map )等. 假如在传递的类型中有 Date类型的字段,需要在 ...
- spring mvc 参数绑定
基础类型 原始类型:id必须要传,否则报错. @RequestMapping("/test") @ResponseBody public ResponseData test(int ...
- Spring MVC 参数必填项导致客户端报 HTTP 400 并且无法进入断点的问题
1.问题 Spring MVC 在参数上设置了必填项,post 请求时报 HTTP 400 并且未进入断点,如将“年龄”设置为了必填项: @RequestParam( value="age& ...
- Spring MVC 参数的绑定方法
在Spring MVC中,常见的应用场景就是给请求的Url绑定参数.本篇就介绍两种最最基本的绑定参数的方式: 基于@RequestParam 这种方法一般用于在URL后使用?添加参数,比如: @Req ...
- Spring MVC参数绑定(如何接收请求参数及返回参数)
在SpringMVC interceptor案例实践中遇到了获取jsp表单传递参数失败的问题,怎么的解决的呢?下面详细介绍. 先讲述下https://www.cnblogs.com/ilovebath ...
随机推荐
- 远程控制卡 使用ipmitools设置ipmi
远程控制卡 使用ipmitools设置ipmi 使用DELL的远程控制卡可以方便的管理服务器 在CentOS中可以使用ipmitools管理 IPMI( Intelligent Platform Ma ...
- ROS开源小车TurtleBot3详情介绍(Burger)
您为什么要选择ROS开源智能小车 ROS(RobotOperating System,机器人操作系统)是目前世界上更主流更多人使用的的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件抽象,底 ...
- jquery-from+php 文件上传
闲话不多说上代码 前端代码 <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charse ...
- 你还不知道mysql中空值和null值的区别吗?
前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...
- 【MyBatis】MyBatis 注解开发
MyBatis 注解开发 文章源码 环境搭建 Mybatis 也可以使用注解开发方式,这样就可以减少编写 Mapper 映射文件. 常用注解说明: @Insert 实现新增 @Update 实现更新 ...
- 拍摄、剪辑vlog的思路
这篇文章是看了很多狂阿弥_ 的作品后 产生的一些小小总结.这些技法只是锦上添花,阿弥作品真正好的地方在于他细腻的情感,真实的对白,和打动人心的满分作文. 优秀的Vlog ,在于它和观众产生的情感共鸣. ...
- git revert 回退已经push的内容
如题,在日常的开发过程中,可能有组员不小心一下子吧文件修改,需要进行回退 回退主要涉及到2种命令,一种是git reset 一种是 git revert git reset 会修改git log提交历 ...
- rac双节点+物理DG
注:以下文章均是看了黄伟老师的视频,记录为博客供以后使用. 双节点RAC搭建: http://blog.csdn.net/imliuqun123/article/details/76171289 RA ...
- webpack知识点整理
作用域 es6里模块化的写法 会存在的问题,变量.方法名字雷同,外部文件调用的时候出现问题 如 a.js里 var a='susan' b.js里 var a='jack' 问题解决方案,添加包裹 a ...
- LeetCode700. 二叉搜索树中的搜索
题目 简单递归 1 class Solution { 2 public: 3 TreeNode* searchBST(TreeNode* root, int val) { 4 if(!root) re ...