zoukankan      html  css  js  c++  java
  • springMVC(2)---获取前段数据

    springMVC(1)---获取前段数据

            首先说明,如果你学过Struts2,那么在学springMVC就会简单很多,我也不最基础的开始写了,我前篇文章搭建了个ssm框架,算是springmvc入门了。

            链接:基于maven的ssm框架整合

        一. 有哪些绑定数据的注解:           

         1.@RequestParam,绑定单个请求数据,可以是URL中的数据,表单提交的数据或上传的文件; 
         2.@PathVariable,绑定URL模板变量值; 
         3.@CookieValue,绑定Cookie数据; 
         4.@RequestHeader,绑定请求头数据; 
         5.@ModelAttribute,绑定数据到Model; 
         6.@SessionAttributes,绑定数据到Session; 
         7.@RequestBody,用来处理Content-Type不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等; 
         8.@RequestPart,绑定“multipart/data”数据,并可以根据数据类型进项对象转换;

      二.@RequestParam讲解                                          

        首先说明,项目的框架和架包我直接用的是smm框架整合的内容,我是在这个基础上进行操作,先看我jsp放置。

    (1)先看Controller层

    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.ServletRequestUtils;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    public class ParamController {
      
        /**
         * GET请求
         */
        @RequestMapping(value="/jsp/paramdate", method = {RequestMethod.GET})
        public ModelAndView paramBind(){
            
            ModelAndView modelAndView = new ModelAndView(); 
            //因为我这边指定是post请求,所以不会走到这里,所以haha.jsp也没有写
            modelAndView.setViewName("haha");  
            return modelAndView;
        }
        
        /**
         * POST请求
         */  
        @RequestMapping(value="/jsp/paramdate", method = {RequestMethod.POST})
        public ModelAndView paramBind(HttpServletRequest request, @RequestParam("urlParam") String urlParam, @RequestParam("formParam") 
    String formParam, @RequestParam("formFile") MultipartFile formFile){ //通过注解直接获得 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("urlParam", urlParam); modelAndView.addObject("formParam", formParam); modelAndView.addObject("formFileName", formFile.getOriginalFilename()); //如果不用注解获得数据,我们也可以手动获取 String urlParam1 = ServletRequestUtils.getStringParameter(request, "urlParam", null); String formParam1 = ServletRequestUtils.getStringParameter(request, "formParam", null); MultipartFile formFile1 = ((MultipartHttpServletRequest) request).getFile("formFile"); modelAndView.addObject("urlParam1", urlParam1); modelAndView.addObject("formParam1", formParam1); modelAndView.addObject("formFileName1", formFile1.getOriginalFilename()); //setViewName代表返回界面名称 modelAndView.setViewName("return"); return modelAndView; } }

    (2)开始的start.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <html>
    <head>
    </head>
    <body>
        <form action="paramdate?urlParam=你好" method="post" enctype="multipart/form-data"> 
            <input type="text" name="formParam" /><br/> 
            <input type="file" name="formFile" /><br/>
            <input type="submit" value="Submit" />
        </form>  
    </body>
    </html>

    界面

    我输入徐小小,提交好好生活.TXT文件

    (3)返回return.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <html>
    <head>
    </head>
    <body>
        注解获取数据:<br/><br/>
        ${urlParam}<br/>
        ${formParam}<br/>
        ${formFileName}<br/><br/><br/><br/>
        手动获取数据:<br/><br/>
        ${urlParam1}<br/>
        ${formParam1}<br/>
        ${formFileName1}<br/>
    </body>
    </html>

    界面

    通过这个小案例,我们通过注解和非注解的方式,把前段界面的值传到后端,在从后端传到前段。

    思考:我们在实际开发中,在前段往后段传值的时候,后端一个一个获取值再放到Model实体中,还是太麻烦。别担心,我们不需要把数据绑定到一个个变量然后在对model赋值,只需要把model加入相应的action参数(这里不需要指定绑定数据的注解)Spring MVC会自动进行数据转换并绑定到model对象上,一切就是这么简单。

    三.通过实体获取前端值                                                       

     (1)建立User实体

    public class User {
    
        private String name;
        private String password;
    
    /*提供set和get方法,toString方法*/
    }

    (2)建立Controller类

    import javax.servlet.http.HttpServletRequest;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import com.ssm.model.User;
    
    @Controller
    public class UsersController {
    
    @RequestMapping("/jsp/loging")    
    public void getUser(HttpServletRequest request, Model model,User user){
        User  users=user;
        System.out.println(users.getName()+"--"+users.getPassword());
    }
    }

    (3)开始loging.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        
    <!-- 如何要使用SpringMVC标签,那么一定要添加下面这个taglib -->
    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    
     <!-- 如果你要使用model进行赋值,那就需要指明哪个model,而且id中的值要和下面值一致,不然会报错 -->
     <!-- Neither BindingResult nor plain target object for bean name 'users' available as request attribute -->
    <jsp:useBean id="user" class="com.ssm.model.User" scope="request"/>  
    <html>
    <body>
        <form:form action="loging" modelAttribute="user" method="post">     
            用户名:<form:input path="name"/><br/>
            密 码:<form:password path="password"/><br/>
            <input type="submit" value="Submit" />
        </form:form>  
    </body>
    </html>
    <!-- 还有如果你的form表单中,path中的名字,在model中没有也会报错,比如我加一个names,当加载页面时报错 -->
    <!-- Invalid property 'names' of bean class [com.ssm.model.User]: Bean property 'names' is not readable -->

     界面 (密码123)

    (4)最后我们在后台看我们打印的那条数据

    已经成功,直接把属性注入到了user中。

    想的太多,做的太少,中间的落差就是烦恼,要么去做,要么别想 少尉【8】

  • 相关阅读:
    读写文件
    c++ 中的 -> :: : .
    CDH安装步骤
    MySQL安全配置向导mysql_secure_installation详解
    Linux下彻底卸载mysql详解
    安装mysql警告: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    为Hadoop集群选择合适的硬件配置
    利用cm压缩包手动安装cm和cdh
    CM5.11与CDH5.11安装使用说明
    法的本体
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/8076274.html
Copyright © 2011-2022 走看看